linux程序包管理

      windows上我們安裝應用程序都是通過雙擊事先下載好.exe格式的應用程序進行的,那麼在linux中我們該如何安裝和卸載軟件呢,本文介紹下在linux中安裝軟件的三種方法:rpmyum、編譯。

      rpm

      rpm是以一種數據庫記錄的方式來將你所需要的軟件安裝到你的linux系統的一套管理機制。rpm最大的的特點就是將你要安裝的軟件先編譯過,並且打包成rpm機制的安裝包,通過包裝好的軟件裏頭默認的數據庫記錄這個軟件要安裝的時候必須具備的依賴屬性軟件,當安裝在你的Linux主機時,rpm會先依據軟件裏頭的數據查詢Linux主機的依賴屬性軟件是否滿足,若滿足則予以安裝,若不滿足則不予安裝。那麼安裝的時候就將該軟件的信息整個寫入rpm的數據庫中,以便未來的查詢、驗證與反安裝。

      各發行版程序包管理器:

           debian:dpt,dpkg,".deb"後綴

     redhat:redhat package manager,rpm,".rpm";rpm is package manager;

     S.u.S.E:rpm,".rpm"

   程序包管理器功能:將編譯好的應用程序的各組成文件打包成一個或幾個程序包文件,從而更方便地實現程序包的安裝、升級、卸載和查詢等管理操作;

      rpm包命名格式:

     name-VERSION-release.arch.rpm

        VERSION: major.minor.release

        release.arch:rpm包的發行號

   rpm命令:rpm [OPTIONS][PACKAGE_FILE]

     安裝:-i,--install

     升級:-U,--update,-F,--freshen

     卸載:-e,--erase

     查詢:-q,--query

     校驗:-V,--verify

     數據庫維護:--builddb,--initdb

     安裝:

        rpm{-i|--install} [install-options] PACKAGE_FILE ...

          rpm-ivh PACKAGE_FILE...:安裝

          rpm -e:卸載

          GENERALOPTIONS:

             -v:verbose,詳細信息

             -vv:更詳細的輸出

          [install-options]

             -h:hash marks輸出進度條,每個#表示2%的進度;

             --test:測試安裝,檢查並報告依賴關係及衝突消息等

             --nodeps:忽略依賴關係,不建議

             --replacepkgs:重新安裝

          注意:rpm包可以自帶腳本

             四類都不執行用--noscripts

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

               postinstall:安裝過程完成之後運行的腳本,%post,--nopost

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

               postuninstall:卸載過程完成之後運行的腳本,%postun,--nopostun

          --nosignature:不檢查包簽名信息,即不檢查來源合法性;

          --nodigest:不檢查包完整性信息;

     升級安裝包:

        rpm{-U|--upgrade} [install-options] PACKAGE_FILE ...

        rpm{-F|--freshen} [install-options] PACKAGE_FILE ...

          -U:升級或安裝;

          -F:升級,如果不存在老版本,則不升級也不安裝

          rpm-Uvh PACKAGE_FILE ...

          rpm-Fvh PACKAGE_FILE ...

             --oldpackage:降級安裝;

             --force:強制升級;

          注意:(1)不要對內核做升級操作;Linux支持多內核版本並存,因此,直接安裝新版本內核

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

     卸載軟件包:

        rpm{-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...

          --allmatches:卸載所有匹配指定名稱的程序包的各版本;

          --nodeps:忽略依賴關係

          --test:測試卸載,dry run模式

     查詢程序包:

        rpm{-q|--query} [select-options] [query-options]

          [select-options]

             PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本;

             -a,--all:查詢所有已經安裝過的包;

             -f 後跟文件路徑:查詢指定的文件由哪個程序包安裝生成

                  rpm-qf /etc/fstab

             -p,--packagePACKAGE_FILE:用於實現對未安裝的程序包執行查詢操作;

             --whatprovidesCAPABILITY:查詢指定的CAPABILITY由哪個程序包安裝;

             --whatrequiresCAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;

          [query-options]

             --changelog:查詢rpm包的changlog;

             -l,--list:程序包安裝生成的所有文件列表

             -i,--info:程序包相關的信息,版本號、大小、所屬的包組等等;

             -c,--configfiles:查詢指定的程序提供的配置文件;

             -d,--docfiles:查詢指定的程序包提供的文檔;

             --provides:列出指定的程序包所提供的所有CAPABILITY;

             -R,--requires:查詢指定的程序包的依賴關係

             --scripts:查看程序包自帶的腳本片段

        用法:

          -qa 列出所有的已經安裝在本機系統上的所有軟件名稱

          -qiPACKAGE 列出該軟件的詳細信息、包含開發商、版本與說明等

          -qfFILE 後面接文件,查詢系統的某個文件屬於哪一個軟件所有的

          -qcPACKAGE 列出該軟件的所有設置文件(找出在/etc/下面的文件名而已)

          -qlPACKAGE 列出該軟件所有的文件與目錄所在的完整文件名

          -qdPACKAGE  列出該軟件所有的幫助文件

          -qR 列出與該軟件有關的依賴軟件所含的文件

          -qpiPACKAGE_FILE

          -qplPACKAGE_FILE

          -qpcPACKAGE_FILE

       校驗:

        rpm{-V|--verify} [select-options] [verify-options]

       S file Size differs:文件的容量大小是否被改變

       M Modediffers (includes permissions and file type):文件的類型或文件的屬性是否被改變

       5 digest(formerly MD5 sum) differs:MD5這一種指紋碼的內容已經不同

       D Devicemajor/minor number mismatch:設備的主/次代碼已經改變

       LreadLink(2) path mismatch:link路徑已被改變

       U Userownership differs:文件的所有者已被改變

       G Groupownership differs:文件的所屬用戶組已被改變

       T mTimediffers:文件的創建時間已被改變;

       PcaPabilities differ

 

yum

   yum通過分析rpm的標題數據後,根據各軟件的相關性製作出屬性依賴的解決方案,然後可以自動處理軟件的依賴屬性問題,以解決軟件安裝或刪除與升級的問題;

   CentOS先將發佈的軟件放置到YUM服務器內,然後分析這些軟件的依賴性問題,將軟件內的記錄信息寫下來。然後再將這些信息分析後記錄成軟件相關性的清單列表。這些列表數據與軟件所在的位置可以稱爲容器。當客戶端有軟件安裝的需求時,客戶端主機會主動向網絡上面的yum服務器的容器網址下載清單列表,然後通過清單列表的數據與本機rpm數據庫已存在的軟件數據相比較,就能夠一口氣安裝所有需要的具有依賴性屬性的軟件了。整個流程可以簡單的用如下圖所示:

   spacer.gif

   當客戶端有升級、安裝的需求時,yum會向容器要求清單的更新,等到清單更新到本機的/var/cache/yum裏面後,等一下更新時就會用這個本機清單與本機的rpm數據庫進行比較,這樣就知道該下載什麼軟件。接下來yum會跑到容器服務器下載所需要的軟件,然後再通過rpm的機制開始安裝軟件。

   yum客戶端的配置:

           配置文件:

                 /etc/yum.conf:爲所有倉庫提供公共配置

                 /etc/yum.repos.d/*.repo:爲倉庫的指向提供配置

                 倉庫指向的定義:

                      [repositoryID]:代表容器的名字

                            name=Some name forthis repository:只是說明一下這個容器的意義而已

                            baseurl=url://path/to/repository:指定固定的一個容器網址。

                            enabled={1|0}:是否使用這個容器,1代表使用,0表示不使用

                            gpgcheck={1|0}:是否需要查閱rpm文件內的數字證書

                            gpgkey=URL:指明密鑰文件

                            enablegroups={1|0}是否支持組來進行批量管理

                            failovermethod={roundrobin|priority}url故障轉移方法

                                       默認爲隨機

                            cost=        開銷,默認爲1000

                      yum命令的用法:

                            yum [options][command] [package ...]

                      顯示倉庫列表:

                            repolist[all|enabled|disabled]

                      顯示程序包:

                            yum list

                      安裝程序包:

                            yum install

                      升級程序包

                            update package

                      降級

                            downupgrade package

                      檢查可用升級:

                            check-update

                      卸載程序包

                            remove|erase package

                      查看程序包的信息

                            info package

                      查看程序提供的特性(可以是某文件)是由哪個程序包所提供:

                            provides 包名             

                      清理本地緩存:

                            clean

                      構建緩存

                            makecache

                      搜索:

                            search 以指定的關鍵字搜索程序包名及summary信息

                      查看指定包依賴的capabilities

                            deplist package

                      查看yum事物歷史

                            yum history

                      安裝及升級本地程序包

                            localinstll

   如何使用光盤當作本地yum倉庫

           (1)掛載光盤至某目錄,例如/media/cdrom

                      mount -r -t iso9660/dev/cdrom /media/cdrom

           (2)創建配置文件

                 [CentOS 7]

                 name=

                 baseurl=

                 gpgcheck

                 enabled=

      yum的命令行選項:

           --nogpgcheck 禁止進行gpg check

           -y:自動回答爲“yes

           -q:靜默模式

           --disablerepo=repoidglob 臨時禁用此處指定的repo

           --enablerepo=repoidglob 臨時啓用此處指定的repo

           --noplugins 禁用所有插件

 

編譯

      程序包的編譯安裝步驟如下:

      第一步:configure腳本

                      選項:指定安裝位置、指定啓動的特性

                      --help:獲取其支持使用的選項

                            選項分類

                                  安裝路徑設定:

                                       --prefix=/PATH/TO/SOMEWHERE:指定默認安裝位置

                                       --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安裝位置

                                  system types

                                  optionalteatures:可選特性

                                  optionalpackage:可選包

           第二步:make

           第三步:makeinstall

      安裝後的配置:

           (1) 導出二進制程序目錄至PATH環境變量中;

                      編輯文件/etc/profile.d/NAME.sh

                            exportPATH=/PATH/TO/BIN:$PATH

           (2) 導出庫文件路徑

                      編輯/etc/ld.so.conf.d/NAME.conf

                            添加新的庫文件所在目錄至此文件中;

                      讓系統重新生成緩存;

                            ldconfig [-v]

           (3) 導出頭文件

                      ln -sv

           (4) 導出幫助手冊

                      編輯/etc/man.config文件

                            添加一個MANPATH 即時生效

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章