linux操作系統rpm軟件包管理

軟件包管理

軟件包運行環境:

API:Application Programming Interface
    使用標準:POSIX:
    源代碼運行步驟:預處理(如處理注釋)—>編譯成匯編代碼—>鏈接其他庫文件

ABI:application binary interpace
        file命令可以查看ABI接口類型
    file 文件名
Linux與windows的ABI接口不同
    Linux運行windows二進制文件:安裝wine
    windos運行Linux二進制文件:Cywin

包管理器:

功能:將編譯好的應用程序的組成文件打包一個或幾個程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、升級和校驗等管理操作
二進制文件組成部分
    二進制文件、庫文件、配置文件、幫助文檔
程序包管理:
    debian:deb文件,dpkg包管理器
    redhat:rpm文件,rpm包管理器
    rpm:rpm Package Manager
1、包文件組成 (每個包獨有)    RPM包內的文件    RPM的元數據,如名稱,版本,依賴性,描述等    安裝或卸載時運行的腳本2、數據庫(公共)
    程序包名稱及版本    依賴關系    功能說明    包安裝后生成的各文件路徑及校驗碼信息

rpm包命名方式

    8.png

舉例:gd-devel-2.0.35-11.el6.x86_64.rpm

gd是這個包的主包名,devel是這個包的分包名,2.0.35是表示版本信息,2為主版本號,0表示次版本號,35為源碼包的發行號也叫修訂號,

11.el6中的11是rpm的發行號,el6表示RHEL6,x86_64是表示適合的平臺。

常見的arch:
x86: i386, i486, i586, i686 ,x86_64: x64, x86_64, amd64,powerpc: ppc
跟平臺無關: noarch

包分類

    主包 :application-version-ARCH.rpm

    開發包:application-devel…

    工具包:application-utils…

包之間的關系:可能存在依賴甚至循環依賴

    解決依賴包管理工具:
    yum: rpm包管理器的前端工具
    apt- get: deb包管理器前端工具
    zypper: suse上的rpm前端管理工具
    dnf: Fedora 18+ rpm包管理器前端管理工具

包安裝路徑:rpm包在安裝時自動根據FHS將文件安裝在指定目錄下無需手動干預

編譯安裝:編譯安裝可以手動更改安裝路徑

程序包來源:

    (1) 系統發版的光盤或官方的服務器;
    CentOS鏡像:
    https://www.centos.org/download/
    http://mirrors.aliyun.com
    http://mirrors.sohu.com
    http://mirrors.163.com
    (2) 項目官方站點
    第三方組織:
    Fedora- EPEL:Extra Packages for Enterprise Linux
    Rpmforge:RHEL推薦,包很全
    搜索引擎:
    http://pkgs.org
    http://rpmfind.net
    http://rpm.pbone.net
    https://sourceforge.net/

    (4) 自己制作
    注意:檢查其合法性: 來源合法性,程序包的完整性

庫文件

    
    
    什么是庫文件:一種可執行代碼的二進制+形式,可以被操作系統載入內存執行。庫文件是別人寫好的、成熟的可復用的代碼,應用程序運行時直接加載調用即可。
  庫文件分類 
     
      靜態庫
     .a結尾
     編譯時直接加載   
      
    動態庫
     .so結尾
       在應用程序運行時加載
    
    查看二進制文件依賴的所有庫文件:ldd 二進制文件    
    管理及查看本機裝載的庫文件:   
    ldconfig    
    /sbin/ldconfig - p: 顯示本機已經緩存的所有可用庫文件名及文件路徑映射關系    
    配置文件: /etc/ld.so.conf, /etc/ld.so.conf.d/*. conf    
    緩存文件: /etc/ld.so.cach

rpm包管理

CentOS系統上使用 rpm命令管理程序包:
安裝

rpm -i|–install 包文件 

  -v:顯示安裝詳細信息

  -vv:顯示更詳細的安裝信息

  -h:以#號顯示安裝進度

 1.png

–test:測試安裝但不是真的安裝

–nodeps:忽略安裝依賴關系

–replacepkgs:覆蓋安裝,所有和軟件相關的包都重新安裝

–replacefiles:覆蓋文件,比如軟件A和軟件B需要相同的文件的時候,軟件A安裝了,再安裝軟件B可能出現出現文件已存在

–nosignature:不檢查包的完整性

2.png

    

卸載

升級
    install -U(update)  包名:如果有老版本就升級,如果沒有老版本則安裝
    install -F (freshen) 包名:如果有老版本就升級,如果沒有老版本則不執行升級操作
    --oldpackage:降級,當前系統中已經安裝的軟件的版本大于要安裝的軟件版本時,會不能安裝,需要添加此選項
    --force:強制升級,比如出現文件沖突等可使用者選項
內核升級:
    注意:
    (1) 不要對內核做升級操作; Linux支持多內核版本并存,因此,對直接安裝新版本內核
    
        (rpm -ivh 新內核文件安裝包)
        
    (2) 如果原程序包的配置文件安裝后曾被修改,升級時,新版本  的提供的同一個配置文件并不會直接覆蓋老版本的配置文件,而
    把新版本的文件重命名 (FILENAME.rpmnew)后保留

查詢

rpm -q[其他選項]
    其他選項:
    -a:查詢所有的安裝 |rpm -qa
    -f:查詢文件由哪個程序包安裝生成
    - p rpmfile:針對尚未安裝的程序包文件做查詢操作;
    -- whatprovides CAPABILITY:查詢指定的功能由哪個包所提供
    --whatrequires  capability :查詢指定的功能被哪個包依賴
    --changelog :查尋已經安裝的包的更改日志 :rpm -q --changelog vsftpd
    -c :查詢已安裝包的配置文件    rpm -q -c vsftpd
    -d :查詢程序的文檔
    -i :查詢安裝信息
    - l: 查看指定的程序包安裝后生成的所有文件
    -- scripts:程序包自帶的腳本片斷
    - R: 查詢指定的程序包所依賴的功能
    --provides :程序包所提供的功能

3.png

5.png

卸載:

    rpm -e 包名

校驗:

   定義:校驗已經安裝包的文件是否發生改變,不發生改變時無顯示結果
    rpm -V 包名
   
    不同改變顯示不同的結果
    S file Size differs
    M Mode differs (includes permissions and file type)
    5 digest (formerly MD5 sum) differs
    D Device major/minor number mismatch
    L readLink(2) path mismatch
    U User ownership differs
    G Group ownership differs
    T mTime differs
    P capabilities differ

    7.png

包校驗:

    包來源合法性驗正及完整性驗正:
        完整性驗正: SHA256
        來源合法性驗正: RSA
    公鑰加密:
        對稱加密:加密、解密使用同一密鑰;
        非對稱加密:密鑰是成對兒的
        public key: 公鑰,公開所有人
        secret key: 私鑰, 不能公開
   
    默認情況下操作系統無對包進行檢測的能力,需要導入所需要公鑰:
        rpm - K|--checksig rpmfile 檢查包的完整性和簽名
        rpm -- import /etc/pki/rpm- gpg/RPM- GPG- KEY- CentOS- 7
        CentOS 7發行版光盤提供: RPM- GPG- KEY- CentOS- 7
    卸載導入的公鑰
        rpm -qa gpg- pubkey*
        rpm -e    gpg-pubkey-f4a80eb5-53a7ff4b

    6.png

    

數據庫維護

    存放包安裝信息數據庫文件

        /var/lib/rpm

     rpm {– initdb| — rebuilddb}
        initdb: 初始化
        如果事先不存在數據庫,則新建之
        否則,不執行任何操作
        rebuilddb:重建
        無論當前存在與否,直接重新創建數據庫

   

原創文章,作者:wangnannan,如若轉載,請注明出處:http://www.www58058.com/36500

(0)
wangnannanwangnannan
上一篇 2016-08-22 09:30
下一篇 2016-08-22 09:30

相關推薦

  • 馬哥教育網絡班20期 第8周課程練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋:工作于數據鏈路層,實現多個lan之間數據的轉發,隔離沖突域,類似二層交換機。 集線器:工作于物理層,實現設備的接入,數據信號放大、中轉,共享信道。把一個端口接收的所有信號向所有端口分發出去 二層交換機:工作于數據鏈路層,可連接多個lan,根據幀的mac來轉發數據,隔離沖突域…

    Linux干貨 2016-08-15
  • find、locate、Gnome文件查找工具

    查找命令: ? ? ? ? locate:非實時查找 ? ? ? ? find:實時查找 ? ? ? ? Gnome:圖形化搜索工具 locate: 描述:查詢系統上預建的文件索引數據庫/var/lib/mlocate/mlocate.db,一天更新一次更新數據庫:updatedb特點:依賴于事先構建的索引。索引的構建是在系統較為空閑時自動進行(周期性任務)…

    Linux干貨 2017-11-26
  • Linux yum客戶端的配置及yum命令

    一、什么是yum我們在Linux系統上安裝處理軟件,一般是使用RPM,它是通過預先編譯完成并且把軟件打包為RPM文件格式后,再加以安裝的一種方式,使用者只要拿到這個打包好的軟件,然后將里頭的文件放置到應該擺放的目錄,這樣就完成了安裝。但是,由于有些軟件是有依賴于其他軟件的,當你要安裝某個RPM類型的軟件時,RPM會檢驗RPM軟件數據庫,它所依賴的相關軟件包是…

    2017-06-11
  • shell變量的淺談

    變量本質上是存儲數據的一個或多個計算機內存地址,變量的命令規則包括: 1) 不能使用程序中的保留字,如if, for 2) 變量由字母、下劃線和數字組成,且不能以數字開頭 3) 要求風名知義 4) 統一命名規則:駝峰命名法 變量主要分為本地變量、環境變量、局部變量、位置變量和特殊變量 (1)本地變量:只對當前shell…

    2017-08-05
  • 關于shell腳本基礎第二篇

                          shell腳本編程基礎第二篇 read命令 使用read來把輸入的值非配給一個或者多個shell變量,可以提示用戶輸入一些參數等,此時我們可以使用read命令來完成此功能 re…

    系統運維 2016-08-19
  • linux網絡管理之三

    cat /etc/hosts              可以做名字解析,黑客用來冒充網站IPcentos6 更改主機名          vim /etc/sysconfig/network      &nbs…

    2017-03-21
欧美性久久久久