一、软件包的命名和工具
包命名和包管理工具
- 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
库文件
-
查看二进制程序所依赖的库文件
ldd /PATH/TO/BINARY_FILE
-
管理及查看本机装载的库文件
ldconfig 加载库文件 /sbin/ldconfig -p: 显示本机已经缓存的所有可用库文件
-
名及文件路径映射关系
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf 缓存文件:/etc/ld.so.cache
二、程序包的来源
(1) 系统发版的光盘或官方的服务器;
CentOS 镜像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
(2) 项目官方站点
https://www.kernel.org/
http://httpd.apache.org/
...
(3) 第三方组织:
Fedora-EPEL:Extra Packages for Enterprise Linux
Rpmforge:RHEL 推荐包很全
搜索引擎 :
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/
三、rpm包管理
CentOS 系统上使用rpm 命令管理程序包:
安装、卸载、升级、查询、校验、数据库维护
安装:
rpm {-i|--install} [install-options] PACKAGE_FILE…
-v: verbose
-vv:
-h:以#显示程序包管理执行进度
rpm -ivh PACKAGE_FILE ...
[install-options]
--test: 测试安装,但不真正 执行安装,即dry run 模式
--nodeps :忽略依赖关系
--replacepkgs | replacefiles
--nosignature: 不检查来源合法性
--nodigest :不检查包完整性
--noscripts :不执行 程序包脚本
%pre: ; 安装前脚本; --nopre
%post: ; 安装后脚本; --nopost
%preun: ; 卸载前脚本; --nopreun
%postun: 卸载后脚本; --nopostun
包升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
upgrade :安装有旧版程序包,则“升级”如果不存在旧版程序包,则“安装”
freshen:安装有旧版程序包,则“升级”如果不存在旧版程序包,则不执行升级操作
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
--oldpackage :降级
--force: 强制安装
注意:
(1) 不要对内核做升级操作;Linux 支持多内核版本并存,因此,对直接安装新版本内核
(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)
包查询
rpm {-q|--query} [select-options] [query-options]
[select-options]
-a: 所有包
-f:查看指定的文件由哪个程序包安装生成
-p rpmfile:针对尚未安装的程序包文件做查询操作
--whatprovides CAPABILITY:查询指定的 CAPABILITY由哪个包所提供
--whatrequires CAPABILITY:查询指定的 CAPABILITY 被哪个包所依赖
rpm2cpio 包文件|cpio –itv 预览包内文件
rpm2cpio 包文件|cpio –id “*.conf” ” 释放包内文件