N25第五周總結:程序包管理

程序包管理:rpm、yum、編譯詳解

rpm詳解:

一:大綱

       1、什么是rpm

       2、為什么要使用rpm

       3、rpm能實現什么功能

       4、rpm命令詳解

 

二、正題

1、什么是rpm

        rpm全稱 RPM Package Manager,是一款行業標準的軟件包管理器。在rpm未出現之前,linux上的程序包都是以源碼方式存在,需要經過復雜的編譯,才能能在linux系統上安裝。

        因為編譯方式異常復雜,絕大部分人都無法正常完成編譯工作,所以大大局限了linux的使用范圍。因此,各大發行商都自己研發出了一套程序包管理器,可以代替人工完成編譯工作,rpm就是redhat下一款比較通用的程序包管理器。

 

2、為什么要使用rpm

         因為當下redhatcentos較其他發行版占比更高,最主要rpm功能比較強大,使用比較方便,所以非常有必要熟練掌握rpm命令的相關功能。

 

3、rpm能實現什么功能

         rpm作為一款非常成熟的程序包管理器,可實現針對程序的安裝、升級、卸載、查詢與校驗,且可對成程序安裝包進行校驗、查詢。

 

4、rpm命令詳解

         rpm  <options>  <PACKAGE|PACKAGE_FILE|FILE>

        

         安裝:-i

             rpm  -i[install-option]  PACKAGE_FILE(程序安裝包)

             install-option:

                   -vverbose,詳細信息;

                    -vv更加詳細的信息;

                    -hhash marks,輸出進度條,每個#代表2%的進度;

                     經典示例:

                                                   

N25第五周總結:程序包管理

  


              –test測試安裝,檢查并報告依賴關系及沖突;

                           rpm  -ivh –test  PACKAGE_FILE

 

               –nodeps忽略依賴關系;

                           rpm -ivh –nodeps PACKAGE_FILE

                 

                    –replacepkgs重新安裝;

                           rpm  –ivh  –replacepkgs PACKAGE_FILE

 

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

                           rpm -ivh –nosignature PACKAGE_FILE

 

                    –nodigest不檢查包完整性信息;

                           rpm  -ivh –nodigest PACKAGE_FILE

 

         升級:

             rpm  -U[install-option]  PACKAGE_FILE

             rpm  -F[install-option]  PACKAGE_FILE

                     -U:升級或安裝,如未安裝,則執行安裝;

                     -F:升級,只執行升級;

       

                  rpm  -<U|F>vh    PACKAGE_FILE

                    N25第五周總結:程序包管理

 

                 install-option:

                      –oldpackage:降級安裝;

                           rpm  -Uvh –oldpackage  PACKAGE_FILE

                           

                       –force          強制升級;

                           RPM  -Uvh  –force  PACKAGE_FILE

 

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

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

 

         卸載:-e

             rpm  -e[options]  PACKAGE(已安裝的程序)

             rpm  –evh

 

                options:

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

                    –nodeps忽略依賴關系

                –test測試卸載,干嚎模式

 

                N25第五周總結:程序包管理

 

         查詢:-q

              rpm -q [select-options][query-options]  <PACKAGE|PACKAGE_FILE>

                [select-options]

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

                      -f查詢指定的文件有那個程序包安裝生成;

                   N25第五周總結:程序包管理

                                    

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

                                                                                                                                                 功能

                    –whatprovides CAPABILITY查詢指定的CAPABILITY由哪個程序寶提供;

                     N25第五周總結:程序包管理

 

          –whatrequires CAPABILITY查詢指定的CAPABILITY被哪個包所依賴;

                     N25第五周總結:程序包管理

            [query-options]

                       –changelog查詢rpm包的changlog;

                       -l         程序安裝生成的所有文件列表;

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

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

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

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

                       -R                   查詢指定的程序包的依賴關系

                       –scripts         查看程序包自帶的腳本片段;

 

        用法:

         針對已安裝程序:

                                -qi   PACKAGE

                                   -ql   PACKAGE

                            -qf   FILE

                                   -qc   PACKAGE

                                   -ql    PACKAGE  

                                   -qd   PACKAGE

                            …..

            N25第五周總結:程序包管理

 

            N25第五周總結:程序包管理

 

         針對rpm安裝包:

                                 -qpi   PACKAGE_FILE

                                   -qpl   PACKAGE_FILE

                                   -qpc   PACKAGE _FILE

                                    -qpl    PACKAGE_FILE

                                    -qpd   PACKAGE_FILE

                            …..

            N25第五周總結:程序包管理

 

             N25第五周總結:程序包管理

 

                N25第五周總結:程序包管理

 

         校驗:-V

        一般情況下,rpm會自動校驗已安裝的rpm

             來源合法性驗證

             完整性驗證

             rpm -V PACKAGE

                  

                導入信任的包制作者密鑰:

                        rpm  –import

                          密鑰位置:

                                /etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-#

                                鏡像中的 RPM-GPG-KEY-CentOS-#

                             N25第五周總結:程序包管理

 

         驗證rpm安裝包:

                  安裝時會自動驗證安裝包;

                  手動驗證:

                        rpm -k PACKAGE_FILE

         數據庫重建:

                  rpm 管理器數據庫路徑:/var/lib/rpm

                       查詢操作:通過此處的數據庫進行

                              centOS 6

                                            rpm {–initdb|rebuilddb}

                                                  –initdb初始化數據庫,當前無任何數據庫可初始化創建一個新的;當前有時不執行任何操作;

                                                  –rebuilddb重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新構建;

 

                                centOS 7

                                          rpmdb  {–initdb|rebuilddb}

                                             –initdb初始化數據庫,當前無任何數據庫可初始化創建一個新的;當前有時

                                                 –rebuilddb重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新構建;

 

         注:構建數據庫時非常占用資源,如果系統正在繁忙時謹慎使用?。?/span>

 

 

rpm總結:

         rpm作為目前linux系統中最常用的程序包管理器,其強大的功能是功不可沒的。通過高度靈活的選項可以完成諸多管理操作,所以熟練掌握rpm命令是管理程序的不二法寶。

 

 

 

yum詳解:

一、大綱

         1、什么是yum

         2、為什么要使用yum

         3yum能實現什么功能

         4、yum實現與各命令詳解

 

二、正題

1、什么是yum

         yum全稱為 Yellow dog Updater, Modified,是一款運行在redhatcentos中的shell前端程序包管理器。能夠從指定的服務器自動下載RPM包并且安裝,(或從本地yum倉庫中下載安裝)可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。

 

2、為什么要使用yum

       雖然rpm功能強悍,但是rpm有一個致命的確定:無法解決程序依賴關系。這在程序管理中至關重要,因為一個程序或許依賴于眾多程序才能運行,而眾多程序中的某個程序又會依賴其他程序。。。這樣會使程序的安裝工作變得異常繁瑣,嚴重影響了程序使用。所以這時就出現了一款能解決程序依賴關系的程序包管理器–yum。使用yum,最重要的是可以解決程序依賴關系,為批量安裝程序節省了大量的時間。

 

3yum能實現什么功能

       yum功能與rpm類似,在解決依賴關系的基礎上能實現對程序的安裝、升級、卸載、查詢、降級等。yum還可以在本地將所需要的rpm包手動創建為yum倉庫,自動解決依賴關系。yum可支持ftp、http、file等常見協議,為yum提供更好的兼容性。

 

4yum實現與各命令詳解

yum可通過兩種方式實現:一種是直接加載網上的yum倉庫,前提是必須能連上互聯網;另一種是加載本地yum源來實現安裝。

 

         首先說一下yum配置文件:(大寫單詞表示可自定義)

                   /etc/yum.conf這個是yum的主配置文件,都是一些全局配置,一般如果沒有特殊需求的話不用配置;

                  /etc/yum.repo.d/*.repo這個是yum倉庫的配置文件,每一個文件可以配置多個yum倉庫;

想要實現yum倉庫,首先必須要配置/etc/yum.repo.d/NAME.repo,其結構如下:

                [repositoryID]          :自定義名稱與文件名相同

                       name=NAME                   :倉庫的名稱,可自定義

                    baseurl=url://         :倉庫的具體地址,可以為ftp://  http://  file:///協議;

                                url://            :為鏡像地址,鏡像原必須與上面相同,可以不寫;

                    enable={1|0}            :默認為1,表示啟用,0為關閉此yum倉庫;

                    gpgcheck={0|1}           :表示是否需要檢查次yum的來源,0為關閉;

                    gpgkey=URL               :提供檢查來源的地址

                    enablegroups={1|0}          :是否支持組管理

                    failovermethod={rounrobin|priority}:如有多個url時的選擇模式,默認為輪詢;

                                     輪詢    優先級

                  cost=                  :開銷,表示如有多個repo文件時,讀取此文件的優先級;

 

:粗體表示的參數是必須的,其他的可以省略;

 

配置yum倉庫:

如果是網絡上的yum倉庫,則baseurl直接寫入網絡yum倉庫的地址,如下:

              編輯/etc/yum.repo.d/NAME.repo (注:NAME是可自定義的)

                               [repositoryID]

                               name=NAME

                               baseurl=url:// (寫入網上的yum倉庫地址)

                               enable=1

                               gpgcheck=0

                               然后保存退出即可

 

如果是本地的,則如下:

         本地倉庫的安裝包都在原版鏡像下的Packageos6,7)下,所以可按照以下步驟參考進行;

         mkdir /mnt/repo

         mount /dev/cdrom  /mnt/repo (如果鏡像已經加載,清先卸載后重新掛載到指定目錄)

         編輯/etc/yum.repo.d/NAME.repo (注:NAME是可自定義的)

                    [repositoryID]

                    name=NAME

                    baseurl=file:///mnt/repo

                    enable=1

                    gpgcheck=0

                   然后保存退出即可

 

                   以上yum倉庫就部署完畢

        

         yum的用法:

              yum [options] [command] [package …]

                        因為yum的參數太多,可使用 –help來詳解,以下只列出一些常用和實用的選項

                  

           顯示倉庫列表:

                   yum repolist [all|enabled|disabled]

                N25第五周總結:程序包管理

 

           顯示程序包:

                   yum list

                         #  yum list [all | glob_exp1]  [glob_exp2] […]

                         #  yum list [available|installed|updates]  [glob_exp1] […]

                                  有但未安裝               glob表達式

                N25第五周總結:程序包管理 

 

                N25第五周總結:程序包管理

 

           安裝程序包:

                     yum install [PACKAGE1,PACKAGE2…..]

                     yum reinstall [PACKAGE1,PACKAGE2…..]  reinstall:重新安裝)

                     注:在安裝的過程中會彈出: N25第五周總結:程序包管理

                            輸入y繼續安裝;

                N25第五周總結:程序包管理

 

           降級安裝:

               yum downgrade package1 [package2] […]

     

        升級程序包:

                    yum update [package1] [package2] […]

 

        檢查可用升級:

             yum  check-update

 

        卸載程序包:

            N25第五周總結:程序包管理

             會提示是否卸載,選擇是

 

        查看程序包:

                 yum info package

            N25第五周總結:程序包管理

        

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

                   yum  provides | whatprovides  feature1 [feature2] […]

            N25第五周總結:程序包管理

 

        清理本地緩存:

               yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

        N25第五周總結:程序包管理

 

           構建緩存:

               yum makecache

              N25第五周總結:程序包管理

           搜索:    以指定的關鍵字搜索程序包名及summary(摘要)信息;

                            yum search string1 [string2] […]

                N25第五周總結:程序包管理

 

           查看指定包所依賴的程序及其提供的capabilities(功能):

                    yum deplist package1 [package2] […]

                N25第五周總結:程序包管理

 

        查看yum事物歷史:

            history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

                 示例:yum history list

              N25第五周總結:程序包管理

        安裝及升級本地程序包:

                   localinstall rpmfile1 [rpmfile2] […]

                      (maintained for legacy reasons only – use install)

                   localupdate rpmfile1 [rpmfile2] […]

            注:在實際工作中,可直接使用install后跟包名,yum會自動識別安裝包并解決依賴關系;

 

            包組管理命令:

                        yum還支持包組管理,使用方法同單個安裝類似,只是加了group,例如:

                                   grouplist[hidden] [group wildcard] […]

                                    groupinstallgroup1 [group2]

                     groupupdate: group1 [group2]

                     groupremove group1 [group2]

                     groupinfo: group1 [group2]

 

                yum的命令行選項:(命令行權限大于配置文件)

                     -y表示自動安裝,無需提示;

                     -q表示靜默安裝,不顯示安裝過程;

                     –nogpgcheck禁止進行gpgcheck;

                         –disablerepo=REPOIDGLOB臨時禁用此處指定的repo,主要用于在repo文件沖突的情況下使用;

                         –enablerepo=REPOIDGLOB臨時啟用此處指定的repo

                         –noplugins禁用所有插件

 

                創建yum倉庫:

               creatrepo

                       createrepo是一款本地yum源制作工具,可以手動將一些rpm做成yum倉庫,解決依賴關系。

                      默認此工具沒有安裝,需要先安裝在使用:yum -y install createrepo

                   使用方法:可直接在rpm包目錄里:createrepo   ./ 

                      有一個常用選項:–basedir:指定repo存放位置(createrepo ./  –basedir /DIR 

 

         最后再說一下repo配置文件中可用的變量:

             因為一條yum倉庫url在被多個用戶訪問時,每個用戶的linux版本與平臺都不一樣,所以為了能夠識別每個用戶的系統版本與平臺,就在url中引入變量,讓系統自動完成系統與平臺識別。

                 $releasever當前OS的發行版的主版本號;

                  $arch平臺;

                  $basearch基礎平臺

                  $YUM0-$YUM9 自定義變量

                            示例:     http://mirrors.magedu.com/centos/$releasever/$basearch/os

 

 

 

程序包編譯安裝

一:大綱

       1、什么是編譯安裝

       2、為什么要使用編譯安裝

       3、編譯安裝能實現什么功能

       4、編譯安裝詳解

 

二、正題

1、什么是編譯安裝

       編譯安裝通俗的說是就是手動將程序的源碼部署到系統中去,通常需要三步才能完成安裝工作;

 

2、為什么要使用編譯安裝

          編譯安裝是根據系統環境,在最優化的情況下完成代碼編譯工作,特點就是完全適應當前環境,可以最大化提升程序運行速度與系統穩定。

 

   3、編譯安裝能實現什么功能

            編譯安裝相比rpm包更加底層,所以可添加各種選項與參數來調節程序安裝的過程,滿足用戶的需求,是一種更加高級的程序安裝方式;再而且程序剛被發布是通常都是以源碼包的方式,只能通過編譯安裝來實現功能,所以編譯安裝是安裝程序的必要技能。

   4、編譯安裝詳解

      編譯安裝通常需要三個步驟:

          ./configure (在源碼包中)

                                    

    make

                                     

    make install:(相當使用install命令)

 

          第一步:./configure

           1)通過選項傳遞參數,指定啟用特性、安裝路徑等生成makefile文件;

           2)檢查依賴到的外部環境;

           3)可通過–help來獲取此包所支持的選項;

 

              選項分類:

        指定安裝路徑(默認/usr/local

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

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

        

                       System type系統類型(交叉編譯)

 

                  可選特性

                              –disable-FEATURE:禁止某特性

                                –enabled-FEATUR [=ARG]:啟用某特性

 

                       可選包

                                –with-PACKAGE [=ARG] 依賴包,必須有此包才能實現某功能。

                                –without-PACKAGE:不需要某個包

 

   第二步:make

           根據makefile文件,構建應用程序;

           第二步沒有選項,這只是一個編譯過程;

 

       第三步:make install

           將上一步編譯完成后生成的程序文件復制到對應的目錄中。

           第三步也沒有選項,這只是執行復制的一個過程。

 

       安裝后的配置:

           安裝完成后只是將程序文件部署到系統中,如果要使用的話,還需要以下步驟才能夠真正完成程序安裝;

                  

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

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

                               export PATH=/PATH/TO/BIN:$PATH

 

                2)導出庫文件路徑

                     編輯/etc/ld.so.conf.d/NAME.conf (直接寫入lib路徑)

                                /usr/local/apache2/lib

                     讓系統重新生成緩存:

                               ldconfig -v

 

                3)導出頭文件:

                              ln -s  include

                  

                    4)導出幫助手冊:

                           編輯/etc/man.config

                               添加MANPATH路徑

 

 

原創文章,作者:N25_韓奇洋,如若轉載,請注明出處:http://www.www58058.com/66338

(0)
N25_韓奇洋N25_韓奇洋
上一篇 2017-01-10
下一篇 2017-01-10

相關推薦

  • MariaDB

    Mariadb 結構化數據–>關系型數據庫 范式:Entry(每一行來描述一個整體) 半結構化數據–>YAML,XML,JSON 非結構化數據–>日志文件 NoSQL 關系型數據庫:事務能力 ACID測試(原子性,一致性,隔離性,持久性) MariaDB or MySQL: 層次模型–>…

    Linux干貨 2016-11-15
  • 學習shell scripts

    1. 為什么要學習shell編程?          許多人會問,為什么要學習shell腳本編程?我學的是linux,又不是編程,其實對于個人用戶可能用處不是很大,但是當你在為公司的成千上完的服務器做維護時,可能沒有shell編程的話可能把人累死也無法完成任務,一千臺服務器要做相…

    Linux干貨 2016-08-18
  • 17周博客作業 LVS+nginx+php(nginx與php分離)

    1、結合圖形描述LVS的工作原理; LVS是一種用軟件實現的LB集群; 作用于傳輸層; LVS工作原理:通過Director調度把用戶請求按照分配算法分配給后端的Real server,然后由后端Real server響應客戶請求; lvs模式分為三種。 lvs-nat: 多目標的DNAT:通過將請求報文的目標地址和目標端口修改為挑選出某…

    Linux干貨 2016-11-07
  • N25-第一周作業

    一,描述計算機的組成及其功能。        計算機(Computer)是一種能夠按照事先存儲的程序,自動、高速地進行大量數值計算和各種信息處理的現代化智能電子設備。由硬件和軟件所組成,兩者是不可分割的。        計算機的組成分為控制…

    Linux干貨 2016-12-03
  • 第十九周作業

    1、描述Tomcat的架構; 核心架構圖: 架構簡介: Server是管理Service接口的,是Tomcat的一個頂級容器。管理著多個Service; Service 是服務,管理著一個Container和多個Connector,Service的存在依賴于Server; Container : 一個或者多個Container 可以對應一個Connector…

    2017-06-23
  • 文本處理-三劍客-awk

    報告生成器,格式化文本輸出
    awk [options] ‘BEGIN{ action;… } pattern{ action;… } END{ action;… }’ file …

    2018-03-16

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-04-10 16:17

    總結的很好,請繼續保持~~~加油!!

欧美性久久久久