系統管理之程序包管理(二)yum詳解


系統管理之程序包管理(二)yum詳解:

    上節向大家介紹了程序包管理的理論和rpm命令的使用,本篇文章接著向大家介紹rpm的前端使用工具,方便大家更快捷的管理,使用rpm包,提高工作效率。


一 概論:


Centos:yum,dnf 兩個rpm前端工具

YUM :yellow dog, Yellowdog,Update Modifier  

    rpm的前端工具,用于解決軟件包相關依賴性,可以在多個庫之間定位軟件包

    采取cs架構 從文件服務器加載rpm包,安裝程序到本地主機 

    yum repository:yum repo  存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄下:repadata)

     文件服務器:

        ftp://    URL:ftp://10.1.0.1/pub/

        http://

          nfs://

         file:///

yum配置文件

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

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

    倉庫的定義:

         [repositoryID]

          name=Some name for this repository 倉庫名稱

          baseurl=ur1://path/to/repository/  指明rpm包的文件服務器

          enabled={1|0} 啟動此倉庫

          pgpchecck={1|0} 此倉庫的所有rpm包在安裝前是否支持來源合法性和完整性驗證

          gpgkey=URL  指明密鑰文件,通過URL把密鑰文件通過服務器共享

          enablesgroups={1|0} 是否支持此倉庫批量管理包組 默認支持,不寫也OK

          failovermethod={roundrobin|priority}   故障轉移方法 ,倉庫在特殊情況下的使用順序

            默認為:roundrobin  輪訓,意為隨機挑選;

          priority 憑位置的上下優先級決定

           cost=默認為1000


二.yum使用:


yum命令的用法 (引用于yum的官方幫助文檔):

          yum [options] [command] [package …]

          command is one of:

           * install package1 [package2] […]

           * update [package1] [package2] […]

           * update-to [package1] [package2] […]

           * update-minimal [package1] [package2] […]

           * check-update

           * upgrade [package1] [package2] […]

           * upgrade-to [package1] [package2] […]

           * distribution-synchronization [package1] [package2] […]

           * remove | erase package1 [package2] […]

           * autoremove [package1] […]

           * list […]

           * info […]

           * provides | whatprovides feature1 [feature2] […]

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

           * makecache [fast]

           * groups […]

           * search string1 [string2] […]

           * shell [filename]

           * resolvedep dep1 [dep2] […]

            (maintained for legacy reasons only – use repoquery or yum provides)

           * localinstall rpmfile1 [rpmfile2] […]

           (maintained for legacy reasons only – use install)

           * localupdate rpmfile1 [rpmfile2] […]

             (maintained for legacy reasons only – use update)

           * reinstall package1 [package2] […]

           * downgrade package1 [package2] […]

           * deplist package1 [package2] […]

           * repolist [all|enabled|disabled]

           * repoinfo [all|enabled|disabled]

           *  repository-packages <enabled-repoid> <install|remove|remove-or-rei

             stall|remove-or-distribution-synchronization> [package2] […]

           * version [all|installed| available | group-* |nogroups* |grouplist| groupinfo ]

           *history [info|list|redo|undo|rollback|new|sync|stats]

           * load-transaction [txfile]

            info|redo|undo|rollback|new|sync|stats]

           * load-transaction [txfile]

           * updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates |

           exclude-all | check-running-kernel]

           * fssnapshot [summary | list | have-space | create | delete]

           * fs [filters | refilter | refilter-cleanup | du]

           * check

           * help [command]

    

          顯示倉庫列表:

            repolist [all|enabled|disabled]

          顯示程序包:

            list

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

             #yum list {available|installed|updatese} [glob_exp1]

          安裝程序包

             install package1[package2] …

             reinstall                       覆蓋重新安裝

          升級程序包

            update [package1] [package2] ..

             downgrade   [package1] [package2] .. 降級 

          檢查可用升級

             chack-update

          卸載程序包:

             rmore  | erase package1 [package2]..

          查看程序包 information

            info […]

          查看程序提供特性:(可以查看是有那個程序包所提供)

            provides | whatprovides feature1 [feature2] […]

          清理本地緩存:

            clean [ package | metadata | expire-cache| rpmddb| plugins|all]

          構建緩存

            makecache

          搜索:

            search string1 [string2][..]

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

           查看指定包所依賴的capabilities

             deplist package1 [package] [..]

           查看yum事務歷史

             yum history [info|list|packages-list|pac|redo|undo|rollback|new|sync|stats]

           安裝及升級本地程序包 (5系系統用localinstall)

              * localinstall rpmfile1 [rpmfile2] […]

              (maintained for legacy reasons only – use install)

              * localupdate rpmfile1 [rpmfile2] […]

              (maintained for legacy reasons only – use update) 

    

           包組管理的相關命令

             groupinstall group1 [group2] …安裝包組

             groupuodate group1 [group2] …               升級包組

             grouplist [hidden] [groupwildcard] […]  顯示包組列表

             groupremove  group1 [group2] …  卸載包組

             groupinfo group1 [group2] …    顯示包組的詳細信息及包的組成信息

實戰:創建本地yum源

   1.掛載光盤

        (1).虛擬機的設置里選CD-ROM中的已連接

         (2).命令:

             [root@wen-7 ~]# mount -r -t iso9660 /dev/cdrom /media
             mount: /dev/sr0 寫保護,將以只讀方式掛載

   2.配置yum

        [root@wen-7 ~]# cd /etc/yum.repos.d/ 會看到系統默認的一些以Centos開頭文件,是網絡yum源,暫不使用,可以創建一個文件,mv移動到文件里以后使用
        [root@wen-7 yum.repos.d]# ls
        1  yum.repo
        [root@wen-7 yum.repos.d]# cat yum.repo 創建一個以repo為后綴的文本,配置如下:
        [centos7]
        name=centos 7 is yum
        gpgcheck=0
        enabled=1
        baseurl=file:///media
        [root@wen-7 yum.repos.d]# yum repolist  #檢查yum是否配置成功,結果如下,表示已加載成功軟件包,可正常使用yum了
        已加載插件:fastestmirror, langpacks
        Loading mirror speeds from cached hostfile
        源標識                           源名稱                        狀態
        yum                              yum                           9,007
        repolist: 9,007
        [root@wen-7 http]# yum makecache             ##建立緩存
        已加載插件:fastestmirror, langpacks
        yum                                                                                            | 3.6 kB  00:00:00     
        yum/other_db                                                                                   | 2.3 MB  00:00:00     
        Loading mirror speeds from cached hostfile
        元數據緩存已建立
        [root@wen-7 http]# yum install zsh -y               #安裝軟件
        已加載插件:fastestmirror, langpacks
        Loading mirror speeds from cached hostfile

yum的命令行選項

           –nogpgcheck:禁止進行pgpcheck 阻止驗證來源合法性和完整性

           -y: 指定回答yes 避免用戶交互

           -q:靜默模式

           –enablerepo=repoidglob:臨時啟用此處指定的repo。

           –disablerepo=repoidglob:臨時禁用此處指定的repo。

          –noplugins:禁用所有插件

yum的倉庫配置文件中可用的變量:

         判斷獲取當前系統的版本號 ,方便yum 自己找尋符合自己主機的yum倉庫地址

        

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

            $rach:平臺

            $basearch:基礎平臺

            $YUM0-$YUM9

           例: 指定倉庫文件 baseurl參數

            http://mirrors.magedu.com/centos/$centos-7/i386/os

             http://mirrors.magedu.com/centos/$$releaserver/$basearch/os



三、程序包編譯安裝


testappp-VERSION-release.src.rpm–>安裝后,使用rpmbuild命令制作成二進制格式包的rpm包,而后在安裝;

    源代碼–>預處理———>編譯(gcc)–>匯編–>鏈接–>執行


源代碼組織格式

     多文件:文件中的代碼之間,很可能存在跨文件依賴關系;

     C/C++: make (configure –>Makefile.in–>makefile)

     java:maven

編譯安裝三步驟:

     (1)./configure:

       (1)通過選項傳遞參數,指定啟用特性,安裝路徑登;執行時會參考用戶的指定以及Makefile.in文件生成Makefile

        (2)檢查依賴到的外部環境; 不存在外部環境,會報警,提示安裝所需的外部環境。configure執行失敗,make將無法進行;

     (2)make  (項目管理工具,依賴于Makefile)

       根據makefile文件,構建應用程序;相仿與instal命令,把程序的相應的文件復制到工作目錄中

     (3)make install

       相仿與instal命令,把程序的相應的文件復制到相應的工作目錄中(二進制文件,庫文件,配置文件,幫助文檔) 

    

      開發工具:

          autoconf:生成configure腳本 需要結合一個能夠介紹程序特性的腳本,了解程序的相關信息,才能生成configure腳本

          automake:生成Makefile.in文

          建議:安裝前查看INSTALL,README文件,查看安裝事項

    

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

      官方自建站點:

        apache.org(ASF)

        mariadb.org

        ….

      代碼托管站點:

       SourceForge

       Github.com

       code.google.com

        

編譯c源代碼:

      C/C++: gcc(GNU C Complier)編譯器

      前提:提供開發工具記憶開發環境

         開發工具:make,gcc等

         開發環境:開發庫,頭文件

         glibc:標準庫

     通過“包組”提供開發組件

        Centos 6:“Development Tools”,“Server Platdorm Development”

      過程:

       (1)configure腳本

         選項:指定安裝位置,指定啟用的特性等等

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

         選項分類:

           安裝路徑設定

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

             –sysconfdir=/PATH/TO/SOMEWHERE/:配置文件存放位置

           system types(系統設定):

             Optional Packages(可選依賴包):

              –with-PACKAGE[=ARG]

              –without-PACKAGE

          Optional Features(可選特性):

              –disable-FEATURE

             –enable-FEATURE[=ARG]

            環境變量:

       (2)make

          調用命令,編譯安裝

       (3)make install 

          移動,粘貼程序文件

    

       (4)安裝后的配置

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

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

            export PATH=PATH/TO/BIN:$PATH

         (2)導出庫文件路徑:

            編輯/etc/ld.so.conf/NAMe.conf

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

            讓系統重新生成緩存:

             idconfig [-v]

        (3)導出頭文件

            基于連接的方式實現  (/usr/bin  /usr/sbin)

            ln -sv

        (4)導出幫助手冊

            編輯/etc/man.config文件中

            添加一個MANPATH

    



實戰:(實戰演練均在centos7.2操作系統上操作)

1.yum的配置和使用,包括yum reoisitory的創建      

      (1).準備rpm包到文件夾內 

           [root@wen-7 yum]# cp tree-1.6.0-10.el7.x86_64.rpm /tmp

       (2).createrepo ./ 進入文件夾內 執行命令createrepo命令,創建倉庫函數

          [root@wen-7 yum]# createrepo ./
           Spawning worker 0 with 546 pkgs
           Workers Finished
           Saving Primary metadata
            Saving file lists metadata
              Saving other metadata
              Generating sqlite DBs
               Sqlite DBs complete

        (3).檢查倉庫函數

                    [root@wen-7 yum]# cd repodata/
                     [root@wen-7 repodata]# ls
                     189860660bf3eff6826715ecec3750a6d116d9b034703a71fed5661b2d5ac719-primary.xml.gz
                     2a3690fa47f57597494eb52bed1c8baafe8418467b5af2d82b79505c1dd8f124-filelists.sqlite.bz2
                     328759bb1bb75627712b4ba99b4234c26aefcb71bc9c71a78b08092c106ea303-primary.sqlite.bz2
                     581f2e2e2025c833919ea42523ecad4dbb6d83c162c9c85c260965fed41a0532-other.xml.gz
                     a83ecbd110af8a84c6587b04de826154a514dac462f21b59fa1eee1b1baaa950-other.sqlite.bz2
                     c24ada093144b72ec25f3f5876f199a15baaa27bdd8741b78a8b82ef90a1b0f1-filelists.xml.gz

       (4).編寫倉庫文件

                    [root@wen-7 repodata]# vim /etc/yum.repos.d/yum.rep            
                       [centos7]
                    name=centos7.yum
                    pgpcheck=0
                    baseurl=file:///root/yum/

        (5).清除yum緩存

                    yum makecache

        (6).查看yum包列表

                [root@wen-7 repodata]# yum repolist
                已加載插件:fastestmirror, langpack centos7/primary_db  | 263 kB  00:00:00     
                Loading mirror speeds from cached hostfile 源標識    源名稱     狀態
                centos7(以顯示可以使用,后面有546個包) centos7.yum     546
                yum                                yum   9,007
                repolist: 9,553

       到此,自已制作rpm倉庫以完成


2.編譯安裝apache 2.2,啟動此服務

    1.復制安裝包到目錄,并解壓到指定目錄

    [root@wen-7 ~]# cp httpd-2.2.9.tar.gz /tmp           
    [root@wen-7 ~]# tar xvf httpd-2.2.9.tar.gz

    2.進去解壓目錄

    [root@wen-7 ~]# cd /tmp/
    [root@wen-7 tmp]# ls
    httpd-2.2.9  httpd-2.2.9.tar.gz
    [root@wen-7 tmp]# cd httpd-2.2.9/

     3.執行configure腳本,檢查當前編譯環境,并指定安裝選項

    [root@wen-7 httpd-2.2.9]# ./configure -prefix=/usr/local/http
    [root@wen-7 httpd-2.2.9]# echo $?               ##查看命令狀態返回值,確認命令執行成功
    0

    4.執行安裝命令,并執行生成程序文件命令

    [root@wen-7 httpd-2.2.9]# make && make install
    [root@wen-7 httpd-2.2.9]# echo $?               ##查看命令狀態返回值,確認命令執行成功
                          0

      5.導出二進制程序目錄至PATH環境變量中

    [root@wen-7 httpd-2.2.9]# cat  /etc/profile.d/http 
    PATH=$PATH:/usr/local/http/bin

      6.導出程序頭文件

    [root@wen-7 httpd-2.2.9]# ln -sv /usr/local/http/bin/apachectl /usr/sbin/apache         軟連接到/usr/sbin
    "/usr/sbin/apache" -> "/usr/local/http/bin/apachectl"

     7.導出庫文件

    [root@wen-7 httpd-2.2.9]# cat  /etc/ld.so.conf           編寫文件
    include ld.so.conf.d/*
    include /usr/local/http/bin/*
    [root@wen-7 httpd-2.2.9]# ldconfig -v              ##系統重新生成緩存

    8.導出man幫助文檔

    [root@wen-7 httpd-2.2.9]# vim  /etc/man_db.conf vim             ##編寫文件,寫下面代碼            
    [root@wen-7 httpd-2.2.9]# ldconfig -v

    9.啟動或關閉apache

    [root@wen-7 ~]# apache stop                        
    httpd: apr_sockaddr_info_get() failed for wen-7.2
    httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
    [root@wen-7 ~]# apache start
    httpd: apr_sockaddr_info_get() failed for wen-7.2
    httpd: Could not reliably determine the server's fully qual

    10檢查apache端口

    [root@wen-7 ~]# netstat -tan| grep 80
    tcp6       0      0 :::80      :::*      LISTEN

    11.瀏覽器訪問(配置成功)

       注意:如果訪問不成功,請查看防火墻是否開啟

       blob.png

       

原創文章,作者:wencx,如若轉載,請注明出處:http://www.www58058.com/39329

(0)
wencxwencx
上一篇 2016-08-24
下一篇 2016-08-24

相關推薦

  • 20160809作業

    一、如何設置tab縮進為4個字符       臨時設置:set tabstop=4       全局設置vim /etc/vimrc—>添加set tabstop=4       當前用戶生效,手動添加文…

    Linux干貨 2016-08-10
  • linux 生產常用命令

    hostname 顯示當前的主機名pwd 顯示當前工作的目錄wwhowhoami顯示當前用戶及已建立的ssh鏈接useradd 新建一個普通用戶passwd 修改用戶的密碼which 查看系統命令所對應的路徑type 查詢命令是否屬于內部命令或者外部命令hash 哈希 把一個命令一個文本通過某種算法生產一串字符df 查看系統分區hash -l 加快命令查詢執…

    Linux干貨 2017-03-28
  • 管中窺豹—linux命令

    命令行選項風格: 1、原始unix風格     a、命令行選項以連字符'-'開頭,后跟單個字符表示選項,選項后面跟著取值,如:mysql -hlocalhost      b、選項不帶取值的,可以組合在一起,如:sed -n -r 可以寫成 sed -nr  …

    Linux干貨 2016-10-30
  • 16個很有用的在線工具

    1. ExplainShell.com 命令解釋 對于Linux用戶來說每天都會寫各種命令和腳本,那么你可以使用這個網站工具來查看命令式如何工作的,這樣可以避免不必要的錯誤出現;也是一個很好的學習命令的方式 2. BashrcGenerator.com 定制個性命令提示符 簡單說就是個性化生成命令提示符,可將生成的代碼…

    Linux干貨 2015-03-13
  • Linux系統解壓縮

    Linux系統解壓縮 gzip/gunzip 語法gzip [OPTIONS] + 壓縮之后的路徑 + 要壓縮的文件 -#:壓縮比 (不常用) -d:解壓縮,相當于gunzip -c:將壓縮后的數據輸出至標準輸出 -r:遞歸至目錄中對每個文件進行壓縮 zcat :查看壓縮文件的內容 ——————————————————————————————————————…

    Linux干貨 2017-08-15
  • 每日一練 —8.4 文本處理工具,正則表達式

    練習 1 、找出ifconfig 命令結果中本機的所有IPv4 地址 2 、查出分區空間使用率的最大百分比值 3 、查出用戶UID 最大值的用戶名、UID 及shell 類型 4 、查出/tmp 的權限,以數字方式顯示 5 、統計當前連接本機的每個遠程主機IP 的連接數,并按從大到小排序   6,顯示/proc/meminfo文件中以大寫或小寫s開…

    Linux干貨 2016-08-15

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-26 12:04

    文章整體架構清晰,層次明了,內容上較為完整,如果嫩南瓜對一些工具的背景知識和實驗過程中遇到的錯誤進行總結會讓文章更專業,更具有可讀性哦。

欧美性久久久久