Linux软件包管理——rpm


/etc, /bin, /sbin, /lib, /usr/share/man
/etc, /bin, /sbin, /lib:系统启动就需要用到的程序,这些目录不能挂载在额外的分区,必须在根文件系统分区上

/usr/
bin
sbin
lib

操作系统核心功能,可以单独分区

/usr/local 建议单独分区
bin
sbin
lib
etc
man

/opt:第三方默认安装位置,现在大多数为/usr/local目录下

/proc:不能单独分区,默认为空
/sys:不能单独分区,默认为空

/dev:设备,不能单独分区
/var:应该单独分区
/home:应该单独分区
/root:不能单独分区

/boot:内核,initrd(initramfs),可以单独分区
内核:

POST-->BIOS(HD)-->(MBR)bootloader(文件系统结构,ext2,ext3...)-->内核

Linux软件包管理器
1. 打包成一个文件:二进制程序、库文件、配置文件、帮助文件
2. 生成数据库,追踪所安装的每一个文件
软件包管理器的核心功能:
1. 制作软件包;
2. 安装、卸载、升级、查询、校验;

RedHat、SUSE、Debian
RedHat、SUSE:RPM
RedHat Package Manager
RPM is Package Manager
Debian:dpt

依赖关系:
X-->Y-->Z

前端工具:yum,apt-get
后端工具:RPM,dpt
yum:Yellowdog Update Modifier

rpm命令:
rpm:
数据库/var/lib/rpm

rpmbuild:
安装、查询、卸载、升级、校验、数据库的重建、验证数据包等工作;

rpm命名:
包:组成部分
主包:
bind-9.7.1-1.el5.i586.rpm
子包:
bind-libs-9.7.1-1.el5.i586.rpm
bind-utils-9.7.1-1.el5.i586.rpm
包名格式:
name-version-release.arch.rpm
bind-major.minor.release-release.arch.rpm

主版本号:重大改进
次版本号:某子功能发生重大变化
发行号:修正了部分bug,调整了一点功能

bind-9.7.1.tar.gz

rpm包:
二进制格式*
编译配置完成后,制作成rpm包
bind-9.7.1-1.[el5.][x86|x64|x86_64|i686|noarch].rpm

源码格式

rpm:
1. 安装:
rpm -i /PATH/TO/PACKAGE_FILE
-h:以#显示进度,每个#号表示2%的进度;
-v:显示纤细过程
-vv:更详细的过程

rpm -ivh /PATH/TO/PACKAGE_FILE

--nodeps:忽略依赖关系;
--replacepkgs:重新安装,替换原有安装;
--replacefiles:替换文件
--oldpackage:降级
--force:强行安装,可以实现重装或降级
--test:
2. 查询
rpm -q PACKAGE_NAME
rpm -qa:查询已经安装的所有包

rpm -qi PACKAGE_NAME:查询指定包的说明信息;
rpm -ql PACKAGE_NAME:查询指定包安装后生成的文件列表;
rpm -qc PACKAGE_NAME:查询指定包安装的配置文件;
rpm -qd PACKAGE_NAME:查询指定包安装的帮助文件;

rpm -q --scripts PACKAGE_NAME:查询指定包中包含的脚本

rpm -qf /PATH/TO/SOMEFILE:查询指定文件是由哪个rpm包安装生成的;

如果某个rpm包尚未安装,我们需要查询其说明信息、安装以后会生成的文件;
rpm -qpi /PATH/TO/PACKAGE_FILE
rpm -qpl /PATH/TO/PACKAGE_FILE:查看由哪些文件构成

3. 升级
rpm -Uvh /PATH/TO/NEW_PACKAGE_NAME:如果装有老版本的,则升级;否则,则安装;
rpm -Fvh /PATH/TO/NEW_PACKAGE_NAME:如果装有老版本的,则升级;否则,则退出;
--oldpaclages:降级

4. 卸载
rpm -e PACKAGE_NAME
--nodeps

5. 校验
rpm -V PACKAGE_NAME

6. 重建数据库
rpm
--rebuilddb:重建数据库,不管有没有都会从头重建数据库
--initdb:初始化数据库,没有猜建立,有就不用建立;

7. 检验来源合法性,及软件包完整性
加密类型:
对称:加密解密使用同一个密钥;
公钥:一对密钥,公钥,私钥;
单向:

ls /etc/pki/rpm-gpg/

rpm -K /PATH/TO/PACKAGE_FILE
dsa,gpg:验证来源合法性,也即验证签名;可以使用--nosignature,略过此项
sha1,md5:验证软件包完整性,可以使用--nodigest,略过此项

rpm --import /etc/pki/gpm-gpg/RPM-GPG-KEY-redhat-release:导入密钥文件

相关内容