软件包管理-软件包管理-RPM

软件包管理

程序包管理

  • debian: deb文件,dpkg包管理器
  • redhat: rpm文件,rpm管理器

包命名

源码名

  • name-VERSION.tar.gz|bz2|xz
  • VERSION:major.minor.release

rpm包命名方式

  • name-VERSION-release.arch.rpm

例: bash-4.2.46-19.el7.x86_64.rpm

  • VERSION: major.minor.release
  • release: release.OS
  • 常见的arch
  1. x86: i386, i486, i586, i686
  2. x86_64: x64, x86_64, amd64
  3. powerpc: ppc
  4. 跟平台无关: noarch

依赖包管理工具

  • 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

rpm包管理

rpm包安装

  • rpm -ivh PACKAGE_FILE …

rpm包升级

  • 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: 强制安装

rpm包查询

  • -q 查询,包名
  • -a all
  • -f 查询某文件是出于什么包
  • -p 查询,文件名,列出相关文件列表
  • -c 只看配置文件
  • -d 指定文档
  • -i 详细说明
  • -l 查询文件

rpm2cpio 包文件|cpio –itv 预览包内文件
rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件

[root@centos7 rpm]#rpm -q vsftpd
package vsftpd is not installed
[root@centos7 rpm]#rpm -qf /etc/passwd
setup-2.8.71-9.el7.noarch
[root@centos7 Packages]#rpm2cpio tree-1.6.0-10.el7.x86_64.rpm  | cpio -itv
-rwxr-xr-x   1 root     root        62768 Jun 10  2014 ./usr/bin/tree
drwxr-xr-x   2 root     root            0 Jun 10  2014 ./usr/share/doc/tree-1.6.0
-rw-r--r--   1 root     root        18009 Aug 13  2004 ./usr/share/doc/tree-1.6.0/LICENSE
-rw-r--r--   1 root     root         4628 Jun 24  2011 ./usr/share/doc/tree-1.6.0/README
-rw-r--r--   1 root     root         4100 Jun 24  2011 ./usr/share/man/man1/tree.1.gz
177 blocks

包卸载

  • -e 卸载,跟包名,不必写文件名
  • –allmatches 卸载所有版本

包验证

  • -V 查找包里的文件的变化
  • -K 检查包的完整性和签名,需要先导入公钥
  • –import 导入公钥

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

rpm数据库

rpm数据库,安装完后的rpm包信息都记录在这里

  • 数据库路径 /var/bin/rpm
  • rpm {–initdb | --rebuilddb}

initdb:初始化,只新建
rebuilddb:重建已安装的数据库索引目录
重建系统没有什么意义,因为只是把数据库的文件重建起来,但是数据文件不在了

其他

若卸载RPM这个工具,恢复需要进入光盘救援模式,然后挂载cdrom
rpm -ivh /mnt/cdrom/Packages/rpm-… --root=/mnt/sysimage/

实验

若是删除了相应包的目录,需要rpm2cio中找出误删除的东西,恢复到相应目录即可,但是需要注意恢复后的权限问题

  • rpm2cpio /path |cpio -vt 查看
  • rpm2cpio /path |cpio -idv ./usr/bin/tree 过去相应文件
[root@centos7 ~]#rm /bin/tree
rm: remove regular file ‘/bin/tree’? y
[root@centos7 ~]#tree
bash: tree: command not found...

[root@centos7 ~]#rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm  |cpio -vt
-rwxr-xr-x   1 root     root        62768 Jun 10  2014 ./usr/bin/tree
drwxr-xr-x   2 root     root            0 Jun 10  2014 ./usr/share/doc/tree-1.6.0
-rw-r--r--   1 root     root        18009 Aug 13  2004 ./usr/share/doc/tree-1.6.0/LICENSE
-rw-r--r--   1 root     root         4628 Jun 24  2011 ./usr/share/doc/tree-1.6.0/README
-rw-r--r--   1 root     root         4100 Jun 24  2011 ./usr/share/man/man1/tree.1.gz
177 blocks
[root@centos7 ~]#rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm  |cpio -vt
-rwxr-xr-x   1 root     root        62768 Jun 10  2014 ./usr/bin/tree
drwxr-xr-x   2 root     root            0 Jun 10  2014 ./usr/share/doc/tree-1.6.0
-rw-r--r--   1 root     root        18009 Aug 13  2004 ./usr/share/doc/tree-1.6.0/LICENSE
-rw-r--r--   1 root     root         4628 Jun 24  2011 ./usr/share/doc/tree-1.6.0/README
-rw-r--r--   1 root     root         4100 Jun 24  2011 ./usr/share/man/man1/tree.1.gz
177 blocks
[root@centos7 ~]#rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm  |cpio -idv ./usr/bin/tree
./usr/bin/tree
177 blocks
[root@centos7 ~]#ls
anaconda-ks.cfg  bin  Desktop  Documents  Downloads  fswap  Music  Pictures  Public  src  Templates  usr  Videos
[root@centos7 ~]#cd usr
[root@centos7 usr]#ls
bin
[root@centos7 usr]#cd bin
[root@centos7 bin]#ls
tree
[root@centos7 bin]#cp tree /bin/
[root@centos7 bin]#tree
.
└── tree

0 directories, 1 file
[root@centos7 bin]#

作业,卸载内核kernel包并修复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值