软件包管理
软件包运行环境:
API:Application Programming Interface 使用标准:POSIX: 源代码运行步骤:预处理(如处理注释)—>编译成汇编代码—>链接其他库文件 ABI:application binary interpace file命令可以查看ABI接口类型 file 文件名 Linux与windows的ABI接口不同 Linux运行windows二进制文件:安装wine windos运行Linux二进制文件:Cywin
包管理器:
功能:将编译好的应用程序的组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作 二进制文件组成部分 二进制文件、库文件、配置文件、帮助文档 程序包管理: debian:deb文件,dpkg包管理器 redhat:rpm文件,rpm包管理器 rpm:rpm Package Manager 1、包文件组成 (每个包独有) RPM包内的文件 RPM的元数据,如名称,版本,依赖性,描述等 安装或卸载时运行的脚本2、数据库(公共) 程序包名称及版本 依赖关系 功能说明 包安装后生成的各文件路径及校验码信息
rpm包命名方式
举例:gd-devel-2.0.35-11.el6.x86_64.rpm
gd是这个包的主包名,devel是这个包的分包名,2.0.35是表示版本信息,2为主版本号,0表示次版本号,35为源码包的发行号也叫修订号,
11.el6中的11是rpm的发行号,el6表示RHEL6,x86_64是表示适合的平台。
常见的arch:
x86: i386, i486, i586, i686 ,x86_64: x64, x86_64, amd64,powerpc: ppc
跟平台无关: noarch
包分类
主包 :application-version-ARCH.rpm
开发包:application-devel…
工具包:application-utils…
包之间的关系:可能存在依赖甚至循环依赖
解决依赖包管理工具:
yum: rpm包管理器的前端工具
apt- get: deb包管理器前端工具
zypper: suse上的rpm前端管理工具
dnf: Fedora 18+ rpm包管理器前端管理工具
包安装路径:rpm包在安装时自动根据FHS将文件安装在指定目录下无需手动干预
编译安装:编译安装可以手动更改安装路径
程序包来源:
(1) 系统发版的光盘或官方的服务器;
CentOS镜像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
(2) 项目官方站点
第三方组织:
Fedora- EPEL:Extra Packages for Enterprise Linux
Rpmforge:RHEL推荐,包很全
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/
(4) 自己制作
注意:检查其合法性: 来源合法性,程序包的完整性
库文件
什么是库文件:一种可执行代码的二进制+形式,可以被操作系统载入内存执行。库文件是别人写好的、成熟的可复用的代码,应用程序运行时直接加载调用即可。 库文件分类 静态库 .a结尾 编译时直接加载 动态库 .so结尾 在应用程序运行时加载 查看二进制文件依赖的所有库文件:ldd 二进制文件 管理及查看本机装载的库文件: ldconfig /sbin/ldconfig - p: 显示本机已经缓存的所有可用库文件名及文件路径映射关系 配置文件: /etc/ld.so.conf, /etc/ld.so.conf.d/*. conf 缓存文件: /etc/ld.so.cach
rpm包管理
CentOS系统上使用 rpm命令管理程序包:
安装
rpm -i|–install 包文件
-v:显示安装详细信息
-vv:显示更详细的安装信息
-h:以#号显示安装进度
–test:测试安装但不是真的安装
–nodeps:忽略安装依赖关系
–replacepkgs:覆盖安装,所有和软件相关的包都重新安装
–replacefiles:覆盖文件,比如软件A和软件B需要相同的文件的时候,软件A安装了,再安装软件B可能出现出现文件已存在
–nosignature:不检查包的完整性
卸载
升级 install -U(update) 包名:如果有老版本就升级,如果没有老版本则安装 install -F (freshen) 包名:如果有老版本就升级,如果没有老版本则不执行升级操作 --oldpackage:降级,当前系统中已经安装的软件的版本大于要安装的软件版本时,会不能安装,需要添加此选项 --force:强制升级,比如出现文件冲突等可使用者选项 内核升级: 注意: (1) 不要对内核做升级操作; Linux支持多内核版本并存,因此,对直接安装新版本内核 (rpm -ivh 新内核文件安装包) (2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本 的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而 把新版本的文件重命名 (FILENAME.rpmnew)后保留
查询
rpm -q[其他选项] 其他选项: -a:查询所有的安装 |rpm -qa -f:查询文件由哪个程序包安装生成 - p rpmfile:针对尚未安装的程序包文件做查询操作; -- whatprovides CAPABILITY:查询指定的功能由哪个包所提供 --whatrequires capability :查询指定的功能被哪个包依赖 --changelog :查寻已经安装的包的更改日志 :rpm -q --changelog vsftpd -c :查询已安装包的配置文件 rpm -q -c vsftpd -d :查询程序的文档 -i :查询安装信息 - l: 查看指定的程序包安装后生成的所有文件 -- scripts:程序包自带的脚本片断 - R: 查询指定的程序包所依赖的功能 --provides :程序包所提供的功能
卸载:
rpm -e 包名
校验:
定义:校验已经安装包的文件是否发生改变,不发生改变时无显示结果 rpm -V 包名 不同改变显示不同的结果 S file Size differs M Mode differs (includes permissions and file type) 5 digest (formerly MD5 sum) differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTime differs P capabilities differ
包校验:
包来源合法性验正及完整性验正: 完整性验正: SHA256 来源合法性验正: RSA 公钥加密: 对称加密:加密、解密使用同一密钥; 非对称加密:密钥是成对儿的 public key: 公钥,公开所有人 secret key: 私钥, 不能公开 默认情况下操作系统无对包进行检测的能力,需要导入所需要公钥: rpm - K|--checksig rpmfile 检查包的完整性和签名 rpm -- import /etc/pki/rpm- gpg/RPM- GPG- KEY- CentOS- 7 CentOS 7发行版光盘提供: RPM- GPG- KEY- CentOS- 7 卸载导入的公钥 rpm -qa gpg- pubkey* rpm -e gpg-pubkey-f4a80eb5-53a7ff4b
数据库维护
存放包安装信息数据库文件
/var/lib/rpm
rpm {– initdb| — rebuilddb}
initdb: 初始化
如果事先不存在数据库,则新建之
否则,不执行任何操作
rebuilddb:重建
无论当前存在与否,直接重新创建数据库
原创文章,作者:wangnannan,如若转载,请注明出处:http://www.178linux.com/36500