程序包管理

什么是程序包管理器?

    顧名思義,就是將編譯好的應用程序的各組成文件打包成一個或多個程序包文件,從而更方便地實現程序包的安裝、升級、卸載還有查詢等管理操作。

那么一個程序包又由哪些部分組成呢?

程序包的組成清單:

  文件清單(每個程序包都單獨實現):  

    安裝或卸載時運行的腳本,有如下四類:

    preinstall : 安裝過程開始之前運行的腳本,%pre定義 —nopre

    postinstall: 安裝過程完成之后運行的腳本,%post定義    —nopost

    preuninstall : 卸載過程真正開始執行之前運行的腳本,%preun定義 —nopreun

    postuninstall: 卸載過程完成之后運行的腳本,%postun定義    —nopostun

  數據庫部分:

    存儲程序包的名稱和版本

    包與包的依賴關系

    各包的功能說明

    程序安裝生成的各文件的文件路徑及檢驗碼信息

正確獲取安裝程序包的途徑

 1、系統發行版的光盤或官方的文件服務器(或鏡像站點)

   例如:
     http://mirros.aliyun.com
     http://mirros.sohu.com
     http://mirros.163.com

 2、項目的官方站點
 3、第三方組織

   例如:
     a、EPEL
     b、搜索引擎:
         http://pkgs.org
         http://rpmfind.net
         http://rpm.pbone.net

安裝前注意事項:

 1、檢測程序包來源合的法性
 2、檢測程序包的完整性

CentOS系統上rpm命令管理程序包

    RPM是RPM Package Manager(RPM軟件包管理器)的縮寫,用于軟件包后綴為.rpm程序的安裝、升級、卸載、查詢和校驗及數據庫維護。

安裝:

    命令格式:
        rpm {-i|--install} [install-options] PACKAGE_FILE ...
    常用選項:
        GENERAL OPTIONS:
            -v:verbose,詳細信息
            -vv:更詳細的輸出

        [install-options]:
            -h:hash marks輸出進度條;每個#表示2%的進度
            --test:測試安裝,檢查并報告依賴關系及沖突消息等
            --nodeps:忽略依賴關系,不建議
            --replacepkgs:重新安裝   
            --nosignature:不檢查包簽名信息,不檢查來源合法性
            --nodigest:不檢查包完整性信息
    常用組合:
        rpm -ivh PACKAGE_FILE ...

升級:

    命令格式:
        rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
        rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
    常用選項:
        OPTIONS:
            -U:升級或安裝
            -F:升級
        [install-options]:   
            --oldpackage:降級
            --force:強制升級
    常用組合:
        rpm -Uvh PACKAGE_FILE ...
        rpm -Fvh PACKAGE_FILE ...

        注:如果某原程序包的配置文件安裝后曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpm.new)后提供

卸載:

    命令格式:
        rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
    常用選項:
        -e : 刪除指定程序
        --allmatches:卸載所有匹配指定名稱的程序包的各版本
        --nodeps:忽略依賴關系
        --test:測試卸載,dry run模式

查詢:

    命令格式:
        rpm {-q|--query} [select-options] [query-options]
    常用選項:       
        [select-options]
            PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本
            -a,--all:查詢所有已安裝過的包
            -f FILE:查詢指定的文件有哪個程序包安裝生成
            -p, --package PACKAGE_FILE:用于實現對未安裝的程序包執行查詢操作
            --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供
            --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個程序包依賴

        [query-options]
            --changelog:查詢rpm包的changelog
            -l, --list:程序安裝省的所有文件列表
            -i, --info:程序包相關的信息,版本號、大小、所屬的包組,等
            -c, --configfiles:查詢指定的程序提供的配置文件
            -d, --docfiles:查詢指定的程序包提供的文檔
            --provides:列出指定的程序包提供的所有的CAPABILITY
            -R, --requires:查詢指定的程序包的依賴關系
            --scripts:查看程序包自帶的腳本片段
    常用組合:
        -qi -qc -ql -qd 
        -qpi -qpc -qpl -qpd

校驗:

    命令格式:
        rpm {-V|--verify} [select-options] [verify-options]
    常用選項:
        -V PACKAGE_FILE: 自動檢查其數據的完整性及合法性
        -K PACKAGE_FILE: 手動檢查其數據的完整性及合法性
        --import KEY : 手動導入GPG KEY
    說明:
        S file Size differs,文件大小改變了
        M Mode differs (includes permissions and file type),文件權限改變了
           5 digest (formerly MD5 sum) differs,MD5校驗碼變了
           D Device major/minor number mismatch,主次設備不匹配
           L readLink(2) path mismatch,read link變化了
           U User ownership differs,屬主改變了
           G Group ownership differs,屬組改變了
           T mTime differs,修改時間變了
           P caPabilities differ,CAPABILITY變了

數據庫重建:

    rpm管理器數據庫路徑:
        /var/lib/rpm/
    重建方法:
        rpm {--initdb|--rebuilddb}
    選項說明:
        --initdb:初始化數據庫,當前無任何數據庫可初始化創建一個新的,當前有時不執行任何操作
        --rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建
        --dbpath:指明庫的路徑,一般用于重建

yum前端程序包管理工具

     Linux平臺中軟件的安裝都由源碼文件編譯成二進制文件后再運行,存在很多的制作好的rpm程序包,制作方在制作的過程中把通常不常用的功能去除進行編譯打包,或者再將不同功能的包進行單獨編譯打包,提供多個功能程序包,這個情況下安裝軟件時,一個功能包或者程序會依賴于其他程序的庫文件,甚至有的時候會出現死循環依賴,導致軟件的安裝不正常工作或者根本安裝不成功。此yum工具就是為了有效解決程序之間的依賴關系,其將諸多程序的包信息和頭文件提取出來,放到一個集中的地方,記錄其依賴關系。在下次安裝的時候,均于存儲的庫文件查找相應的對應關系,再安裝所依賴的軟件程序。

yum客戶端配置文件

    /etc/yum.conf:為所有倉庫提供公共配置
    /etc/yum.repos.d/*.repo:為倉庫的指向提供配置
    倉庫的定義:
        [repositoryID]:ID名稱,即倉庫名稱,不可與其他ID重名
        [name=Some name for this repository]:對ID名稱的說明
        baseurl=url:/path/to/repositry/
                url2
                url3
                    注:如果同一個源有多個鏡像,可以在此寫多個,但每個URL需換行
        enabled={1|0}:是否啟用此yum倉庫
        gpgcheck={1|0}:檢查來源法性和完整性
        gpgkey=url:gpg密鑰文件
        enablegroups={1|0}:是否在此倉庫中上使用組來指管理程序包
        failovermethod={roundrobin|priority}:對多個baseurl做優先級的,roundrobin為輪循,priority為優先級,默認為輪循,意為隨機
        cots=
            默認為1000

yum的repo配置文件中可用的變量

        $releasever:當前os的發行版的主版本號
        $arch:平臺
        $basearch:基礎平臺
        $YUM0-$YUM9:用戶自定義的變量

yum命令:

    命令格式:
        yum [options] [command] [package ...]
    常用選項:
        —nogpgcheck : 禁止進行gpg check
        -y : 自動回答為Yes
        -q  : 靜默模式
        —enablerepo : 臨時啟用此處指定的repo
        —disablereop :臨時禁用此處指定的reop
        —noplugins:禁用所有插件

    顯示倉庫列表:
        yum repolist [all|enabled|disabled]

                all : 查看全部的倉庫
                enabled : 查看可用的倉庫
                disabled : 查看不可用的倉庫


    顯示程序包:
        yum list [all | glob_exp1] [glob_exp2] [...]

        yum list {available | installed | updates} [glob_exp1] [...]

                all : 顯示所有倉庫中的包
                available : 顯示可用的軟件包
                updates : 顯示可用于升級的包
                installed : 顯示已經安裝的包

    安裝程序包:
        yum install package1 [package2] [...]

        yum reinstall package1 [package2] [...] (重新安裝)

    升級程序包:
        yum update [package1] [package2] [...]

        yum downgrade package1 [package2] [...] (降級)

    檢查可用升級:
        yum check-update

    卸載程序包:
        yum remove | erase package1 [package2] [...]

    查看程序包information(簡要信息):
        yum info [...]

    查看指定的特性(可是某文件)是由哪個程序包所提供:
        yum  provides | whatprovides feature1 [feature2] [...]    

    清理本地緩存:
        yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

            packages:程序包
            metadata:元數據
            expire-cache:過期緩存
            rpmdb
            plugins:插件
            all:以上全部                                    

    構建緩存:
        um makecache [fast]

    搜索:
        yum search string1 [string2] [...]
            以指定的關鍵字搜索程序包名及summary信息

    查看指定包所依賴的capabilities:
        yum deplist package1 [package2] [...]

    查看yum事務歷史:
        yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

    安裝及升級本地程序包:
        yum localinstall rpmfile1 [rpmfile2] [...]
               (maintained for legacy reasons only - use install)
        yum localupdate rpmfile1 [rpmfile2] [...]
               (maintained for legacy reasons only - use update)

    包組管理的相關命令:

        yum groupinstall group1 [group2] [...]

        yum groupupdata group1 [group2] [...]

        yum grouplist [hidden] [groupwildcard] [...]

        yum groupremove group1 [group2] [...]

        yum groupinfo group1 [...]

配置發行版光盤作為yum repository方法:

    第一步:
        掛載光盤至某目錄,例如/media/cdrom
                # mount -r -t ios9600 /dev/cdrom /meidia/cdrom
    第二步:
        創建配置文件: /etc/yum.repos.d/*.repo
            [CentOS 7]  
            name=  
            baseurl=  
            gpgcheck=  
            enabled=  
    第三步:
        顯示倉庫列表: 
             yum repolist all

源碼編譯安裝:

     CentOS作為服務器,要求軟件的穩定性比較高,因此發布的軟件一般都比較老,然而,有的時候我們需要某些軟件新的功能,這種時候如果沒有可用的安裝包,就需要使用軟件提供的源代碼,在CentOS下進行編譯安裝。編譯安裝顧名思義就是需要先進行對軟件的源代碼進行編譯,然后安裝編譯之后的軟件文件。在CentOS/Linux下編譯軟件的源代碼,一般會涉及編譯器,關聯庫等。

開源程序源代碼的獲?。?/h3>

    1、官方自建站點:
        apache.org(ASF)
        mariadb.org
        …

    2、代碼托管:
        SourceForge
        Github.com
        cade.googlr.com
        …

編譯安裝的前提:

     在CentOS中,如果要進行對軟件的編譯安裝,我們一般需要提供開發工具及開發環境??梢愿鶕约旱膶嶋H情況對開發環境進行配置,這種情況下,通過“包組”提供開發組件對我們來說已經就足夠了。例如:CentOS 6編譯c源代碼可安裝"Development Tools"包組。

編譯安裝步驟:

    第一步:configure腳本
        選項:指定安裝位置、指定啟用的特性

        --help:獲取其支持使用的選項
            選項分類:
                安裝路徑設定:
                    --prefix=/PATH/TO/SOMEWHERE:指定默認安裝位置,默認為/usr/local
                    --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安裝位置
                    system typs:

                    Optional Features:可選特性
                    --disable-FEATURE
                    --enable-FEATURE[=ARG]

                    Optional Packages:可選包
                    --with-PACKAGE[=ARG]
                    --without-PACKAGE

    第二步: make

    第三步:make install

    安裝后的配置:
        (1)導出二進制程序目錄至PATH環境變量中
            編輯文件/ect/profile.d/NAME.sh
                export PATH=/PATH/TO/BIN:$PATH
        (2)導出庫文件路徑
                編輯/etc/ld.so.conf.d/NAME.conf
                    添加新的庫文件所在目錄至此文件中
        (3)導出頭文件
            基于鏈接的方式實現
                    ln -sv
        (4)導出幫助手冊
            編輯/etc/man.config文件
                添加一個MANPATH

 

原創文章,作者:641348038@qq.com,如若轉載,請注明出處:http://www.www58058.com/63844

(0)
641348038@qq.com641348038@qq.com
上一篇 2016-12-16 09:50
下一篇 2016-12-16 12:29

相關推薦

  • 第五周作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; [root@centos6 ~]# grep "^[[:space:]]\+" /boot/grub/grub.conf         &…

    Linux干貨 2017-01-16
  • 文本處理相關工具

    文本工具       操作系統中,文本的處理這一操作,比如操作一些內容,查看一些內容等等這些東西在linux中都得借助工具來完成對文本的操作。下面來說說對文本處理的工具;  其中:        查看文件內容工具:more、less、cat     &nbsp…

    Linux干貨 2016-08-05
  • linux 系統啟動流程

    假設以個人架設的linux主機為例:當你按下電源鍵之后,計算機硬件會主動讀取BIOS來加載硬件信息及進行硬件系統的自我測試,之后系統會主動讀取系統第一個可啟動的設備,此時就可以讀入引導裝載程序了。 引導程序可以指定使用哪個內核文件來啟動,并實際加載內核到內存中解壓縮與執行,此時內核就能夠開始在內存內活動,并檢測所有硬件信息,與加載適當的驅動程序來使這部主機開…

    Linux干貨 2016-09-12
  • 2016-10-17作業

    1 生產環境發現一臺服務器系統時間產生偏差,造成服務異常,請幫忙校正。 date命令查看系統時間,clock或者hwclock命令查看硬件時間, 將系統時間同步到硬件時間的方法hwclock -s   2 生產有一個數據同步腳本需要執行很長時間,怎樣做到無人值守,在管理工具退出的情況下,腳本依然能正常運行。在生產環境的中創建SCREEN會話,會話的…

    Linux干貨 2016-10-18
  • 第六周作業 bash編程學得好痛苦啊,啊啊啊~~需要挺??!

    請詳細總結vim編輯器的使用并完成以下練習題 VIM很強大,但是萬變不離其宗,最核心的三模式以下圖表示: 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; :%s/^[[:blank:]]\+.*/\0#/g 2、復制/boot/grub/grub.conf至/…

    Linux干貨 2016-12-19

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-23 12:30

    贊~yum相關的知識總結的比較全面了,主要是在工作中要靈活運用~繼續加油~

欧美性久久久久