Linux基礎之軟件包管理 RPM 及 YUM

RPM(軟件包管理器)

英文原義:RPM Package Manager(原Red Hat Package Manager,現在是一個遞歸縮寫

註解:一種用於互聯網下載包的打包及安裝工具,它包含在某些Linux分發版中。它生成具有.RPM擴展名的文件。與Dpkg類似。

RPM 是Red-Hat Package Manager(RPM軟件包管理器)的縮寫,這一文件格式名稱雖然打上了RedHat的標誌,但是其原始設計理念是開放式的,現在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分發版本都有采用,可以算是公認的行業標準了。

RPM包格式:name-version.type.rpm  軟件名-版本號.包類型.rpm
安裝:rpm -i /PATH/TO/RPM包名全稱
卸載:rpm -e RPM包名
升級:rpm -U RPM包名
查詢:rpm [參數] RPM包名
常用參數:
        rpm -vh                    //顯示安裝進度
        rpm -qa                    //查詢系統中安裝的所有RPM軟件包
        rpm -q RPM包名             //查詢指定軟件包是否已安裝
        rpm -qp RPM包文件名         //查詢包中文件信息,安裝前瞭解軟件包中信息
        rpm -qi RPM包名            //查詢系統中已安裝包的描述信息
        rpm -ql RPM包名            //查詢系統中已安裝包裏所包含的文件
        rpm -qf RPM包名            //查詢系統中指定文件所屬的軟件包
        rpm -qa | grep php         //檢索系統中已經安裝有關php的軟件包
        rpm --noscript             //不安裝腳本
        rpm --nosignature          //不檢查合法來源
        rpm --nodigest             //不檢查完整性
驗證:rpm -V [參數]

Tar(Linux系統命令)

Unix類Unix系統上的壓縮打包工具,可以將多個文件合併爲一個文件,打包後的文件後綴亦爲“tar”。tar文件格式已經成爲POSIX標準,最初是POSIX.1-1988,當前是POSIX.1-2001。本程序最初的設計目的是將文件備份到磁帶上(tape archive),因而得名tar。

tar命令是Unix/Linux系統中備份文件的可靠方法,幾乎可以工作於任何環境中,它的使用權限是所有用戶。

tar代表未壓縮的tar文件。已壓縮的tar文件則附加壓縮文件擴展名,如經過gzip壓縮後的tar文件,擴展名爲“.tar.gz”。由於受到DOS8.3文件名格式的限制,常使用下列縮寫:

  • .tgz等價於.tar.gz

  • .tbz與tb2等價於.tar.bz2

  • .taz等價於.tar.Z

  • .tlz等價於.tar.lzma

  • .txz等價於.tar.xz

建立TAR包:將多個文件或目錄打包成一個文件
tar -cvf TAR包名.tar /PATH/TO/<文件或目錄名>   //只打包不壓縮 
tar -zcvf TAR包名.gz /PATH/TO/<文件或目錄名>   //將指定目錄或文件打包後壓縮,指定壓縮格式爲gz
tar -jcvf TAR包名.bzip2 /PATH/TO/<文件或目錄名>   //將指定目錄或文件打包後壓縮,指定壓縮格式爲bzip2
tar -Jkc --level=9 -f TAR包名.xz /PATH/TO/<文件或目錄名>    //將指定目錄或文件打包後壓縮,指定壓縮格式爲XZ,壓縮級別爲9(默認爲6),並且強制執行,壓縮後保留源文件
查詢TAR包中內容
tar -tf /PATH/TO/TAR包名.tar
tar -ztf /PATH/TO/TAR包名.tar.gz
tar -tvf /PATH/TO/TAR包名.tar.xz
釋放TAR包
tar -xvf /PATH/TO/TAR包名.tar
tar -zxvf /PATH/TO/TAR包名.gz
tar -xvf /PATH/TO/TAR包名.xz -C /newpath/    //將壓縮包解壓到指定的目錄,通用的解壓縮格式

將 /etc 目錄打包後壓縮:

解壓縮剛纔打包的 etc.tar.xz 文件到 /tmp 目錄下:


src源代碼包

Linux上幾乎所有的軟件都經過了GPL授權,因此幾乎所有的軟件都會提供源碼。而一個軟件要在Linux上執行,必須是二進制文件,因此當我們拿到軟件源碼後,需要將它編譯成二進制文件才能在Linux上運行。

安裝前先釋放tar包
查看Install和Readme文件,瞭解安裝和編譯過程
進行編譯準備:執行./configure命令+make命令進行編譯
進行軟件安裝:執行make install命令
清除臨時文件:執行make clean命令

下面我們編譯安裝 HTTP2.4 ,首先將 httpd-2.4.41.tar.gz 文件下載到本地:

解壓縮到 /tmp 目錄下:

查看 INSTALL 和 README 後 執行 ./configure 生成Makefile文件(由於編譯時間太長省略過程,只看結果):

接下來使用 make 命令進行編譯,執行前先進行 make clean 清除之前編譯過的文件,防止編譯安裝出錯(由於編譯時間太長省略過程,只看結果):

編譯安裝一切正常,下面啓動 /usr/local/bin/apachectl 並查看 HTTPD進程、端口監聽是否正常:

查看網頁顯示:


YUM

Yum(全稱爲 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器。基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。可供Yum下載的軟件包包括Fedora本身的軟件包以及源自rpmfusion和rpm.的Fedora Extras,全部是由Linux社區維護的,並且基本是自由軟件。所有的包都有一個獨立的PGP簽名,主要是爲了您的系統安全。而對於Fedora core 4.0 的用戶,rpm.的簽名是自動導入並安裝的。

剛纔在編譯安裝過程中省略了一些庫文件和依賴包的安裝過程,如果使用 RPM 包安裝的話會非常麻煩,下面我們介紹使用 yum 來對RPM包進行管理,可以通過在yum的本地配置文件裏設置URL來指定軟件包的位置,方便以後選擇安裝某些程序包;yum可以自動處理包依賴關係,使安裝更方便;    可以通過ftp、http、本地file等方式連接指定的文件服務器上的yum倉庫。


yum命令說明

常用的選項有:

yum 配置文件默認目錄位置爲 /etc/yum.repo.d :

系統默認使用 CentOS官方yum源,爲了方便快捷,我們改爲使用國內的 aliyun 或者 163 作爲yum源,將原先的配置文件 mv 到 /bak/yum下備份:

下載 163 的 yum 源文件:

  • CentOS 7
  • wget -O /etc/yum.repos.d/base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
  • CentOS 6
  • wget -O /etc/yum.repos.d/base-163.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo

下載好 repo 文件後,清除 yum 緩存,重新生成:


下面手動創建一個以光盤爲介質的本地 yum 源,名稱爲 localrepo :

清除緩存後重新生成:

這裏發現網絡源跟本地源同時存在,要想優先使用本地源的話,需要安裝一個插件 yum-plugin-priorities:

確保 yum-plugin-priorities 插件已經開啓:

下面將本地 localrepo 作爲優先選擇源,priority 權限取值爲1~99,默認的權限爲99,值越小權限越高,1 爲最高

驗證一下是否選擇本地源作爲安裝優先:

插件開啓前:

插件開啓後:

發現啓用插件後安裝源已經由 base 改爲 localrepo 


爲了方便使用本地源,在使用光盤時自動掛載,需要安裝 autofs :

  • auto.master 配置文件裏的 /misc 是默認掛載目錄,也可以自定義
  • auto.misc 配置文件中註明了虛擬目錄 cd ,這個目錄不用創建,如果有多個光驅只需要在這裏添加一行即可

  • 當需要掛載光驅時,autofs 會自動將光驅掛載至 /misc/cd 目錄下
  • 有多個光驅時,autofs默認只先掛載第一個,有需要時纔會掛載後續的光驅
  • 這裏要注意光驅中必須有介質,不然會掛載失敗


使用 createrepo 命令創建本地網絡 yum

實驗環境: centos 7 192.168.10.2 server yum

          centos 6 192.168.10.7 client 

將 server yum 作爲本地 client 的網絡 yum 源

在 server 端創建存放 rpm 包的目錄(這裏使用HTTP模式,需要先安裝、配置、啓動好HTTP服務): 

掛載 centos6 安裝光盤並複製光盤上的 所有 .rpm 文件到剛纔創建的目錄下:

複製完成查看一共有 6575 個文件,返回上級目錄,使用 createrepo 命令來創建 yum 倉庫:

注意:不能再Packages目錄下執行

命令執行成功後會在該目錄下創建一個repodata目錄:

repodata作爲軟件的倉庫,其目錄下有四個必要文件:filelists.xml.[gz],other.xml.[gz],primary.xml.[gz]和repomd.xml(md 意思是 metadata),其中最主要的是repomd.xml文件,存放軟件包的元數據。

  • 一般出現的找不到repodata目錄或文件的錯誤的原因通常有三個:
  • 一是路徑問題,repodata目錄必須和packages目錄同層
  • 二是沒有生成repodate目錄
  • 三是*.repo配置文件衝突(這個需要特意注意)

在 client 端編輯 102.repo 文件:

將原先的 local.repo 暫停使用:

在 client 端清空 yum 緩存,並且重新生成,查看 yum 源是否爲 server yum 源:

在 server yum 源添加或者刪除一些 rpm 包後,可以使用 createrepo --update 來更新本地源:


使用 epel 源

EPEL (Extra Packages for Enterprise Linux)是基於Fedora的一個項目,爲“紅帽系”的操作系統提供額外的軟件包,適用於RHEL、CentOS和Scientific Linux.

  • 安裝 epel-release 軟件包,這個軟件包會自動配置yum的軟件倉庫。
  • yum -y install epel-release
  • 使用國內的阿里雲 epel 源 
  • wget -O /etc/yum.repos.d/epel-aliyun.repo http://mirrors.aliyun.com/repo/epel-7.repo
  • 編輯配置文件,修改 enabled=1 


  • 使用國內 yum 源

  • aliyun
  • CentOS 7
  • wget -O /etc/yum.repos.d/base-aliyun.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  •  
  • CentOS 6

  • wget -O /etc/yum.repos.d/base-aliyun.repo http://mirrors.aliyun.com/repo/Centos-6.repo
  •  
  • 163

  • CentOS 7

  • wget -O /etc/yum.repos.d/base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
  •  
  • CentOS 6
  • wget -O /etc/yum.repos.d/base-163.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo

  • 更新 Epel 源  

  •  官方 epel 源      https://dl.fedoraproject.org/pub/epel/    

  • CentOS 7.X:

  • rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

  • CentOS 6.X:

  • rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

  •  
  • aliyun epel 源
  •  
  • wget -O /etc/yum.repos.d/epel-aliyun.repo http://mirrors.aliyun.com/repo/epel-7.repo
  • wget -O /etc/yum.repos.d/epel-aliyun.repo http://mirrors.aliyun.com/repo/epel-6.repo
  •  

  • Webtatic yum 源 更新 PHP    https://mirror.webtatic.com/yum/      

  • CentOS 7.X :

  • yum install epel-release
  • rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

  • yum localinstall -y  http://mirror.webtatic.com/yum/el7/webtatic-release.rpm

  • yum install mod_php72w php72w-opcache php72w-fpm php72w-common php72w-cli php72w-embedded php72w-mysql
  •  
  • CentOS 6.X :

  • rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

  • yum localinstall -y  http://mirror.webtatic.com/yum/el6/webtatic-release.rpm

  •  


  • PHP yum  remi 源      http://rpms.remirepo.net/enterprise/   

  • CentOS 7.X :

  • rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

  • rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

  • CentOS 6.X :

  • rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-6.rpm

  • rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

  •  


  • nginx  yum 官方源   http://nginx.org/packages/    

  • CentOS 7.X :

  • rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

  • CentOS 6.X :

  • rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

  •  


  • MariaDB yum 源

  • 導入GPG key

  • rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

  • vim /etc/yum.repos.d/MariaDB.repo
  • 官方源
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.1/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1

       enabled=1

  • 或者使用國內中科大源
  • [mariadb]
    name = MariaDB
    baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.1/centos7-amd64/
    gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
    gpgcheck=1

      enabled=1


  • 安裝和使用'yum-utils'來維護Yum並提高其性能
  • yum -y install yum-utils 

  •  


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