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
下一篇 2016-08-22

相關推薦

  • M22 Centos設置yum源方法

    實驗目的: 使用虛擬機模擬建立yum源服務器,在客戶機上指定yum源為該服務器。 實驗器材: WMware12安裝Centos6.8虛擬機作為yum服務源 WMware12安裝Centos7.3 作為客戶端訪問yum源服務器 實驗原理圖: 實驗過程: 服務器端: 1、  顯示已經掛載的光盤 #cd /misc/cd #先執行此命令才可以看到光盤掛載…

    2017-03-06
  • 磁盤管理和高級文件系統管理-習題

    高級文件系統管理-習題 1、 創建一個可用空間為40G 的RAID1 設備,要求其chunk大小為128k ,文件系統為ext4 ,有一個空閑盤,開機可自動掛載至/backup目錄 [root@centos7 ~]# mdadm -C /dev/md0 -c 128 -a yes -l 1 -n 2 -x 1 /dev/sdb /dev/sdc /dev/s…

    Linux干貨 2016-09-01
  • GOPS2017全球運維大會 ? 深圳站將在深圳召開!

    第六屆GOPS2017全球運維大會(本次)將于2017年4月21日-22日在深圳舉行,歷屆金牌講師精選亮相,各種精彩等您發掘?;顒蛹覟镚OPS2017全球運維大會提供在線報名!在線報名地址:https://www.huodongjia.com/event-231365274.html 大會亮點 眾多國外重量級嘉賓在路上 ? 目前正在和各位大咖商榷行程中,主會…

    2017-04-10
  • java基礎篇—內存分析

    Java的并發采用的是共享內存模型(而非消息傳遞模型),線程之間共享程序的公共狀態,線程之間通過寫-讀內存中的公共狀態來隱式進行通信。多個線程之間是不能直接傳遞數據交互的,它們之間的交互只能通過共享變量來實現 同步是顯式進行的。程序員必須顯式指定某個方法或某段代碼需要在線程之間互斥執行。 1、多線程通信 1.1 內存模型 Java線程之間的通信由Java內存…

    Linux干貨 2015-03-16
  • vim簡單實用的技巧總結

    vi 和 vim無需過多的區分,vim可認為是vi的增強版。        這篇關于vim的手冊,我個人覺得實在無法把它寫成文章,只能以手冊的方式列舉出來,因為,vim是一個動手使用的工具,只能在使用中你才能慢慢發現它的操作多么符合邏輯,我從下面這些簡略的描述中,盡量將它的操作步驟寫出來,但更重要的…

    Linux干貨 2015-09-14
  • 馬哥教育網絡班21期+第五周課程練習

    第五周作業 1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; cat /boot/grub/grub.conf  | grep "^[[:space:]]\+" 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至…

    Linux干貨 2016-10-17
欧美性久久久久