天天看點

Linux中的軟體包管理:源代碼形式,RPM軟體包,YUM軟體包

本篇部落格的内容都來自Linuxcast.net的linux學習視訊,這是自己整理的學習筆記,分享出來大家一起學習,并且這也是我第一次寫部落格,有什麼問題請不吝賜教,在這裡不勝感激。

這篇的内容偏向于理論,沒有實踐操作,後續可能會進行補充。

Linux中的軟體包管理有三種形式,源代碼形式,RPM軟體包,YUM軟體包

源代碼形式

        絕大數開源軟體以源代碼的形式釋出;源代碼一般會打包成tar.gz的歸檔壓縮檔案;程式源代碼需要編譯成為二進制形式後才能夠有使用。

源代碼基本編譯流程:

   1.    ./configure   檢查編譯環境,相關庫檔案以及配置參數并且生成makefile

   2.    make     對源代碼進行編譯,生成可執行檔案

   3.    make install  将生成的可執行檔案安裝到目前計算機中

優點:

        1.使用源代碼形式,編譯出來的軟體就是針對某個平台的,相容性好。

        2.可在編譯之前進行某些配置,可控性好。

        适用于所有系統,可定制

缺點:

        使用起來麻煩,源代碼之間有大量的依賴關系,也就是說一個開源軟體可能會使用到其他開源軟體的功能,在安裝時可能需要先安裝所依賴的開源軟體;

        編譯時間長,極易出現錯誤。

RPM軟體包管理

RPM:redhatPackage Manager,由ErikTroan和MarcEwing開發

RPM通過将源代碼基于特定平台系統便以為可執行檔案,并且儲存相應的依賴關系

設計目标:使用簡單;使用單一軟體封包件釋出(.rpm);可更新;追蹤軟體依賴關系;基本資訊查詢;軟體驗證功能呢;支援多平台

未能解決的問題:可以追蹤軟體依賴關系,但不能自己解決

                             無法解決跨平台問題,也就是說不同的平台需要編譯出不同的RPM包

RPM基礎指令:

 rpm -i software.rpm                  安裝軟體

 rpm -e software                        解除安裝軟體

rpm -U software-new.rpm          更新形式安裝

rpm支援通過http,ftp協定安裝軟體:  rpm -ivh http://www.xxxxx.com

可加入如下參數:-v   顯示相應資訊 ;   -h 顯示進度條

RPM查詢:

rpm -qa     列出這個作業系統當中安裝的所有的rpm軟體

rpm -qi   packagename    可查詢該軟體的所有資訊

rpm -qf  filename            查詢目标檔案屬于哪個rpm包

rpm -ql    packagename  查詢指定已安裝rpm軟體包含的檔案

rpm -qip  software.rpm    查詢rpm檔案的資訊

rpm -qlp  software.rpm    查詢rpm檔案包含的檔案

RPM驗證:

軟體在傳播的過程中可能會被惡意的修改,是以為來安全起見系統中都會對軟體加入驗證功能。驗證一般使用非對稱加密算法,是以需要一個密鑰

導入密鑰:    

        rpm  --importRPM-GPG-KEY-CentOS-6(每個發行版本都有自己的密鑰)

驗證rpm檔案:   rpm -K  software

驗證已安裝的軟體: rpm -V software(用于查詢作業系統中的某些檔案是否在安裝後被修改過)

YUM

YUM:YellowdogUpdater,Modified,是一個RPM的前端程式,目的是設計用于自動解決RPM的依賴關系問題。也就是用來管理RPM包的

特點: 

        自動解決依賴關系

        可對RPM進行分組,并基于組進行安裝操作

        引入倉庫概念,支援多個倉庫

        配置簡單

YUM引入倉庫(repo)的概念,倉庫用來存放所有現有的rpm軟體包

        當用yum安裝一個rpm軟體時,如果存在依賴關系,會自動在倉庫中查找依賴關系并且安裝。倉庫可以是本地的,也可以是通過HTTP,FTP或NFS形式集中的網絡倉庫。

YUM倉庫:

        yum倉庫用于儲存管理rpm軟體包,倉庫的配置檔案儲存在/etc/yum.repos.d/目錄下:

        格式:

                 [base]  

                 name=CentOS-$releasever- Base

                 #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra

                 baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

                 gpgcheck=1

                 enabled=1

                 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

        解釋:[xxx]倉庫的名稱;name 倉庫的基本資訊;baseurl 倉庫的基本路徑,有時候也會用mirrorlist,用于動态地擷取baseurl;gpgcheck 用于是否打開校驗;如果沒有                   enabled屬性,則預設是開啟的,也就是值為1

yum配置檔案必須以.repo結尾;一個配置檔案内可以包含多個倉庫的配置資訊;/etc/yum.repos.d/可以儲存多個配置檔案

YUM基本指令:

yum install softwarename        安裝指定檔案(這裡實際上是安裝rpm軟體包)

yum remove softwarename      解除安裝指定檔案

yum update softwarename       更新指定檔案

YUM查詢:

yum search keyword     搜尋,基于關鍵字的

yum list (all | installed | recent | updates)    列出全部的,已安裝的,最近的,軟體更新;其中,installed會顯示出已經安裝的軟體,并且以安裝的軟體前面會加上一個“@”符号

yum  info packagename   顯示制定軟體的資訊

yum whatprovides filename   查詢哪個rpm軟體包包含目标檔案

建立YUM倉庫

手工建立:

        1.将所有的rpm檔案拷貝到一個檔案夾中

        2.通過rpm指令手工安裝createrepo軟體:rpm -ivhcreaterepo.xxx,這個也可以用yum直接安裝

        3. 運作指令createrepo -v /rpm-directory(yum倉庫的絕對路徑,建立好後會出現repodata檔案夾)

        4.如果有分組資訊,則在運作指令的時候使用-g參數自定分組檔案

                 createrepo -g/tmp/*comps.xml  /rpm-directory

建立好後,本機可以通過file方式直接使用,如果需要作為對外的YUM倉庫伺服器,可以通過HTTP,FTP或NFS協定共享出去

倉庫建立好後,需要在/etc/yum.repos.d/中添加一個配置檔案,将它指向建立的倉庫:

   vim myrepo.repo

                 [myrepo]  

                 name=MyRepo

                 baseurl=file://建立的倉庫的絕對路徑

                 gpgcheck=1

                 enabled=1

建立完成後需要使用yum clean all 來清楚緩存資訊。 

繼續閱讀