Linux 命令之 rpm -- RPM 软件包的管理工具
文章目錄
- 一、命令介紹
- 二、語法結構
- 三、常用選項
- 用于查詢和檢查包
- 用于安裝、升級和刪除包
- 用于執(zhí)行其他功能
- 四、命令示例
- (一)查詢和檢查包
- 1. 查看一個已安裝包的信息(版本、用途等)
- 2. 查看與指定程序相關的所有安裝文件
- 3. 查看一個已經安裝的 rpm 包的配置文件列表
- 4.查看所有需要依賴指定 rpm 包的軟件包列表
- 5. 查看哪個包提供某一功能
- 6. 查看安裝/刪除指定的軟件包期間所執(zhí)行的腳本
- 7. 查詢指定文件所屬的軟件包,即查詢文件或命令屬于哪個軟件包
- 8. 確認一個 rpm 包的完整性
- 9. 查詢一個包是否安裝
- 10. 確認一個 rpm 包還未安裝
- 11. 檢驗已安裝的軟件包是否被修改過
- 12. 檢查系統(tǒng)中所有已安裝的 rpm 包(小心使用 !!)
- 13. 查看系統(tǒng)中所有已經安裝的 rpm 包
- 14. 查看與 MySQL 有關的已安裝的軟件包列表
- 15. 查看與某個程序有關的所有已安裝的軟件包
- 16. 查看一個尚未安裝的 rpm 包的文件列表
- 17. 查看一個已經安裝的 rpm 包的文件列表
- 18. 查看指定的 rpm 軟件包所包含的文件
- 19. 查看一個軟件包的信息(版本、用途等)
- 20. 查詢哪個軟件包安裝(提供/包含)指定的程序(只能查詢指定的程序)
- 21. 查詢哪個軟件包安裝(包含/提供)指定的文件(能查詢所有指定的文件)
- 22. 查看指定軟件包的依賴關系(查看指定軟件包依賴/需要哪些功能)
- 23. 查看一個 rpm 包的修改歷史
- (二)安裝、升級和刪除包
- 1. 安裝軟件包
- 2. 升級軟件包
- 3. 卸載 rpm 軟件包
- 4. 安裝 .src.rpm 軟件包
- 5. 修復被破壞的軟件包
- (三)執(zhí)行其他功能
- 1. 導入公鑰數(shù)字證書
- 2. 從一個 rpm 包運行可執(zhí)行文件
- 3. 如何在不安裝的情況下獲取 rpm 包中的文件
- 五、參考文獻
一、命令介紹
rpm 命令是 Red Hat Package Manager(RPM軟件包管理器)的縮寫, 該命令是用于管理基于 RPM 的 Linux 的軟件包的工具?;?RPM 的 Linux 操作系統(tǒng),幾乎所有的軟件可以通過 rpm 進行安裝、卸載及管理等操作。
rpm 原本是 Red Hat Linux 發(fā)行版專門用來管理各項套件的程序,由于它遵循 GPL 規(guī)則且功能強大方便,因而廣受歡迎。逐漸受到其他發(fā)行版的采用。RPM 套件管理方式的出現(xiàn),讓 Linux 易于安裝,升級,間接提升了 Linux 的適用度。
Red Hat 于 1995 年引入了 RPM。RPM 現(xiàn)在是 Linux Standard Base (LSB) 中采用的包管理系統(tǒng)。應該注意 rpm 是操作 RPM 的主要命令,而 .rpm 是 RPM 文件使用的擴展名。所以 “一個 rpm” 或 “某某 rpm” 一般是指 RPM 文件,而 rpm 通常指命令。
概括的說,rpm 命令包含了五種基本功能:安裝、卸載、升級、查詢和驗證。
二、語法結構
語法格式:rpm [選項] [參數(shù)]
參數(shù):指定要操縱的RPM軟件包。
三、常用選項
rpm 命令選項分為三組:查詢和檢查包,安裝、升級和刪除包以及執(zhí)行其他功能。
用于查詢和檢查包
| -a | 查詢所有已經安裝的套件(即軟件包) |
| -f | 查詢擁有指定文件的套件(即軟件包),即查詢文件或命令屬于哪個軟件包 |
| -d | Document. 只列出文本文件,本參數(shù)需配合 -l 參數(shù)使用 |
| -c | 只列出組態(tài)配置文件,本參數(shù)需配合 -l 參數(shù)使用 |
| -i | Information. 后面如果跟著軟件名,沒有后綴 .rpm,可以查看該軟件的有關信息,需要配合選項 -q 才能使用 |
| -l | List. 顯示套件(即軟件包)的文件列表 |
| -p | Package. 查詢指定的 RPM 套件檔,即查詢指定的RPM軟件包 |
| -q | Query. 表示查詢 |
| -R | 顯示套件的關聯(lián)性信息,即顯示軟件包的依賴關系 |
| -s | Status. 顯示文件狀態(tài),本參數(shù)需配合-l參數(shù)使用 |
| -v | 籠統(tǒng)地顯示指令執(zhí)行過程 |
| -vv | 比較詳細地顯示指令執(zhí)行過程,便于排錯 |
| -vvv | 更加詳細地顯示指令執(zhí)行過程 |
| -h 或 --hash | 軟件包安裝的時候列出哈希標記(和 -v 一起使用效果更好),以"#"號顯示程序執(zhí)行進度 |
| -V 或 --verify 或 -y | 對與指定 RPM 軟件包相關的文件進行校驗。若無輸出,則表示已安裝的軟件沒有被修改;若軟件被修改,則會輸出信關信息 |
| -Va | 校驗所有的 RPM 軟件包 |
| -? 或 --help | 顯示幫助信息 |
| --usage | 顯示簡短的使用說明 |
用于安裝、升級和刪除包
| -e 或 --erase | 卸載軟件包 |
| -h 或 --hash | 套件安裝時列出標記,即安裝軟件包時列出標記,顯示安裝進度 |
| -i 或者 --install | 安裝指定的套件檔,即安裝軟件包 |
| -U 或 --upgrade | 升級指定的套件檔(即軟件包),后面接的套件若沒有安裝過,則系統(tǒng)將直接安裝該套件 |
| -F | 升級指定的套件檔,后面接的套件若沒有安裝過,則該套件不會安裝。升級或刷新已經安裝的包 |
| --nodeps | 忽略依賴關系警告,當要安裝的 rpm 包依賴其他包時,即使其他包沒有安裝,也可以安裝這個包 |
| --force | 強制安裝,即使覆蓋屬于其他包的文件也要安裝 |
| --ignorearch | 忽略主機構架 |
| --test | 僅作測試,不真正執(zhí)行,可用于測試安裝,測試卸載 |
| --replacepkgs | 重新安裝。替換原有的安裝 |
| --initdb | 新建RPM的數(shù)據(jù)庫 |
| --rebuilddb | 重建RPM的數(shù)據(jù)庫 |
| --percent | Print percentages as files are unpacked from the package archive. |
用于執(zhí)行其他功能
| -b 或 -t | 設置包裝套件的完成階段,并指定套件檔(即軟件包)的文件名稱 |
四、命令示例
(一)查詢和檢查包
1. 查看一個已安裝包的信息(版本、用途等)
[root@htlwk0001host ~]# rpm -qi openssh-server-8.0p1-4.el8_1.x86_64 Name : openssh-server Version : 8.0p1 Release : 4.el8_1 Architecture: x86_64 Install Date: 2020年07月17日 星期五 09時54分09秒 Group : System Environment/Daemons Size : 1461534 License : BSD Signature : RSA/SHA256, 2020年02月05日 星期三 08時08分05秒, Key ID 05b555b38483c65d Source RPM : openssh-8.0p1-4.el8_1.src.rpm Build Date : 2020年02月05日 星期三 00時01分36秒 Build Host : x86-01.mbox.centos.org Relocations : (not relocatable) Packager : CentOS Buildsys <bugs@centos.org> Vendor : CentOS URL : http://www.openssh.com/portable.html Summary : An open source SSH server daemon Description : OpenSSH is a free version of SSH (Secure SHell), a program for logging into and executing commands on a remote machine. This package contains the secure shell daemon (sshd). The sshd daemon allows SSH clients to securely connect to your SSH server.說明:只能使用 -qi,而且必須按這個順序,使用 -iq 還不行,僅使用 -i 也不行,真 tmd 奇葩!已安裝的軟件包,不能使用后綴名 .rpm,否則報錯。
2. 查看與指定程序相關的所有安裝文件
例如,查看與 MySQL 相關的所有安裝文件:
[root@htlwk0001host bin]# rpm -qal|grep mysql /etc/logrotate.d/mysql /usr/bin/mysql_install_db /usr/bin/mysql_plugin /usr/bin/mysql_secure_installation /usr/bin/mysql_ssl_rsa_setup /usr/bin/mysql_tzinfo_to_sql /usr/bin/mysql_upgrade /usr/bin/mysqld_pre_systemd /usr/bin/mysqldumpslow /usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/mysqld@.service /usr/lib/tmpfiles.d/mysql.conf3. 查看一個已經安裝的 rpm 包的配置文件列表
[root@htlwk0001host mysql]# rpm -qc mysql-community-server-5.7.31-1.el7.x86_64 /etc/logrotate.d/mysql /etc/my.cnf4.查看所有需要依賴指定 rpm 包的軟件包列表
[root@htlwk0001host mysql]# rpm -q --whatrequires mysql-community-server-5.7.31-1.el7.x86_64.rpm # mysql-community-server-5.7.31-1.el7.x86_64.rpm 是被依賴者 沒有軟件包需要 mysql-community-server-5.7.31-1.el7.x86_64.rpm5. 查看哪個包提供某一功能
使用 rpm 查明哪個包提供 gcl-selinux(x86-64) 功能:
[ian@echidna ~]$ rpm -q --whatprovides 'gcl-selinux(x86-64)' gcl-selinux-2.6.8-0.7.20100201cvs.fc12.x86_646. 查看安裝/刪除指定的軟件包期間所執(zhí)行的腳本
[root@htlwk0001host mysql]# rpm -q --scripts mysql-community-server-5.7.31-1.el7.x86_64.rpm7. 查詢指定文件所屬的軟件包,即查詢文件或命令屬于哪個軟件包
[root@htlwk0001host mysql]# rpm -qf /etc/httpd/conf/httpd.conf httpd-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64注意:這里要使用文件的絕對路徑。
你可以使用命令 which 查詢命令的絕對路徑:
[root@htlwk0001host ~]# which mysql /usr/bin/mysql再查詢該文件所屬的軟件包:
[root@htlwk0001host ~]# rpm -qf /usr/bin/mysql mysql-community-client-5.7.31-1.el7.x86_64你也可以把這兩條命令連起來寫:
[root@htlwk0001host ~]# rpm -qf `which mysql` mysql-community-client-5.7.31-1.el7.x86_64which mysql 這條命令是由兩個“反撇號”引起來的,這代表引用反引號里面的命令所產生的結果。
也可以使用如下的形式查詢:
[root@htlwk0001host ~]# rpm -qf $(which mysql) mysql-community-client-5.7.31-1.el7.x86_648. 確認一個 rpm 包的完整性
[root@htlwk0001host mysql]# rpm --checksig package.rpm9. 查詢一個包是否安裝
[root@htlwk0001host ~]# rpm -q mysql-community-server mysql-community-server-5.7.31-1.el7.x86_6410. 確認一個 rpm 包還未安裝
[root@htlwk0001host mysql]# rpm -Vp package.rpm11. 檢驗已安裝的軟件包是否被修改過
檢查軟件包 package_name 是否被修改過,檢查的項目包括:文件尺寸、 許可、類型、所有者、群組、MD5以及最后修改時間等。
[root@htlwk0001host mysql]# rpm -V package_name如果包沒有被修改過,這個命令沒有輸出。
12. 檢查系統(tǒng)中所有已安裝的 rpm 包(小心使用 !!)
[root@htlwk0001host mysql]# rpm -Va13. 查看系統(tǒng)中所有已經安裝的 rpm 包
[root@htlwk0001host mysql]# rpm -qa perl-Pod-Perldoc-3.28-396.el8.noarch os-prober-1.74-6.el8.x86_64 biosdevname-0.7.3-2.el8.x86_64 python3-pip-wheel-9.0.3-16.el8.noarch perl-CPAN-Meta-2.150010-396.el8.noarch建議用下面這個組合命令:
[root@htlwk0001host ~]# rpm -qa | sort | less注:sort 默認會按字母大小排序,然后輸出給命令 less 顯示。
14. 查看與 MySQL 有關的已安裝的軟件包列表
[root@htlwk0001host bin]# rpm -qa|grep mysql mysql-community-server-5.7.31-1.el7.x86_64 mysql-community-common-5.7.31-1.el7.x86_64 mysql57-community-release-el7-10.noarch mysql-community-client-5.7.31-1.el7.x86_64 php-mysqlnd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64 mysql-community-libs-5.7.31-1.el7.x86_6415. 查看與某個程序有關的所有已安裝的軟件包
例如,查看已安裝的與 mysql 有關的軟件包名稱:
[root@htlwk0001host mysql]# rpm -qa | grep mysql mysql-community-server-5.7.31-1.el7.x86_64 mysql-community-common-5.7.31-1.el7.x86_64 mysql57-community-release-el7-10.noarch mysql-community-client-5.7.31-1.el7.x86_64 php-mysqlnd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64 mysql-community-libs-5.7.31-1.el7.x86_64例如,顯示所有名稱中包含 httpd 字樣的 rpm 包:
[root@htlwk0001host mysql]# rpm -qa | grep httpd httpd-tools-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64 httpd-filesystem-2.4.37-21.module_el8.2.0+382+15b0afa8.noarch centos-logos-httpd-80.5-2.el8.noarch httpd-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_6416. 查看一個尚未安裝的 rpm 包的文件列表
[root@htlwk0001host mysql]# rpm -qlp package.rpm17. 查看一個已經安裝的 rpm 包的文件列表
[root@htlwk0001host mysql]# rpm -ql mysql-community-server-5.7.31-1.el7.x86_64 /etc/logrotate.d/mysql /etc/my.cnf /etc/my.cnf.d /usr/bin/innochecksum /usr/bin/lz4_decompress /usr/bin/my_print_defaults /usr/bin/myisam_ftdump18. 查看指定的 rpm 軟件包所包含的文件
沒有安裝過的軟件包,使用如下的命令語句:
[root@htlwk0001host mysql]# rpm -qlp mysql-community-libs-5.7.31-1.el7.x86_64.rpm注:-p 表示后面指定具體的 rpm 包,p 是 package 的首字母。
已經安裝過的軟件包,使用如下的命令語句:
[root@htlwk0001host mysql]# rpm -ql mysql-community-libs-5.7.31-1.el7.x86_64注:查看已經安裝過的軟件包,不需要選項 -p,所以軟件包的名稱后面不要寫后綴名 .rpm。
19. 查看一個軟件包的信息(版本、用途等)
沒有安裝過的軟件包,使用如下命令語句:
[root@htlwk0001host mysql]# rpm -qip package_name.rpm已經安裝過的軟件包,使用如下命令語句:
[root@htlwk0001host mysql]# rpm -qi mysql-community-libs-5.7.31-1.el7.x86_64 Name : mysql-community-libs Version : 5.7.31 Release : 1.el7 Architecture: x86_64 Install Date: 2020年08月23日 星期日 15時46分46秒 Group : Applications/Databases Size : 9928453 License : Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Under GPLv2 license as shown in the Description field. Signature : DSA/SHA1, 2020年06月03日 星期三 18時07分52秒, Key ID 8c718d3b5072e1f5 Source RPM : mysql-community-5.7.31-1.el7.src.rpm Build Date : 2020年06月02日 星期二 19時48分16秒 Build Host : siv27.no.oracle.com Relocations : (not relocatable) Packager : MySQL Release Engineering <mysql-build@oss.oracle.com> Vendor : Oracle and/or its affiliates URL : http://www.mysql.com/ Summary : Shared libraries for MySQL database client applications Description : This package contains the shared libraries for MySQL client applications.說明:只能使用 -qi,而且必須按這個順序,使用 -iq 還不行,奇葩!已安裝的軟件包,不能使用后綴名 .rpm,否則報錯。
20. 查詢哪個軟件包安裝(提供/包含)指定的程序(只能查詢指定的程序)
以下命令只適用于查詢可執(zhí)行的程序由哪個軟件包所安裝:
rpm -qf `which 程序名` # 返回軟件包的全名 rpm -qif `which 程序名` # 返回軟件包的有關信息 rpm -qlf `which 程序名` # 返回軟件包的文件列表例如,查看 mysql 是由哪個軟件包安裝的,如下:
[root@htlwk0001host mysql]# rpm -qf `which mysql` mysql-community-client-5.7.31-1.el7.x86_64 [root@htlwk0001host mysql]# rpm -qf `which mysqld` mysql-community-server-5.7.31-1.el7.x86_64說明: 字符串 `which mysql` 所用的引號不是“單引號”,而是鍵盤左上角“波浪號” ~ 下面的“捺符號”;-f 表示后面需要指定文件名,且必須是完整的文件路徑;which mysql 是一條命令語句,會執(zhí)行返回結果,即返回指定的命令文件 mysql 的所在路徑。
21. 查詢哪個軟件包安裝(包含/提供)指定的文件(能查詢所有指定的文件)
👆上面那個只適用于可執(zhí)行的程序,而下面的方法,不僅可以用于可執(zhí)行程序,也可以用于普通的任何文件。首先你要知道這個文件名,然后查詢該文件的完整路徑,可以用 whereis 或者 which,然后使用 rpm -qf 查詢。
例如,查詢命令文件 mysql 的完整路徑,使用命令 which,命令語句如下:
[root@htlwk0001host ~]# which mysql /usr/bin/mysql注意:which 只能查詢命令的所在位置,不能查詢非可執(zhí)行文件的所在位置。
查詢命令文件 mysql 的完整路徑,使用命令 whereis,如下:
[root@htlwk0001host ~]# whereis mysql mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz你還要判斷哪個才是命令文件 mysql 的路徑,可以通過命令 file 查詢,如下:
[root@htlwk0001host ~]# file /usr/bin/mysql /usr/bin/mysql: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=afd62c3d3b2d3192af0ba4bb66bbc07a3ee3d168, with debug_info, not stripped如上查詢結果所示,ELF 說明是可執(zhí)行的文件。
查詢壓縮包文件 mysql.1.gz 所在位置,使用命令 whereis,如下:
[root@htlwk0001host ~]# whereis mysql.1.gz mysql.1: /usr/share/man/man1/mysql.1.gz使用命令 rpm -qf 查詢文件 mysql.1.gz 是哪個軟件包安裝的,如下:
[root@htlwk0001host ~]# rpm -qf /usr/share/man/man1/mysql.1.gz mysql-community-client-5.7.31-1.el7.x86_64注意:如上查詢某個文件屬于哪個軟件包提供的,需要輸入該文件的完整的路徑名才行。
如果你僅僅輸入文件名稱則會提示不存在該文件,如下:
[root@htlwk0001host ~]# rpm -qf mysql.q.gz error: file /root/mysql.q.gz: No such file or directory22. 查看指定軟件包的依賴關系(查看指定軟件包依賴/需要哪些功能)
[root@htlwk0001host ~]# rpm -qR mysql-community-server-5.7.31-1.el7.x86_64 /bin/bash /bin/sh /bin/sh /bin/sh注:
23. 查看一個 rpm 包的修改歷史
[root@htlwk0001host mysql]# rpm -q --changelog mysql-community-server-5.7.31-1.el7.x86_64 * 四 9月 05 2019 Bjorn Munch <bjorn.munch@oracle.com> - 5.7.28-1 - Add License Book, remove COPYING* 三 1月 24 2018 Balasubramanian Kandasamy <balasubramanian.kandasamy@oracle.com> - 5.7.23-1 - Add perl modules for test subpackage* 三 1月 10 2018 Bjorn Munch <bjorn.munch@oracle.com> - 5.7.22-1 - No longer need to remove obsoleted mysqltest man pages(二)安裝、升級和刪除包
1. 安裝軟件包
安裝過程中可能出現(xiàn)下面的警告或者提示:
... conflict with ...可能是要安裝的包里有一些文件可能會覆蓋現(xiàn)有的文件,缺省時這樣的情況下是無法正確安裝的可以用rpm --force -i強制安裝即可
... is needed by ... ... is not installed ...此包需要的一些軟件你沒有安裝可以用rpm --nodeps -i來忽略此信息,也就是說rpm -i --force --nodeps可以忽略所有依賴關系和文件問題,什么包都能安裝上,但這種強制安裝的軟件包不能保證完全發(fā)揮功能。
2. 升級軟件包
通常情況下我們使用 -U 選項進行更新,尤其是在命令行包含 RPM 列表的情況下。這樣的話,就會安裝未安裝的包,升級已經安裝的包。常常使用另外兩個選項 -v(詳細)和 -h(# 標志)提供進度顯示。下面的例子中說明了如何使用 rpm 命令更新 vim-common、vim-enhanced 和 vim-minimal 包。我們已經把 vim-common 和 vim-enhanced 包下載到根用戶的主目錄中,而 vim-minimal 包要從一個更新鏡像獲取。
[root@echidna ~]# ls *.rpm vim-common-7.2.411-1.fc12.x86_64.rpm vim-enhanced-7.2.411-1.fc12.x86_64.rpm [root@echidna ~]# rpm -Uvh *.rpm http://mirrors.usc.edu/pub/linux/distributions\ > /fedora/linux/updates/12/x86_64/vim-minimal-7.2.411-1.fc12.x86_64.rpm Retrieving http://mirrors.usc.edu/pub/linux/distributions/fedora/linux/updates/12/x86 _64/vim-minimal-7.2.411-1.fc12.x86_64.rpm Preparing... ########################################### [100%]1:vim-common ########################################### [ 33%]2:vim-enhanced ########################################### [ 67%]3:vim-minimal ########################################### [100%]3. 卸載 rpm 軟件包
使用命令 rpm -e 包名,包名可以包含版本號等信息,但是不可以有后綴 .rpm,比如卸載軟件包 proftpd-1.2.8-1,可以使用下列格式:
rpm -e proftpd-1.2.8-1 rpm -e proftpd-1.2.8 rpm -e proftpd- rpm -e proftpd不可以是下列格式:
rpm -e proftpd-1.2.8-1.i386.rpm rpm -e proftpd-1.2.8-1.i386 rpm -e proftpd-1.2 rpm -e proftpd-1當使用 rpm 刪除包時,如果軟件包可以刪除,不會有任何的輸出和提示,但是,如果試圖刪除其他包需要的包,它不會執(zhí)行刪除操作,您會看到以下的錯誤消息:
root@echidna ~]# rpm -e gcl-selinux error: Failed dependencies:gcl-selinux is needed by (installed) gcl-2.6.8-0.7.20100201cvs.fc12.x86_64這說明這個軟件被其他軟件需要,不能隨便卸載,可以使用選項 --nodeps 強制卸載:
rpm -e --nodeps proftpd-1.2.8-14. 安裝 .src.rpm 軟件包
詳見《Linux 如何安裝 SRPM 包》
5. 修復被破壞的軟件包
RPM 包管理系統(tǒng)通??梢酝ㄟ^選項 -F 修復包,但是,如果刪除了包中的重要文件,僅僅進行更新或者使用 yum reinstall 重新安裝包依舊無法解決問題,那么可能需要在重新安裝之前刪除包。對于這種情況,可能希望刪除現(xiàn)有的拷貝并重新安裝,但是不希望卸載和重新安裝依賴它的所有包。為此,在刪除包時,可以使用 rpm 命令的 --nodeps 選項繞過依賴關系檢查。下面的例子中,刪除了 vim-common 中的 /usr/bin/xxd 文件,然后演示如何恢復這個包:
[root@echidna ~]# rm /usr/bin/xxd rm: remove regular file `/usr/bin/xxd'? y [root@echidna ~]# # Oops! we needed that file [root@echidna ~]# rpm -Fvh vim-common-7.2.411-1.fc12.x86_64.rpm [root@echidna ~]# ls /usr/bin/xxd ls: cannot access /usr/bin/xxd: No such file or directory [root@echidna ~]# # Oh! Freshening the package didn't replace the missing file [root@echidna ~]# rpm -e vim-common error: Failed dependencies:vim-common = 2:7.2.411-1.fc12 is needed by (installed) vim-enhanced-2:7.2.411-1.f c12.x86_64 [root@echidna ~]# # Can't remove vim-common because vim-enhanced needs it [root@echidna ~]# rpm -e --nodeps vim-common [root@echidna ~]# # Bypassing the dependency check allowed removal [root@echidna ~]# rpm -Uvh vim-common-7.2.411-1.fc12.x86_64.rpm Preparing... ########################################### [100%]1:vim-common ########################################### [100%] [root@echidna ~]# # Update (or install) vim-common again [root@echidna ~]# ls /usr/bin/xxd /usr/bin/xxd [root@echidna ~]# # And /usr/bin/xxd is back注意,在安裝 RPM 時也可以繞過依賴關系檢查,但是這通常不是好做法。
(三)執(zhí)行其他功能
1. 導入公鑰數(shù)字證書
[root@htlwk0001host mysql]# rpm --import /media/cdrom/RPM-GPG-KEY2. 從一個 rpm 包運行可執(zhí)行文件
rpm2cpio package.rpm | cpio --extract --make-directories *bin*說明:--extract 表示提取;--make-directories 表示按軟件包內的文件原有的路徑;*bin* 執(zhí)行名稱中含有關鍵字 bin 的文件,即可執(zhí)行文件。
3. 如何在不安裝的情況下獲取 rpm 包中的文件
使用命令工具 rpm2cpio 和 cpio,對 rpm 包進行提取(包含解包、解壓過程)。
rpm2cpio xxx.rpm | cpio -vi rpm2cpio xxx.rpm | cpio -idmv rpm2cpio xxx.rpm | cpio --extract --make-directories說明: 參數(shù) -i 和 --extract 相同,表示提取文件;-d 和 --make-directory 相同,表示根據(jù)包中文件原來的路徑建立目錄;-m 表示保持文件的更新時間;-v 表示指示執(zhí)行進程。
五、參考文獻
線上工具
總結
以上是生活随笔為你收集整理的Linux 命令之 rpm -- RPM 软件包的管理工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 命令之 tar 命令-打包和
- 下一篇: Linux 命令之 ls -- 列出指定