日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 命令之 rpm -- RPM 软件包的管理工具

發(fā)布時間:2023/12/3 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 命令之 rpm -- RPM 软件包的管理工具 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一、命令介紹
  • 二、語法結構
  • 三、常用選項
    • 用于查詢和檢查包
    • 用于安裝、升級和刪除包
    • 用于執(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查詢擁有指定文件的套件(即軟件包),即查詢文件或命令屬于哪個軟件包
-dDocument. 只列出文本文件,本參數(shù)需配合 -l 參數(shù)使用
-c只列出組態(tài)配置文件,本參數(shù)需配合 -l 參數(shù)使用
-iInformation. 后面如果跟著軟件名,沒有后綴 .rpm,可以查看該軟件的有關信息,需要配合選項 -q 才能使用
-lList. 顯示套件(即軟件包)的文件列表
-pPackage. 查詢指定的 RPM 套件檔,即查詢指定的RPM軟件包
-qQuery. 表示查詢
-R顯示套件的關聯(lián)性信息,即顯示軟件包的依賴關系
-sStatus. 顯示文件狀態(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ù)庫
--percentPrint 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.conf

3. 查看一個已經安裝的 rpm 包的配置文件列表

[root@htlwk0001host mysql]# rpm -qc mysql-community-server-5.7.31-1.el7.x86_64 /etc/logrotate.d/mysql /etc/my.cnf

4.查看所有需要依賴指定 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.rpm

5. 查看哪個包提供某一功能

使用 rpm 查明哪個包提供 gcl-selinux(x86-64) 功能:

[ian@echidna ~]$ rpm -q --whatprovides 'gcl-selinux(x86-64)' gcl-selinux-2.6.8-0.7.20100201cvs.fc12.x86_64

6. 查看安裝/刪除指定的軟件包期間所執(zhí)行的腳本

[root@htlwk0001host mysql]# rpm -q --scripts mysql-community-server-5.7.31-1.el7.x86_64.rpm

7. 查詢指定文件所屬的軟件包,即查詢文件或命令屬于哪個軟件包

[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_64

which mysql 這條命令是由兩個“反撇號”引起來的,這代表引用反引號里面的命令所產生的結果。

也可以使用如下的形式查詢:

[root@htlwk0001host ~]# rpm -qf $(which mysql) mysql-community-client-5.7.31-1.el7.x86_64

8. 確認一個 rpm 包的完整性

[root@htlwk0001host mysql]# rpm --checksig package.rpm

9. 查詢一個包是否安裝

[root@htlwk0001host ~]# rpm -q mysql-community-server mysql-community-server-5.7.31-1.el7.x86_64

10. 確認一個 rpm 包還未安裝

[root@htlwk0001host mysql]# rpm -Vp package.rpm

11. 檢驗已安裝的軟件包是否被修改過

檢查軟件包 package_name 是否被修改過,檢查的項目包括:文件尺寸、 許可、類型、所有者、群組、MD5以及最后修改時間等。

[root@htlwk0001host mysql]# rpm -V package_name

如果包沒有被修改過,這個命令沒有輸出。

12. 檢查系統(tǒng)中所有已安裝的 rpm 包(小心使用 !!)

[root@htlwk0001host mysql]# rpm -Va

13. 查看系統(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_64

15. 查看與某個程序有關的所有已安裝的軟件包

例如,查看已安裝的與 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_64

16. 查看一個尚未安裝的 rpm 包的文件列表

[root@htlwk0001host mysql]# rpm -qlp package.rpm

17. 查看一個已經安裝的 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_ftdump

18. 查看指定的 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 directory

22. 查看指定軟件包的依賴關系(查看指定軟件包依賴/需要哪些功能)

[root@htlwk0001host ~]# rpm -qR mysql-community-server-5.7.31-1.el7.x86_64 /bin/bash /bin/sh /bin/sh /bin/sh

注:

  • -R 必須大寫,是 requires 的首字母,含義是查詢軟件包的依賴性。
  • 如果要查詢包文件而不是 RPM 數(shù)據(jù)庫,那么添加 -p 選項并使用完整的 RPM 文件名。
  • 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* 三 124 2018 Balasubramanian Kandasamy <balasubramanian.kandasamy@oracle.com> - 5.7.23-1 - Add perl modules for test subpackage* 三 110 2018 Bjorn Munch <bjorn.munch@oracle.com> - 5.7.22-1 - No longer need to remove obsoleted mysqltest man pages

    (二)安裝、升級和刪除包

    1. 安裝軟件包

  • 安裝當前目錄下的一個 rpm 包,并顯示安裝相關信息:
  • [root@linuxcool ~]# rpm -ivh package.rpm
  • 按絕對路徑安裝 rpm 包,并顯示安裝相關信息:
  • [root@linuxcool ~]# rpm -ivh /media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm
  • 安裝一個 rpm 包,且忽略依賴關系警告:
  • [root@linuxcool ~]# rpm -ivh --nodeps package.rpm

    安裝過程中可能出現(xiàn)下面的警告或者提示:

    ... conflict with ...

    可能是要安裝的包里有一些文件可能會覆蓋現(xiàn)有的文件,缺省時這樣的情況下是無法正確安裝的可以用rpm --force -i強制安裝即可

    ... is needed by ... ... is not installed ...

    此包需要的一些軟件你沒有安裝可以用rpm --nodeps -i來忽略此信息,也就是說rpm -i --force --nodeps可以忽略所有依賴關系和文件問題,什么包都能安裝上,但這種強制安裝的軟件包不能保證完全發(fā)揮功能。

    2. 升級軟件包

  • 升級指定的軟件包,若沒有安裝,則會直接安裝此軟件包:
  • [root@linuxcool ~]# rpm -U package.rpm # 更新一個rpm包但不改變其配置文件
  • 升級一個確定已經安裝的軟件包:
  • [root@linuxcool ~]# rpm -F package.rpm

    通常情況下我們使用 -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-1

    4. 安裝 .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-KEY

    2. 從一個 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 软件包的管理工具的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。