[9-5]Rpm與Yum安裝包管理知識梳理

本文旨在複習Linux上安裝包管理rpm與yum工具前端

知識儲備node


  • 所謂的包管理是指在Linux平臺上查詢、校驗、安裝、升級、卸載以及打包packageapache

  • 不一樣的Distribution Linux上包管理工具各不相同,最主流的有通吃RedHat/CentOS的RPM、YUM、DNF[新一代的前端管理工具],Debian上的APT管理工具centos

  • 一個程序包package通用組成部分緩存

    • 二進制程序:/bin, /sbin,/, /usr/bin, /usr/sbin,安全

    • 庫文件:/lib, /lib64, /usr/lib64架構

    • 配置文件:/etcide

    • 幫助文件:manual, info, readme.txt, install.txt等工具


RPM基礎知識post


RPM打包機制基於specs文件的打包,specs這個文件指揮着如何打包,按照何種規則組織包的元數據、包內容等等,可使用rpmbuild命令

RPM分包機制:有些程序在設計時除了核心功能外還有各類附加小功能,打包者選擇性組合這些功能對源碼程序打包,分爲了核心包和支包,核心包一般名爲software-version,支包一般爲software-devel-version

RPM包命名機制:5段命名法

wKioL1X3fvHD9Kg-AApC0EF_Inc946.bmp

包依賴關係

     一個包B的功能實現須要調用別包A的底層文件、服務、共享對象等,這種狀況下單獨安裝packageB是沒法成功的,須要安裝好A包[能夠強制忽略依賴關係安裝B包,可是功能可能會受影響]

 另外依賴關係可能有不少層,好比A包依賴B包C包,而B包又依賴D包等等,有可能無窮無盡也~

    wKioL1X3iFWwsqJ7AAG9OVDj3JE166.jpg

獲取RPM包


RPM管理程序包


RPM主要能實現對package安裝、升級、卸載、查詢、校驗等功能,並不能很好地解決依賴關係,須要手工安裝!

安裝與升級

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17


安裝:
    rpm {-i|--install} [install-options] PACKAGE_FILE ...
        -ivh:安裝包, v顯示安裝進度, 
        -ivvh: vv的做用是詳細顯示安裝了哪些文件, 還有vvv
        --nodeps:忽略依賴關係強制安裝, 可能致使軟件功能不正常
        --replacepkgs:重裝程序包

升級:
    rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
    rpm {-F|--freshen} [install-options] PACKAGE_FILE ...   

        -Uvh: 若是有舊版程序包,則升級之;若是沒有,則安裝之;
        -Fvh: 若是有舊版程序包,則升級之;若是沒有,則不安裝;

        --nodeps:忽略依賴關係
        --oldpackage:降級,要帶上這個參數
        --force:

:安裝sendmail包,須要依賴,強制忽略依賴關係進行安裝[只作演示,顯示狀況應妥善處理好依賴關係]

wKioL1X3mHWCzL0AAAKP5AasnmE253.jpg


卸載和查詢 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18


卸載:
     rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... 

查詢:
     rpm {-q|--query} [select-options] [query-options]
        -qa: 查詢本機已經安裝的全部程序包;
        -qf /PATH/TO/SOMEFILE: 查詢此處的文件由哪一個程序包安裝生成;

        -qc: 查詢指定程序包安裝生成的配置文件
        -qd: 查詢指定的程序包安裝生成的文檔
        -qi: 查詢指定的程序包的相關信息;
        -ql: 查詢程序包安裝生成的全部文件的列表;
        -q --scripts:查詢程序包相關的腳本:
            preinstall: 安裝前腳本
            postinstall:安裝後腳本
            preuninstall: 卸載前腳本
            postuninstall: 卸載後腳本
        -p: 查詢針對是未安裝的程序包文件;

:查詢本機已經安裝的全部package可使用rpm -qa,選擇openssl安裝包查看配置文件

wKiom1X3ltrRAAI1AAD3UktbRfU744.jpg


包檢驗 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18


校驗:
     rpm {-V|--verify} [select-options] [verify-options]
        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


包校驗:
        來源合法性驗正:非對稱加密
        完整性驗正:單向加密

        導入密鑰:rpm --import /PATH/TO/KEY_FILE
        校驗:rpm -K /PATH/TO/RPM_FILE

:導入一份密鑰文件,而且驗證/tmp/sendmail該package是否合法完整

wKiom1X3lX6BSBbqAAFPQ-FQxM0274.jpg


RPM幾個要點


 1.默認狀況下只可以處理安裝包,而不能解決依賴關係,依賴的包須要依次安裝,有順序

 2.包來源請儘可能確保安全,可使用密鑰進行合法性完整性驗證,推薦去較大的mirrors站點下載

 3.--nodeps能夠忽略依賴關係安裝,不推薦使用,可能致使若干問題

 4.--scripts腳本,某些package安裝、卸載先後可指定一些官方或自定義的腳原本實現定製或自動化


YUM基本知識


RPM最大缺點是須要手動解決依賴關係,而YUM應運而生,可以自動解決依賴關係,極大方便安裝

YUM工做的機制依賴於配置文件[即YUM源]、倉庫、倉庫元數據文件,大體以下

YUM還能擁有插件機制,實現加強功能

wKioL1X33rqzKT1UAAF9ZZzQZFY444.jpg

簡要的yum流程

    1.用戶使用yum前,須要在/etc/yum.repos.d/*.repo下指定yum源,就是指定所謂的包倉庫

 2.包倉庫有大量rpm包,還有元數據文件,記錄了包列表、依賴關係等,這能夠提供快速查詢、解決依賴

 3.使用yum安裝某個包,會去倉庫A的元數據文件中經過列表查找該包及依賴關係,分析後自動安裝解決依賴

 4.爲了加速查詢分析依賴[也能夠說省帶寬],一般會將倉庫提供的元數據文件緩存一份到本地,你懂得


YUM相關配置文件


yum的配置文件主要有3類,yum全局配置文件 、倉庫repo配置文件、插件[安全]配置目錄

/etc/yum.conf 全局配置文件,設置了是否緩存、調試等級、日誌文件、插件開關等,建議不修改

/etc/yum/  插件[安全]配置目錄,在pluginconf.d中能夠配置插件,如fastestmirror.conf最快鏡像插件

/etc/yum.repos.d/*.repo:倉庫配置文件,每個*.repo文件能夠規定一個或者多個倉庫, 語法以下:

repo文件語法 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22


定義一個倉庫指向:
[REPO_ID]
    name=倉庫名
    baseurl=倉庫地址
        請注意倉庫地址可使用ftp, http, file本地等
        ftp://ftp.aliyun.com/packages
        http://mirrors.aliyun.com/centos/6.7
        file:///mnt/DVD_CentOS_6.7/Packages 

        nfs://server/nfs_path
    # mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE
    
    能夠設置多個mirror能夠從中選取
    enabled={1|0}   是否啓用該倉庫
    gpgcheck={1|0}  是否對倉庫包進行合法性、完整性驗證,須要密鑰文件
    gpgkey=         當啓用驗證後,須要指明密鑰文件位置
    cost=           倉庫優先級

定義倉庫指向可用變量:
    $releasever: 引用當前系統的主版本號;
    $basearch: 當前系統的基本架構;
    i386, i486, i586, i686: i386

http://mirrors.magedu.com/CentOS/$releasever/os/$basearch

:掛載安裝盤DVD2到/mnt目錄下,新建一個yum源指向該倉庫

wKioL1X35puQ7pQLAAF-qw-Pmg8859.jpg

wKioL1X35qXhSyDfAADmP03BNYs397.jpg


yum管理程序包


相比RPM,yum在管理程序包很方便,經常使用用法總結以下

yum命令 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30


Usage:
    yum [options] [command] [package ...]
命令:
安裝:install
卸載:remove
升級:update
查詢: info
        search KEYWORD
        list all|installed|availiable
        provides /PATH/TO/SOMEFILE: 查詢指定文件由哪一個包安裝生成

從新安裝:reinstall
降級:downgrade
清理緩存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
生動生成緩存:makecache

包組:一個包組整合了實現某一特定需求功能的一系列包的集合!
        grouplist
        groupinfo "GRP_NAME"
        groupinstall "GRP_NAME"
        groupremove "GRP_NAME"

倉庫:
        repolist [all|enabled|disabled]
        repoinfo [all|enabled|disabled]

建立本地倉庫:
        yum install createrepo
        
        createrepo /PATH/TO/RPMFILES/

:使用yum安裝tree包[tree包能夠樹狀層級顯示文件目錄結構的],觀察yum流程

wKiom1X35lKR-ToXAAO38OodSlI510.jpg

相關文章
相關標籤/搜索