Linux 基礎教程 34-軟體包管理-RPM

来源:https://www.cnblogs.com/surpassme/archive/2018/08/08/9445978.html
-Advertisement-
Play Games

    對於Linux而言管理各類軟體,如安裝、卸載和升級等是常有的事情和必備的技能。以CentOS為例,常用的安裝包命令有 rpm 和 yum 。 RPM基礎     RPM(RedHat Package Manager)是一個系統軟體包,功能類似於Wind ...


    對於Linux而言管理各類軟體,如安裝、卸載和升級等是常有的事情和必備的技能。以CentOS為例,常用的安裝包命令有rpmyum

RPM基礎

    RPM(RedHat Package Manager)是一個系統軟體包,功能類似於Windows中的添加/刪除程式,但又比添加/刪除程式功能更強。在Linux界廣泛使用的依然為各類開源軟體,也就是代碼是開放的,這些代碼通常會被打包為.tar.gz形式在互聯網上進行傳播,而這些開源軟體被下載後仍然需要編譯成二進位後才可以使用。這種試雖然相容性好,但使用起來卻不方便,存在一定的依賴關係,而文件較大時,編譯出錯的概率也非常大,對於日常使用人員也很麻煩。
    使用RPM可以很容易地對RPM形式的軟體進行安裝、升級、卸載、檢驗和查詢等操作。RPM可以讓用戶直接以binary方式安裝軟體包且可代替用戶查詢是否已經安裝了相關的庫文件。在用RPM刪除程式時,管理器會提示用戶是否要刪除相關程式。如果使用RPM進行升級,RPM會保留得得配置。另外RPM還保留了一個包含所有軟體包資料的資料庫,通過該資料庫可以查詢各個已經安裝的軟體包等等。

RPM使用

RPM安裝路徑

    Linux的目錄是有統一規範的,這個規範的作用是保證任何一個軟體都能找到另一款軟體、文件。

  • 可以運行的文件存放在/bin或/usr/bin目錄中
  • 庫文件存放在/lib或/usr/lib目錄中
  • 配置文件存放在/etc目錄

    一般,RPM類型的文件在安裝的時候,會先去讀取文件內記載的設置參數內容,然後將該數據用於比較Linux環境,從而找出是否有屬性依賴的軟體還沒有安裝的問題。使用RPM方式安裝的軟體,在完成安裝後,會將該軟體的相關信息寫入到/var/lib/rpm目錄下的資料庫文件中。該資料庫非常重要,如果軟體升級必須依賴它,如版本比對就是從這個資料庫中讀取數據的。

RPM組成部分

    RPM包含RPM資料庫RPM軟體包文件RPM命令三部分。

  • RPM資料庫

    Linux系統中保留了當前安裝軟體的資料庫,路徑位於/var/lib/rpm,可使用file命令查看目錄內容。
27-1 FileRPMDB_c2i.png

/var/lib/rpm目錄中的文件全部都是資料庫文件且為二進位。
  • RPM軟體包文件

    RPM軟體包與tar歸檔文件類似:tar文件含有要安裝到系統上的文件,軟體包除了tar中的信息還包含一個RPM包頭,該包頭提供了有關軟體包的信息,如名稱、安裝大小及其內容的簡短描述等。另軟體包還包含了屬性依賴信息,即為了使文件可被安裝和使用,必須安裝的其他軟體包、可執行文件和庫文件等。在Linux安裝光碟中,軟體包文件通常位於Packages目錄中。軟體包文件的名稱通常由下列幾條信息構成:

名稱-版本-發行號.體繫結構.rpm

    以CentOS 7中MySQL為例
27-2 RPM-Query.png

名稱:mysql-community-common
版本:5.7.20
發行號:1
體繫結構:el7.x86_64。el7代表CentOS 7.x系統,x86_64是指該軟體是針對哪種CPU架構開發的。
  • RPM命令

    RPM命令是用來管理資料庫的工具,如下所示:

命令選項 作用
-i 安裝軟體包
-U,-F 軟體包升級
-e 刪除軟體包
-q 查詢安裝包
-a 查詢的所有安裝包
-v 顯示安裝的詳細過程
-h 顯示安裝進度
--checksig 校驗簽名以確保其完整性和源發性
更多RPM命令解釋可以使用man rpm進行查看

RPM安裝

RPM包安裝格式如下:

rpm -i rpm包的全路徑及文件名
rpm -ivh rpm包的全路徑及文件名

其中各參數解釋如下:

  • -i:代表安裝
  • -v:代表verbose,在安裝過程中顯示詳細的信息
  • -h:代表hash,在安裝過程中將顯示#表示安裝進度
對於較大的RPM包,在安裝時需要使用-ivh,可以方便查看在安裝過程中的相應信息和進度。在安裝過程出現warning時並不影響軟體包的安裝,出現error則無法繼續安裝,需要排錯。

示例1:本地安裝VSFTPD
27-3 InstallVSFTPD.png

    在上面我們使用的是本地安裝,如果RPM軟體包不在本地時,如何安裝?RPM其實也支持線上安裝。
示例2:線上安裝VSFTPD
27-4 InstallVSFTPDOnline.png

可與rpm -i結合使用的參數如下所示:

命令選項 作用
-h,--hash 安裝輸出#代表安裝進度
-v,--verbose 1個-v選項列印軟體包名稱,多個-v選項提供更多詳細信息的輸出
--nodeps 即使不符合安裝前提條件,仍進行安裝
--replace-files 安裝時已有的文件會被新文件覆蓋替換
--force 即使已經安裝了軟體包,也要進行安裝
--test 不執行任何操作,只列印輸出
--noscripts 不執行與RPM安裝有關的任何腳本
--prefix 指定安裝rpm包安裝路徑

RPM卸載

    一旦安裝了軟體包,軟體包文件則無關緊要了,該軟體包現在就是本地電腦上面的一條資料庫記錄。因此,不再使用軟體包文件名稱,如vsftpd-3.0.2-22.el7.x86_64.rpm,而僅僅使用軟體包名稱,如vsftpd-3.0.2-22.el7.x86_64來指該軟體包,使用

rpm -e packagename

進行刪除軟體包,其中-e代表earse。

說明1:packagename:可以包含版本等信息,但不能包含尾碼名.rpm
說明2:rpm -e vsftpd-3.0.2-22.el7.x86_64(正確)
      rpm -e vsftpd-3.0.2-22.el7.x86_64.rpm(錯誤)

27-5 UninstallVSFTPD_c2i.png

RPM升級

    使用RPM升級軟體包非常方便簡單,主要參數是-U,當然也可以直接寫-Uvh或-Fvh,兩者區別如下:

-Uvh:如果軟體包沒有安裝,則直接安裝,如果要安裝的軟體包是新的版本,則軟體會進行自動更新為新的版本。
-Fvh:如果軟體包沒有安裝,則不會安裝,也即只能對已經安裝的軟體包進行升級

27-6 UpdatelVSFTPD_c2i.png

RPM查詢

    RPM軟體包查詢中與rpm -q package-name結合使用的一些選項和作用如下所示:

命令選項 作用
-a 查詢所有已安裝的軟體包
-f filename 擁有文件filename的軟體包
-p packagefilename 直接查詢軟體包文件packagefilename
-i 軟體包信息包頭
-l 列出軟體包所擁有的文件
--requires 安裝包的先決條件
--provides 顯示安裝包提供的內容
--scripts 顯示軟體包的安裝腳本
-last 按時間排序顯示系統上安裝的RPM包

1、查看已經安裝的RPM包信息和安裝的文件
27-7 QueryVSFTPD_c2i.png
2、查看RPM安裝包的依賴項、提供的內容及最近安裝包
27-8 QueryVSFTPDCondition_c2i.png
本文同步在微信訂閱號上發佈,如各位小伙伴們喜歡我的文章,也可以關註我的微信訂閱號:woaitest,或掃描下麵的二維碼添加關註:
MyQRCode.jpg


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

-Advertisement-
Play Games
更多相關文章
  • 寫在前面 整個項目都托管在了 Github 上: 查找更為方便的版本見:https://alg4.ikesnowy.com/ 這一節內容可能會用到的庫文件有 Quick,同樣在 Github 上可以找到。 善用 Ctrl + F 查找題目。 習題&題解 2.3.1 題目 按照 Partition() ...
  • 和老公結婚已經有三年了,從當時的熱戀到今天的不太交流,三年的時間我們從轟轟烈烈的戀愛到了今天過著平淡如水的日子。說句實話走到今天也實在是不太容易,有了孩子,有了車子和房子,卻再也不願意理對方,而這一切皆因為微信這個應用軟體的出現。 自從微信出現以後,老公每天下班再也不照看孩子,而他喜歡做的事情就是拿 ...
  • Partial關鍵詞定義的類可以在多個地方被定義,最後編譯的時候會被當作一個類來處理。 首先看一段在C 中經常出現的代碼,界面和後臺分離,但是類名相同。 public partial class Form1 : Form { public Form1() { InitializeComponent( ...
  • 博客園潛水了有兩年多,現在想分享一個可以說是幫助類吧。 我們在編寫程式的過程中,經常會用到一些方法,我只是把這些方法整合一下,方便使用,目前有md5,sha1,aes加解密,身份證驗證,敏感詞過濾,文件壓縮,圖片與base64互相轉換,時間戳與時間互相轉換,簡單的http請求,簡單的ftp上傳下載, ...
  • 系列文章 1. ".Net Core 分散式微服務框架介紹 Jimu" 2. ".Net Core 分散式微服務框架 Jimu 添加 Swagger 支持" 一、前言 最近有空就優化 "Jimu" (一個基於.Net Core 的分散式微服務框架),考慮到現在的開發組織都向前後端分離發展,前後端各司 ...
  • 1、錯誤如下: HTTP 錯誤 500.22 - Internal Server Error 檢測到在集成的托管管道模式下不適用的 ASP.NET 設置。 解決的方法: 首先,找到本地appcmd.xml的這個文件,然後進行下麵的操作: (1)運行 cmd,進命令行模式,cd到你IIS Expres ...
  • 微信的出現給我們的生活帶來了很大的便利,讓人與人之間的距離縮短了不少,即使在天涯海角也可以通過這個軟體溝通。近兩年隨著微信功能的不斷增強,先後又增添了微信紅包等功能,而這也吸引了更多的人使用微信。可是也時常會有人在生活中抱怨我的微信密碼被破解了怎麼辦這個問題,在這裡就教給大家如何將微信密友找回。 微 ...
  • 使用Dnc.Api.Throttle可以使您輕鬆實現WebApi介面的限流管理。Dnc.Api.Throttle支持IP、用戶身份、Request Header、Request QueryString等多種限流策略,支持黑名單和白名單功能,支持全局攔截和單獨Api攔截。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...