Linux命令(7)rpm命令

来源:https://www.cnblogs.com/shijunxian/archive/2020/05/19/12914050.html
-Advertisement-
Play Games

[toc] rpm是什麼? rpm的全稱為 The RPM Package Manager ,是RHEL系操作系統的軟體包管理器,這些軟體包的尾碼為.rpm。 RPM命令用於在Linux系統上安裝,卸載,升級,查詢,列出和檢查RPM軟體包。 安裝 i,安裝軟體包 v,顯示命令執行過程 h,輸出進度條 ...


目錄

rpm是什麼?

rpm的全稱為The RPM Package Manager,是RHEL系操作系統的軟體包管理器,這些軟體包的尾碼為.rpm。

RPM命令用於在Linux系統上安裝,卸載,升級,查詢,列出和檢查RPM軟體包。

安裝

rpm  -ivh  PACKAGE_FILE ...
  • -i,安裝軟體包
  • -v,顯示命令執行過程
  • -h,輸出進度條,以#的個數顯示安裝進度,一個#表示2%的進度

示例1:安裝zsh軟體包

[root@node1 ~]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-28.el7                 ################################# [100%]

升級

rpm  -Uvh PACKAGE_FILE ...
rpm  -Fvh PACKAGE_FILE ...
  • -U,升級或安裝,安裝有舊版程式包,則升級,如果不存在舊版程式包,則安裝。

  • -F:升級,安裝有舊版程式包,則升級,如果不存在舊版本程式包,則不執行升級操作。

示例2:將zsh軟體包進行升級

[root@node1 ~]# rpm -Uvh zsh-5.0.2-34.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-34.el7                 ################################# [ 50%]
Cleaning up / removing...
   2:zsh-5.0.2-28.el7                 ################################# [100%]

卸載

rpm -e PACKAGE_NAME ...

示例3:卸載zsh軟體包

[root@node1 ~]# rpm -e zsh

查詢

示例4:使用 rpm -qa 查詢當前系統上以rpm方式安裝的所有軟體包

[root@node1 ~]# rpm -qa 
plymouth-scripts-0.8.9-0.33.20140113.el7.centos.x86_64
grub2-common-2.02-0.81.el7.centos.noarch
virt-what-1.18-4.el7.x86_64
setup-2.8.71-11.el7.noarch
...
  • -q,查詢
  • -a,查詢所有已經安裝的包

示例5:使用 rpm -q 查詢指定的軟體包

[root@node1 ~]# rpm -q zsh
zsh-5.0.2-34.el7.x86_64

示例6:使用 rpm -qf 查詢指定的文件或目錄是由哪個軟體包所安裝的

[root@node1 ~]# rpm -qf /bin/ls
coreutils-8.22-24.el7.x86_64
  • -f,--file,文件名

示例7:使用 rpm -qi 查詢安裝的軟體包的信息

[root@node1 ~]# rpm -qi zsh
Name        : zsh
Version     : 5.0.2
Release     : 34.el7
Architecture: x86_64
Install Date: Mon 18 May 2020 08:25:37 AM EDT
Group       : System Environment/Shells
Size        : 5856302
License     : MIT
Signature   : RSA/SHA256, Fri 03 Apr 2020 05:10:32 PM EDT, Key ID 24c6a8a7f4a80eb5
Source RPM  : zsh-5.0.2-34.el7.src.rpm
Build Date  : Tue 31 Mar 2020 09:31:30 PM EDT
Build Host  : x86-02.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://zsh.sourceforge.net/
Summary     : Powerful interactive shell
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor.  Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements.  Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.
  • -i,--info,信息

示例8:使用 rpm -qc 查詢指定的軟體包在當前系統中安裝的配置文件

[root@node1 ~]# rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
  • -c,--configfiles,配置文件

示例9:使用 rpm -qd 查詢指定的軟體包在當前系統中安裝的文檔文件

[root@node1 ~]# rpm -qd zsh
/usr/share/doc/zsh-5.0.2/BUGS
/usr/share/doc/zsh-5.0.2/CONTRIBUTORS
/usr/share/doc/zsh-5.0.2/FAQ
/usr/share/doc/zsh-5.0.2/FEATURES
/usr/share/doc/zsh-5.0.2/LICENCE
...
  • -d,--docfiles,文檔

示例10:使用 rpm -ql 查詢指定的軟體包在當前系統中安裝的所有目錄

root@node1 ~]# rpm -ql zsh
/bin/zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
/usr/lib64/zsh
/usr/lib64/zsh/5.0.2
  • -l,--list,列表

示例11:使用 rpm -qR 查詢指定的軟體包所依賴的軟體包

[root@node1 ~]# rpm -qR zsh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/zsh
/sbin/install-info
/sbin/install-info
config(zsh) = 5.0.2-34.el7_8.2
coreutils
grep
  • -R,--requires,列出此軟體包所依賴的功能

示例12:使用 rpm -q --scripts 查詢指定的軟體包自帶的腳本

[root@node1 ~]# rpm -q --scripts zsh
postinstall scriptlet (using /bin/sh):
if [ ! -f /etc/shells ] ; then
    echo "/bin/zsh" > /etc/shells
else
    grep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shells
fi
...
  • --scripts,列出在安裝和卸載過程中使用的特定於軟體包的腳本。

校驗

驗證軟體包會將軟體包中已安裝文件的信息與從rpm資料庫中存儲的軟體包元數據中獲取的文件的信息進行比較。

rpm -V PACKAGE_FILE ...

包來源合法性驗證和完整性驗證

  • 來源合法性驗證:SHA256
  • 完整性驗證:RSA

軟體包製作者首先使用單向加密演算法,計算包的特征碼,然後使用私鑰加密特征碼然後附加至軟體包尾部,製作者的公鑰需要讓任何人都拿到,通常在發行光碟中都有公鑰。軟體安裝者使用公鑰對軟體進行來源合法性驗證和完整性驗證。

獲取並導入信任的包製作者的公鑰:

對於CentOS發行版來說

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

驗證:

​ (1) 安裝此組織簽名的程式時,會自動執行驗證;

​ (2) 手動驗證:rpm -K PACKAGE_FILE

示例:以安裝epel源中的fping軟體為例,先不導入公鑰。

[root@node1 ~]# wget https://mirror.tuna.tsinghua.edu.cn/epel/7/x86_64/Packages/f/fping-3.10-4.el7.x86_64.rpm
[root@node1 ~]# rpm -ivh fping-3.10-4.el7.x86_64.rpm 
warning: fping-3.10-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:fping-3.10-4.el7                 ################################# [100%]

示例:以安裝epel源中的fping軟體為例,導入公鑰後再進行校驗。

[root@node1 ~]# wget https://mirror.tuna.tsinghua.edu.cn/epel/RPM-GPG-KEY-EPEL-7
[root@node1 ~]# rpm --import RPM-GPG-KEY-EPEL-7
[root@node1 ~]# rpm -ivh fping-3.10-4.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:fping-3.10-4.el7                 ################################# [100%]

示例:如何查看當前系統上已經導入的公鑰。

[root@node1 ~]# rpm -q gpg-pubkey
gpg-pubkey-352c64e5-52ae6884
gpg-pubkey-f4a80eb5-53a7ff4b

資料庫維護

rpm包的資料庫位於/var/lib/rpm目錄中。

  • --initdb初始化,如果事先不存在資料庫,則新建之,否則,不執行任何操作。

  • --rebuilddb:重建,無論當前存在與否,直接重新創建資料庫。

[root@node1 ~]# ls /var/lib/rpm
Basenames     __db.001  __db.003  Group       Name          Packages     Requirename  Sigmd5
Conflictname  __db.002  Dirnames  Installtid  Obsoletename  Providename  Sha1header   Triggername

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 《ASP.NET MVC 5 編程實戰》 [作者] (美) Dino Esposito[譯者] (中) 潘麗臣[出版] 清華大學出版社[版次] 2015年03月 第1版[印次] 2015年03月 第1次 印刷[定價] 59.80元 【前言】 Web Forms 的最常見應用場景是,你要開發專註於呈現 ...
  • NuGet: Dapper 2.0.35 MySql.Data System.Data 實體(Entity) 1 public class student 2 { 3 public int Id { get; set; } 4 public string RealName { get; set; } ...
  • 上一篇文章(https://www.cnblogs.com/meowv/p/12896177.html)已經成功創建了博客項目,但是abp預設給我們引用了許多項目中用不到的組件。 本篇文章將給項目進行瘦身,刪掉對我們來說暫時用不到的組件。講解各個模塊之間的關係,寫一個Hello World,讓其成功 ...
  • 在上一篇,大概介紹了Entity Framework Core關於關係映射的邏輯。在上一篇中留下了EF的外鍵映射沒有說,也就是一對一,一對多,多對一,多對多的關係等。這一篇將為大家細細分析一下,如何設置這些映射。 1. 實體之間的關係 從數據表來考慮,兩個表之前的關係有一對一,一對多(多對一)和多對 ...
  • static void MockHeartBeatViaWhileTrue() { while (true) { Console.WriteLine($"Now is {DateTime.Now.ToString("yyyyMMddHHmmssffff")}"); Thread.Sleep(2000 ...
  • 目 錄 1. 概述... 2 2. 平臺演示... 2 3. 增加按鈕組態元件... 2 4. 組態圖元旋轉及動畫... 3 5. 後臺容器管理... 3 6. 重新啟動後臺iNeuKernel設備容器服務... 4 7. 重新載入後臺iNeuKernel設備容器配置... 5 8. 下發設備控制命 ...
  • 在圓形佈局中說過極坐標。 極坐標是長度和邊與極軸之間的角度的坐標表示。 換句話說,只要知道角度和長度(與中心點的距離),我們就能求出這一點的坐標,相對的我們知道這個一點的XY坐標也能求出角度和長度。 極坐標的工具性真的很強,在繪圖,動畫上 有很大的幫助,計算過程要簡單不少。 下麵我給出一個簡單的小慄 ...
  • 現在賬號密碼太多了。一不小心就忘了某些密碼,比如Centos的root密碼,我就記錄下怎麼解決的 1. 首先,打開centos7,在選擇進入系統的界面按“e”鍵進入編輯頁面 ​ 2. 然後按向下鍵,找到以“Linux16”開頭的行,在該行的最後面追加 “init=/bin/sh” ​ 接下來按“ct ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...