Linux的包管理工具介绍
发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,概述:本章内容:软件的运行环境,软件包基础,rpm包管理,yum管理,定制yum仓库,编译安装一、软件运行环境 1.API:Application Programming Interface (应用程
千家信息网最后更新 2024年11月22日Linux的包管理工具介绍
概述:
本章内容:软件的运行环境,软件包基础,rpm包管理,yum管理,定制yum仓库,编译安装
一、软件运行环境
1.API:Application Programming Interface (应用程序开发接口) POSIX:Portable OS(国际标准) 程序源代码-> 预处理-> 编译-> 汇编-> 链接 静态编译: 共享编译:.so ABI:Application Binary Interface(应用二进制程序接口) Windows与Linux不兼容 linux:文件格式:ELF(Executable and Linkable Format) win:文件格式:exe,msl PE(Portable Executable) 库级别的虚拟化: Linux: WINE(提供模拟windows的库,运行win环境) Windows: Cywin(提供linux的运行环境) 2.开发语言 系统级开发 C/C++(依赖于c库) httpd,nginx,vsftpd,go 应用级开发 java(依赖于jvm虚拟机) Python(openstack云站),php,perl(依赖于per解释器),ruby 3.程序格式: c/c++ 源代码:文本格式的程序代码; 编译开发环境:编译器,头文件,开发库 二进制格式:文本格式的程序代码->编译器->二进制格式(二进制程序、库文件、配置文件、帮助文件) java/Python 源代码:编译能够在其虚拟机(jvm/pvm)运行的格式; 开发环境:编译器、开发库 二进制 项目构建工具 c/c++:make jave:maven
二、包管理
1.二进制应用程序的组成部分: 二进制文件、库文件、配置文件、帮助文件 2.程序包管理: 源代码->目标二进制格式(二进制程序、库文件、配置文件、帮助文件)->组织成为一个或有限几个"包文件"(安装,升级,卸载,查询,校验) 程序包管理器: deblan: dpt,dpkg 以".deb"后缀 redhat: rpm (redhat package manager) 以 ".rpm"后缀 S.u.S.E:rpm, ".rpm"命令 3.包命令格式 源代码: name-VERSION.tar.gz|bz2|xz VERSION: major(主版本号).minor(次版本号).release(发行号) rpm包命名格式: name-VERSION-release.arch.rpm VERSION: major.minor.release(rpm包发行号) changelog文档(内容修复改进的相关文档) 例:bash-4.2.46-19.el7.x86_64.rpm release:release.OS 常见的arch: x86: i386, i486, i586, i686 x86_64: x64, x86_64, amd64powerpc: ppc 跟平台无关:noarch (适用于所有平台) 4.包:分类和拆包 Application-VERSION-ARCH.rpm: 主包 Application-devel-VERSION-ARCH.rpm 开发子包 Application-utils-VERSION-ARHC.rpm 其它子包 Application-libs-VERSION-ARHC.rpm 其它子包 包之间:可能存在依赖关系,甚至循环依赖 自动解决依赖包管理前端工具: yum:rpm包管理器的前端工具 apt-get:deb包管理器前端工具 zypper: suse上的rpm前端管理工具 dnf: Fedora 18+ rpm包管理器前端管理工具 5.库文件 查看二进制程序所依赖的库文件: ldd /PATH/TO/BINARY_FILE 管理及查看本机装载的库文件: ldconfig /sbin/ldconfig-p: 显示本机已经缓存的所有可用库文件名及文件路径映射关系 配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf 缓存文件:/etc/ld.so.cache 6.包管理器 程序包管理器: 功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作 程序包的组成清单(每个程序包单独实现) RPM包内的文件清单 RPM的元数据,如名称,版本,依赖性,描述等 安装或卸载时运行的脚本 数据库(公共) 路径:/var/lib/rpm 程序包名称及版本 依赖关系 功能说明 包安装后生成的各文件路径及校验码信息 7. 获取程的来源 1)系统发版的光盘或官方的服务器;CentOS镜像: http://mirrors.aliyun.com http://mirrors.sohu.com http://mirrors.163.com2) 项目官方站点3) 第三方组织: Fedora-EPEL 搜索引擎: http://pkgs.org http://rpmfind.net ttp://rpm.pbone.net4) 自己制作
三、CentOS系统上rpm命令管理程序包:
功能:安装、卸载、升级、查询、校验、数据库维护
1.安装
格式:rpm -i[option] PACKAGE_FILE选项: -i:表示install安装 -v -vv:表示显示安装过程,后者显示更加详细; -h:以#号显示进度条格式; -nodeps:忽略依赖关系 -force:强制动作,注意安装成功后可能不能运行; -test:测试安装,作为测试检查 -nosignature:不检查签名就是来源合法性; -nodigest:不检查包完整性;MD5头; -noscipts:不执行程序包脚本片断 注意:rpm自带四类脚本 %pre:安装前脚本; -nopre %post:安装后脚本; -nopost %preun:卸载前脚本; -nopreun %postun:卸载后脚本;-nopostun 使用: rpm -ivh PACKAGE_FILE
2.升级
格式: rpm -U|F[optIon] PACAGE_FILE 选项: -U:表示不管软件事先是否存在都要升级,存在就升级,不存在就安装; -F:表示软件软件存在就升级,如何不存在,就放弃升级; -oldpackage:降级,如果升级之后发现有Bug或者兼容性问题,可以使用此选项回滚到升级前的版本; -force:强制动作,注意安装成功后可能不能运行; -replacepkgs:注意不能替换配置文件; 注意: (1)不要对kernel做升级操作;支持多kernel并存;可以直接安装; (2)修改过的配置升级不会覆盖,升级同新文件,会重命名为file.rpmnew
3.查询:
格式:rpm -q[option] [PACKAGE-NAME|PACKAGE_FILE]选项: -qa:查询系统所有已安装的程序包; -qf /path/to/file:查询文件是由那个程序包生成; -ql:查询程序生成的文件: -qi:查询程序属性信息; -qc:查询程序配置文件; -qd:查询程序提供的文档 -q -whatprovides CAPABILITY(功能):查询这种CAPABILITY由那个程序提供; -q -whatrequires CAPABILITY:查询这种CAPABILITY被哪些程序包依赖; -q -scripts:查询程序包生成的脚本; -q -changelog:查询软件历史 查询未安装的软件包信息,需要加-p选项跟上面的选项结合使用,后面的参数必须是PACKAGE_FILE; 列如: -qpi:查询指定PACKAGE_FILE的程序属性信息;
4.卸载
格式:rpm -e[option] PACKAGE-NAME选项: -vh:显示过程 -nodeps:忽略依赖 -noscripts:忽略脚本 -allmatches:卸载所有匹配指定名称的程序包,也就是说卸载软件名称中包含此名称的所有包; -test:测试检查卸载,不是真卸载 注意: 卸载会检查依赖关系,如果卸载的软件被其他程序依赖,请谨慎卸载,否则导致其依赖程序无法运行; 使用: rpm -e PACKAGE_FILE
5.校验
工作原理:校验检查的是软件包来源的合法性和完整性,要想对它们校验检查,必须要有校验机制,这种机制是根据签名和加密实现的,通常发行版的光盘中会有一个包含所有软件特征码的文件,特征码是根据软件包特征提取的,通过单项加密实现的用来校验软件包的完整性,如果软件包在获取途中被修改,在系统中再次提取软件包特征码,跟系统已有的特征码文件比对,不同则判断被攥该,修改过的软件包,根据相同的加密算法提取的特征肯定不同;来源合法性是根据签名实现的;特征码文件被称为公钥;校验是由校验程序完成的,默认rpm命令安装时会调用;公钥获取: 官方网站 系统光盘 系统配置文件中,这是系统在安装时从安装光盘复制进去的 系统公钥位置:/etc/pik/rpm-gpg/RPM-GPG-KEY-CentOS-7导入公钥: rpm -import /path/to/pub.key校验软件: rpm -V PACKAGE-NAME:校验安装文件自安装后是否被修改过,根据PMS记录信息判断; rpm -K PACKAGE_FILE:对指定未安装的软件包进行手工校验;
6.数据库重建
默认数据库目录位置:/var/lib/rpm语法格式: rpm -initdb :初始化数据库 rpm -rebuilddb :重新构建 -dbpath=/path/ :指定数据库创建位置;
四、CentOS系统上yum命令管理程序包:
1.yum配置文件
yum repository:yum repo(yum仓库),存储了众多rpm 包及包的相关的元数据文件(放置于特定目录repodata)文件服务器: ftp:// http:// file:///yum 客户端配置文件: /etc/yum.conf :为所有仓库提供公共配置,一般不做更改 /etc/yum.repos.d/*.repo :为仓库的指向提供配置仓库指向的定义: [repositoryID] name=Some name for this repository,yum仓库描述 baseurl=url://path/to/repository/,yum仓库路径,支持上述三种路径 enabled={1|0},0表示禁用,1表示启用,可以不写表示启用,但是写错enabled会造成禁用 gpgcheck={1|0},此行不写要检测,0是不检测包,1是检查包 pgkey=URL此外假如系统上已经装有检查文本文件/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7,相当于以上两项 enablegroups={1|0},包组 failovermethod={roundrobin|priority},优先级-(默认为:roundrobin,意为随机挑选; cost=默认为1000)
2.yum 命令的用法
格式:yum [options] [command] [package …]1)显示仓库列表: yum repolist [all|enabled|disabled]2)显示程序包: yum list3)安装程序包(centos7上yum支持补全,因为其bash版本更高): yum install package1 [package2] […] yum reinstall package1 [package2] […] (重新安装)4)升级程序包: yum update [package1] [package2] […] yum downgrade package1 [package2] […] (降级)5)检查可用升级: yum check-update6)卸载程序包: yum remove | erase package1 [package2] […] )7)查看程序包信息information: yum info […]8)查看指定的特性( 可以是某文件)是由哪个程序包所提供: yum provides | whatprovides feature1 [feature2] […],类似于rpm的-qf选项9)清理本地缓存(yum缓存在主配置文件中有说明即是#cat /etc/yum.conf有相关说明):安装程序包时,下载的包文件存放于cachedir=/var/cache/yum/$basearch/$releasever中,其中$basearch是硬件架构,$releasever是操作系统版本号 yum clean [ packages | metadata | expire-cache |rpmdb | plugins | all ].10) 构建缓存: yum makecache11) 搜索: yum search string1 [string2] […],以指定的关键字搜索程序包名及summary信息12) 查看指定包所依赖的capabilities: yum deplist package1 [package2] […]13) 查看yum 事务历史: yum历史日志文件:/var/log/yum.log #cat /var/log/yum.log也可以查看yum事务历史 yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]14) 包组管理的相关命令:单个包的功能有限,为了实现复杂的功能,需要许多包组成包组 yum groupinstall group1 [group2] […] ,安装包组 yum groupupdate group1 [group2] […] ,升级包组 yum grouplist [hidden] [groupwildcard] […] ,查看包组列表 yum groupremove group1 [group2] […] ,卸载包组 yum groupinfo group1 […] ,查看包组信息
3. 如何使用光盘当作本地yum 仓库
1) 挂载光盘至某目录,例如/mnt/cdrom[root@localhost ~]# mkdir /mnt/cdrom[root@localhost ~]# mount /dev/cdrom /mnt/cdrom 2) 创建配置文件[root@localhost ~]# vim /etc/yum.repos.d/yum.repo[cdrom]name=yum testbaseurl=file:///mnt/cdrom或者file:///misc/cdgpgcheck=0gpgkey=enabled=1
4. yum 的命令行选项
-nogpgcheck:禁止进行gpgcheck检查-y:自动回答为"yes"-q:静默模式-disablerepo=repoidglob:临时禁用此处指定的repo-enablerepo=repoidglob:临时启用此处指定的repo-noplugins:禁用所有插件
5. yum 仓库
1) yum 的repo配置文件中可用的变量: $releasever: 当前OS的发行版的主版本号 $arch: 平台,i386,i486,i586,x86_64等等 $basearch:当前基础平台架构实例: baseurl=http://server/centos/$releasever/$basearch/ http://server/centos/7/x86_64 http://server/centos/6/i3842) 创建自定义yum仓库: createrepo [options]其中yum需要的一些依靠性、校验信息等等都存放在repodata目录中,所以要自定义建立yum源不仅需要rpm包,也是离不开repodata目录,repodata目录文件可以由createrepo命令生成
五、源码安装
C代码编译安装三步骤-在源代码目录下操作
C代码编译安装三步骤: 1) ./configure: (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile; (2) 检查依赖到的外部环境; 2) make: 根据makefile文件,构建应用程序; 3) make install开发工具: autoconf: 生成configure脚本 automake:生成Makefile.in 建议:安装前查看INSTALL,README开源程序源代码的获取: 官方自建站点: apache.org (ASF) mariadb.org ... 代码托管: SourceForge Github.com code.google.comc/c++: gcc (GNU C Complier)编译C源代码: 前提:提供开发工具及开发环境 开发工具:make, gcc等 开发环境:开发库,头文件 glibc:标准库通过"包组"提供开发组件 CentOS 6: "Development Tools", "Server Platform Development",第一步:configure脚本 选项:指定安装位置、指定启用的特性 --help: 获取其支持使用的选项 选项分类: 装路径设定: --prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/ --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置; system types: Optional Features: 可选特性 --disable-FEATURE --enable-FEATURE[=ARG] Optional Packages: 可选包 --with-PACKAGE[=ARG] --without-PACKAGE第二步:make第三步:make install
2. 安装后的配置:(以httpd为例子)
1) 将编译安装后的二进制程序目录导入至PATH 环境变量中,就可以直接使用命令而不再用写绝对路径或相对路径;编辑文件/etc/profile.d/NAME.sh#vim /etc/profile.d/http2.shPATH=$PATH:/usr/local/http2/bin2) 导入库文件路径编辑/etc/ld.so.conf.d/NAME.conf添加新的库文件所在目录至此文件中#vim /etc/ld.so.conf.d/http2.sh/usr/local/http2/lib然后让系统重新生成缓存#ldconfig [-v]3) 导入头文件,头文件的默认位置是/usr/include基于链接的方式实现:ln -sv[root@localhost htdocs]# cd /usr/include[root@localhost include]# ln -s /usr/local/http2/include http24) 导入帮助手册编辑/etc/man.config|man_db.conf文件添加一个MANPATH /usr/local/http2/man
文件
程序
管理
格式
软件
配置
升级
查询
开发
编译
系统
检查
二进制
仓库
脚本
命令
环境
路径
工具
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怎么鉴定ip来源于服务器ip
河北pdu服务器专用电源排名
student数据库
.数据库基本三大范式
数据库设计和高级查询课程
细化排查网络安全隐患
数据库技术 csdn
伊宁塔式服务器维保电话
软件开发工程师使用的电脑
有关网络安全的禁止图案
华为网络技术各大赛区考场
数据库的对象存储在哪里
谈谈对计算机网络技术的认知
sql数据库无法连接
sql 查看数据库 命令
电脑无法打开MDB数据库
数据库索引parallel
软件开发进项
读写器连接数据库难吗
生存挑战服务器连接失败什么原因
学校网络安全执行记录
四川计算机软件开发费用是多少
中华系列期刊由哪些数据库收录
永大电梯服务器取消消防
公安网络安全管理事迹
邯郸交友软件开发大概要多少钱
网络安全信息协调中心
网络安全法第21集
2018sql怎么联数据库
车库管理系统软件开发