在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
rpm: redhat package manager, RPM is Package Manager 例如,bash-4.3.2-1.centos6.x86_64.rpm
复制代码 代码如下:rpm {-i|--install} [install-options] PACKAGE_FILE ... -i 安装 -v 显示详细信息,可叠加使用查看更加详细信息,如-vv,-vvv -h 显示进度,用50个#来作为进度条 我们一般组合使用-ivh来安装rpm包 --nodeps 取消依赖关系 --replacepkgs 重新安装 --test 测试安装,而不是真正安装 举例: 复制代码 代码如下:[root@localhost ~]# rpm -ivh package.rpm 升级 rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... 如果有较旧的版本程序包,则升级安装;若没有,则直接安装 rpm {-F|--freshen} [install-options] PACKAGE_FILE ... 如果有较旧的版本程序包,则升级安装;若没有,则终止 我们一般组合使用-Uvh、-Fvh来安装rpm包 [install-options] --oldpackage 降级安装 --force 忽略冲突,强制执行 注意: 不要对内核包执行升级操作;linux支持多版本内核并存,因此,对新版本内核可直接安装; 如果原程序包的配置文件安装后曾被改动,升级时,新版本的文件并不会直接覆盖老版本的文件,而是把新版本的文件重命(加后缀.rpmnew)名后保留; 举例: 复制代码 代码如下:[root@localhost ~]# rpm -Uvh package.rpm 卸载 复制代码 代码如下:rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... --nodeps 忽略依赖关系 --test 卸载测试 举例: 复制代码 代码如下:[root@localhost ~]# rpm -ev package 查询 复制代码 代码如下:rpm {-q|--query} [select-options] [query-options] [select-options] 1、查询该包是否安装 rpm -q PACKAGE_NAME... 2、查询已安装的所有包 rpm -qa 3、查询某文件是由哪个包安装生成 rpm -qf /path/to/somefile 4、查询尚未安装包的相关信息 rpm -qp PACKAGE_FILE [query-options] 1、查询某包的简要说明信息 rpm -qi PACKAGE_NAME 2、查询某包安装后生成的所有文件列表 rpm -ql PACKAGE_NAME 3、查询某包安装后生成的所有配置文件列表 rpm -qc PACKAGE_NAME 4、查询某包安装后生成的所有帮助文件列表 rpm -qd PACKAGE_NAME 5、查询某rpm包制作时随版本变化的changelog列表信息 rpm -q --changelog PACKAGE_NAME 6、查询某包提供的capabilities rpm -q --provides PACKAGE_NAME 7、查询某包所依赖的capabilities rpm -q --requires PACKAGE_NAME 8、查询某包安装卸载时的脚本 rpm -q --scripts 安装卸载时的脚本有四种: preinstall: 安装前执行的脚本 postinstall: 安装后执行的脚本 preuninstall: 卸载前执行的脚本 postuninstall: 卸载后执行的脚本 举例: 查询系统中所有已安装 RPM 包 复制代码 代码如下:[root@localhost ~]# rpm -qa
复制代码 代码如下:[root@localhost ~]# rpm -qlp package
复制代码 代码如下:[root@localhost ~]# rpm -qdp package
复制代码 代码如下:rpm {-V|--verify} [select-options] [verify-options] 常用用法:rpm -V PACKAGE_NAME 文件改动后校验会有下列相关信息提示: 5:文件的MD5校验值 S:文件大小 L:链接文件 T:文件创建的时间 D:设备文件 U:文件的用户 G:文件的用户组 M:文件的权限 举例: 先用vim对yum.conf文件进行修改,再进行校验 复制代码 代码如下:[root@localhost ~]# rpm -V yum.conf S.5....T. c /etc/yum.conf 包来源合法性及完整性验正 复制代码 代码如下:[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-* [root@localhost ~]# rpm -k /var/ftp/pub/Server/kernel-PAE-2.6.18-194.el5.i686.rpm /var/ftp/pub/Server/kernel-PAE-2.6.18-194.el5.i686.rpm: (sha1) dsa sha1 md5 gpg OK 公共数据库:/var/lib/rpm
复制代码 代码如下:rpm {--initdb|--rebuilddb} 初始化:--initdb 如果事先不存在数据,则会新之;否则,不执行任何操作 重新构造:--rebuilddb 无论当前是否已经存在数据库,都会直接重建并覆盖现有数据库 举例: 复制代码 代码如下:[root@localhost ~]# rpm --initdb [root@localhost ~]# rpm --rebuilddb yum: Yellow dog Updater,Modified 主要功能是更方便的添加/删除/更新RPM包,它能自动解决包的倚赖性问题,便于管理大量系统的更新问题 使用rpm2cpio,cpio提取rpm包的中的特定文件 有些时候,我们需要提取rpm包中的一些文件,通过如下方法可以快速提取 首先查询rpm包中的文件 复制代码 代码如下:[root@taotips ~]# rpm -qpl anaconda-11.4.1.62-1.src.rpm anaconda-11.4.1.62.tar.bz2 anaconda.spec 我们需要提取 anaconda-11.4.1.62.tar.bz2 这个文件,执行下面的命令,提取到当前目录 复制代码 代码如下:rpm2cpio anaconda-11.4.1.62-1.src.rpm | cpio -idv anaconda-11.4.1.62.tar.bz2 注意: cpio参数后的文件路径 "anaconda-11.4.1.62.tar.bz2" 必须和前面查询的相对路径一样,否则提取不成功。 相关知识说明 cpio参数说明: -t 列出的意思,和"--list"等同,注意,此时列出的是“相对路径” -i 抽取的意思,和"--extract"等同 -d 建立目录,和"--make-directories"等同 -v 冗余信息输出,和"--verbose"等同 rpm参数说明: -q --query 查询 -l --list 列出 -f --file 指定文件 -p --package 指定rpm包
复制代码 代码如下:[root@taotips lib]# rpm -v --rebuilddb rpmdb: fatal region error detected; run recovery error: db4 error(-30982) from dbenv->open: DB_RUNRECOVERY: Fatal error, run database recovery error: cannot open Packages index 此时需要手动删除/var/lib/rpm目录下的类似 __db.* 的文件 复制代码 代码如下:rm -fr /var/lib/rpm/__db* 然后再运行 复制代码 代码如下: rpm -v --rebuilddb 即可.第二种方法 : 复制代码 代码如下:# cd /var/lib # mv rpm rpm.old # mkdir rpm # rpmdb --initdb # cp rpm.old/Packages rpm # rpmdb --rebuilddb 以上2中方法都可以修复rpm db,请参考使用! |
请发表评论