Linux之yum詳解及程序包安裝

Linux之 yum詳解 及 程序包安裝

   在Linux常用的命令安裝工具中,rpm是一個功能十分強大的軟件包管理系統,它使得在Linux下安裝、升級和刪除軟件包的工作變得容易,并且具有查詢、驗證軟件包的功能。與圖形化工具相比,使用命令行可以獲得更大的靈活性。

   但是rpm有一個缺點,無法解決包的依賴性,也就是說,當我們用rpm安裝A包的時候,需要依賴于B包,但運用rpm安裝A包前必須手動安裝B包,然后才能安裝A包。

   如果用yum安裝A包的話,yum會先自動安裝B包,以解決A包的依賴性。

   而yum是什么?

   YUM: Yellowdog Update Modifier, rpm的前端程序,用來解決軟件包相關依賴性,可以在多個庫之間定位軟件包,up2date的替代工具,以下為yum詳解。

yum

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

    文件服務器:

        ftp://

        http://

        file:///

    yum客戶端配置文件:

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

  clipboard.png

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

    倉庫指向的定義:              

        [repositoryID]                                          

            name=Some name for this repository

            baseurl=url://path/to/repository/

            enabled={1|0}        //是否啟用該配置

            gpgcheck={1|0}       //1為開啟,0為不驗證公鑰

            gpgkey=URL          //公鑰地址,可以為本機(/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7   

                                            或者為光盤的  CentOS\ 7\ x86_64/RPM-GPG-KEY-CentOS-7   

                                            或者為遠端鏡像源的地址)

            enablegroups={1|0}     //是否允許包

            failovermethod={roundrobin|priority}     //默認為: roundrobin,意為隨機挑選;

            cost= 默認為1000


    yum命令的用法:

        yum [options] [command] [package …]

            yum-config-manager –disable “倉庫名" 禁用倉庫

            yum-config-manager –enable “倉庫名” 啟用倉庫

  

        顯示倉庫列表:

            repolist [all|enabled|disabled]      //下圖是本博主自己自定義的一個倉庫列表,

                                在/etc/yum.repos.d/ 錄下僅有本博主自己的一個 *.repo文件,

                                                但是文件里邊有多個配置信息,所以,倉庫列表也顯示多個

                               這里再次說明一下,當倉庫指向的配置中enabled=1,

                                則為啟用,yum repolist中就會顯示該倉庫列表

              

        blob.png   blob.png     

    顯示程序包:

        list

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

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

        […]

blob.png

    安裝程序包:

        install package1 [package2] […]

        reinstall package1 [package2] […] (重新安裝)


    升級程序包:

        update [package1] [package2] […]

        downgrade package1 [package2] […] (降級)


    檢查可用升級:

        check-update


    卸載程序包:

        remove | erase package1 [package2] […]


    查看程序包information:

        info […]

blob.png

  

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

        provides | whatprovides feature1 [feature2] […]


    清理本地緩存:

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

        blob.png

    構建緩存:

        makecache

    搜索: search string1 [string2] […]

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

    查看指定包所依賴的capabilities:

    deplist package1 [package2] […]

    

    查看yum事務歷史:

        history [info|list|packages-list|packages-info|

        summary|addon-info|redo|undo|

        rollback|new|sync|stats]

        yum history

            yum history info 15     //查看yum history  id為15 的 操作

            yum history undo 15     //撤銷yum history  id為15 的 操作

    

    日志 : /var/log/yum.log

    blob.png

    blob.png    

    由于我history info  15   是一個安裝gcc 的操作,  所以我的命令  yum history undo 15   就是卸載 gcc  的操作 

    安裝及升級本地程序包:

        localinstall rpmfile1 [rpmfile2] […]

        (用install替代)

        localupdate rpmfile1 [rpmfile2] […]

        (用update替代)

    

     包組管理的相關命令:

            grouplist [hidden] [groupwildcard] […]

           groupinstall group1 [group2] […]

            groupupdate group1 [group2] […]           

            groupremove group1 [group2] […]

            groupinfo group1 […]

    這里值得注意的是,通常包組名都不是一個看上去連續的字符,而是一個中間有空格的字符串如 Development Tools 等

        (PS : 這里的包組就是一開始的時候,安裝Linux系統可以選擇的包組 )

    blob.png

    所以在使用 yum groupinstall groupname   安裝包組的時候,需要加雙引號" "  ,否則無法識別

    blob.png

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

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

        # mount /dev/cdrom /media/cdrom

    (2) 創建配置文件

        [CentOS7]

        name=

        baseurl=

        gpgcheck=

        enabled=

    blob.png

     

    yum的命令行選項:

            –nogpgcheck:禁止進行gpg check

            -y: 自動回答為“ yes”

            -q:靜默模式

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

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

            –noplugins:禁用所有插件

  

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

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

        $arch: 平臺, i386,i486,i586,x86_64等

        $basearch:基礎平臺; i386

        $YUM0-$YUM9:自定義變量

    

    實例:(當我們在實際生產工作中,管理的服務器是大量的,且有可能每一臺的配置都有所不同,那么是否要每一臺的yum倉庫指向文件都要配置一次呢,答案是否定的)

        http://server/centos/$releasever/$basearch/

        http://server/centos/7/x86_64

        http://server/centos/6/i384  

     blob.png

    創建yum倉庫:

        createrepo [options] <directory>

            no.1  復制倉庫安裝包至自定義目錄,自定義目錄為自創的yum倉庫

            no.2  在yum倉庫下運行命令 createrepo . (. 為當前目錄) , 運行成后會生成一個repodata ,一個yum倉庫的標記文件

            no.3  安裝yum倉庫的rpm包

        以下為創建yum倉庫,并安裝 tree

    
          blob.png

        blob.png

        blob.png

        當然 , 安裝倉庫沒有的rpm包是會報錯的

        blob.png



====================================================================================================================================

程序包編譯安裝:

若要在Linux系統上安裝軟件 ,

    首先要有源碼(開放源碼;因為linux是開源系統) ,

        然后解壓源碼包,源碼包只不過是程序員編寫的代碼

            以下步驟在解壓源碼包的目錄下進行

    接著是編譯 , 編譯是因為機器無法讀懂人類語言 , 通過編譯軟件 如 gcc等,編譯成二進制文件 , 機器才能讀懂 (在解壓源碼包的目錄下進行)

        然后 make  構建應用程序文件(在解壓源碼包的目錄下進行)

            最后就是 make install  安裝程序(在解壓源碼包的目錄下進行)

    

    相較于Windows安裝軟件,Windows執行應用程序相當于Linux的make install這一步,雖說簡單,但由于Windows是閉源,無法自定義軟件的功能,而Linux的開源可以編寫文件的某些字段 , 以達到自定義軟件的功能(這是開源的好處)


以安裝Apache2為詳解:


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

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

源代碼組織格式:

    多文件:文件中的代碼之間,很可能存在跨文件依賴關系C、 C++: make (項目管理器, configure –>

    Makefile.in –> makefile)

    java: maven

C代碼編譯安裝三步驟:

    下載httpd安裝包,也就是Apache的安裝包(2.2.29版本比較穩定)

    blob.png

    1、 ./configure:(一般來說,我們都先要看一下幫助文件,以了解軟件的相關信息: configure –help  或者是 less README )

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

        (2) 檢查依賴到的外部環境   (需要檢查,了解)

        (3) 最后才運行configure   (./configure)

    blob.png

    2、 make:根據makefile文件,構建應用程序 (跑的代碼比較多,不截圖了,記住要在解壓的目錄里運行)

    3、 make install:復制文件到相應路徑    (跑的代碼比較多,不截圖了,記住要在解壓的目錄里運行)

    第一步: configure腳本

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

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

        選項分類:

        安裝路徑設定:

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

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

        System types:支持交叉編譯

        Optional Features: 可選特性

        –disable-FEATURE

        –enable-FEATURE[=ARG]

        Optional Packages: 可選包,

        –with-PACKAGE[=ARG],依賴包

        –without-PACKAGE,禁用依賴關系

    第二步: make

    第三步: make install

PATH=$PATH:/usr/local/apache2/bin

編譯安裝

    安裝后的配置:

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

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

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

        blob.png

       

        (2) 導入庫文件路徑

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

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

            讓系統重新生成緩存:

            ldconfig [-v]

        blob.png


        (3) 導入頭文件(程序運行,很多時候都是要依賴頭文件)

            基于鏈接的方式實現:

            ln -sv

        blob.png

        在 /usr/include/ 目錄下創建 /usr/lcoal/apache2/include/ 的軟鏈接

        

        (4) 導入幫助手冊

            編輯/etc/man.config|man_db.conf文件

            添加一個MANPATH


        blob.png


開發工具:

    autoconf: 生成configure腳本

    automake:生成Makefile.in

        注意:安裝前查看INSTALL, README

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

        官方自建站點:

            apache.org (ASF)

            mariadb.org

            

        代碼托管:

            SourceForge.net

            Github.com

            code.google.com

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

    編譯C源代碼:

    前提:提供開發工具及開發環境(要先安裝Development Tools )

    開發工具: make, gcc等

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

    glibc:標準庫

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

    CentOS 6: "Development Tools",

    "Server Platform Development",

    

Linux之yum詳解及程序包安裝


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

(2)
hunterhunter
上一篇 2016-08-24
下一篇 2016-08-24

相關推薦

  • 3、常用命令介紹

    http://note.youdao.com/yws/public/redirect/share?id=4840e26ee1d2b2c928b6c26e2ba14661&type=false

    Linux干貨 2016-08-08
  • CentOS系統安裝

    centos系統安裝        安裝程序:anaconda,Anaconda是RedHat、CentOS、Fedora等Linux的安裝管理程序。它可以提供文本、圖形等安裝管理方式,并支持Kickstart等腳本提供自動安裝的功能。此外,其還支持許多啟動參數,熟悉這些參數可為安裝帶來很多方便。該程序的功能是把位于光…

    Linux干貨 2016-09-23
  • 正則表達式、擴展正則表達式

    正則表達式:支持:grep,sed,awk,vim, less,nginx,varnish等

    2018-03-16
  • 源碼包安裝Apache服務

    1、安裝development tools程序包組 安裝Apache服務器前需要解決依賴性問題,比如需要安裝GCC、GCC++、OPENSSL等等,因為是在虛擬機里做實驗,這里就通過直接安裝包組的方法解決依賴性問題。 (1)掛載安裝光盤,并安裝“Development tools”包組 [root@localhost ~]# mount&…

    Linux干貨 2016-08-24
  • NoSQL—mongodb常見使用和入門

    NoSQL介紹: NoSQL數據管理系統是目前非常流行的一種非關系性、分布式、不支持ACID設計規范式的數據庫;NoSQL簡單的數據模型、元數據和數據分離、弱一致性、高吞吐量、高水平擴展能力和低端硬件集群使其流行的主要原因,而mongodb就是NoSQL數據庫一種非常流行的實現方式。   常見的NoSQL數據存儲模型 列式模型 文檔類型 應用場景:…

    2015-09-01
  • shell中if條件字符串、數字比對,[[ ]]和[ ]區別

    今天學習shell, if條件流程控制,但發現if[ ]]和if[ ]什么時候用不是清楚,正好看到一篇文章,非常好,轉載,留個備份。 參考: http://www.51testing.com/?uid-7701-action-viewspace-itemid-13731 http://blog.csdn.net/sunboy_2050/article/det…

    Linux干貨 2016-08-12

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-26 16:11

    文章思路清晰,整篇博客能讓人看到很多專業性所在,還能看出很用心的地方,革命尚未成功,同志仍需努力啊,加油!

欧美性久久久久