程序包管理之yum:yum源\庫配置以及源碼編譯安裝

程序包管理之yum

yum概念

什么是yum

由yellow dog這一發行版的開發者Terra Soft研發。

使用rpm命令安裝軟件包時,解決不了依賴關系,就會很麻煩,使用yum可以自行解決依賴關系。

刪除某個安裝包,如果是用rpm刪除,就卸載掉某個依賴關系從而導致其他軟件包不能使用。

yum特點

可同時配置多個軟件倉庫

簡潔的配置文件/etc/yum.conf

自動解決安裝或者刪除RPM軟件包時遇到的依賴性問題

使用方便

保持與RPM數據庫的一致性

yum repository:yum repo

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

yum支持的常見服務器格式

ftp://
http://
nfs://
file:///

yun緩存

數據:程序包 元數據:repodata(請求的安裝包及依賴包的名稱、大小、版本、依賴關系等屬性)

執行流程為:第一次訪問倉庫時請求倉庫服務器的元數據并下載到本地緩存目錄中,然后檢索下載安裝包及其相關依賴包并進行安裝,安裝完成后最后再刪除緩存目錄中的這些安裝包,保留元數據。之后再次下載安裝包會先去倉庫服務器查詢元數據的校驗碼,并和本地元數據校驗碼進行比較,如果校驗碼相同,則直接忽略;如果不同就重新下載元數據并對本地緩存目錄中的元數據進行覆蓋,從而完成緩存有效性驗證。

/etc/yum.conf文件詳解

/etc/yum.conf文件是yum主配置文件

yum配置兩種方式
    一種是直接配置在/etc/yum.conf
        為所有倉庫提供公共配置
    一種是在/etc/yum.repos.d目錄下增加repo文件
        為倉庫的指向提供配置

程序包管理之yum:yum源\庫配置以及源碼編譯安裝

/etc/yum.repos.d/*.repo文件詳解

程序包管理之yum:yum源\庫配置以及源碼編譯安裝

先看一看/etc/yum.repos.d目錄下有哪些軟件倉庫配置文件 程序包管理之yum:yum源\庫配置以及源碼編譯安裝

倉庫指向的定義:
    [repositoryID]
    name=Some name for this repository
    baseurl=url://path/to/repository/
    enabled={1|0}    表示軟件包中定義的源是否啟用
    gpgcheck={1|0}
    gpgkey=URL       定義用于校驗的GPG 密鑰
    enablegroups={1|0}
    failovermethod={roundrobin|priority}
        默認為:roundrobin,意為隨機挑選;
    cost=
        默認為1000

yum用法

yum [options] [command] [package ...]

   command is one of:
    * install package1 [package2] [...]
    * update [package1] [package2] [...]
    * update-to [package1] [package2] [...]
    * check-update
    * upgrade [package1] [package2] [...]
    * upgrade-to [package1] [package2] [...]
    * distribution-synchronization [package1] [package2] [...]
    * remove | erase package1 [package2] [...]
    * list [...]
    * info [...]
    * provides | whatprovides feature1 [feature2] [...]
    * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
    * makecache
    * groupinstall group1 [group2] [...]
    * groupupdate group1 [group2] [...]
    * grouplist [hidden] [groupwildcard] [...]
    * groupremove group1 [group2] [...]
    * groupinfo group1 [...]
    * search string1 [string2] [...]
    * shell [filename]
    * resolvedep dep1 [dep2] [...]
    * 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]
    * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
    * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
    * check
    * help [command]

顯示倉庫列表:
    repolist [all|enabled|disabled]

顯示程序包:
    list
        # yum list [all | glob_exp1] [glob_exp2] [...]
        # yum list {available|installed|updates} [glob_exp1] [...]

安裝程序包:
    install package1 [package2] [...]

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

升級程序包:
    update [package1] [package2] [...]

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

檢查可用升級:
    check-update

卸載程序包:
    remove | erase package1 [package2] [...]

查看程序包information:
    info [...]

查看指定的特性(可以是某文件)是由哪個程序包所提供:
    provides | whatprovides feature1 [feature2] [...]

清理本地緩存:
    clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

構建緩存:
    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]

安裝及升級本地程序包:
    * localinstall rpmfile1 [rpmfile2] [...]
       (maintained for legacy reasons only - use install)
    * localupdate rpmfile1 [rpmfile2] [...]
       (maintained for legacy reasons only - use update)

包組管理的相關命令:
    * groupinstall group1 [group2] [...]
    * groupupdate group1 [group2] [...]
    * grouplist [hidden] [groupwildcard] [...]
    * groupremove group1 [group2] [...]
    * groupinfo group1 [...]

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

    (1) 掛載光盤至某目錄,例如/media/cdrom
        # mount -r -t iso9660 /dev/cdrom /media/cdrom
    (2) 創建配置文件
    [CentOS7]
    name=
    baseurl=
    gpgcheck=    要gpgcheck,就必須要導入key
    enabled=

另外配置文件可以用變量替代,變量會自動替換,使一個變量可以多場景使用

 yum的repo配置文件中可用的變量:
    $releasever: 當前OS的發行版的主版本號;
    $arch: 平臺; i386等
    $basearch:基礎平臺;
    $YUM0-$YUM9  自定義

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

如何創建yum倉庫

程序包管理之yum:yum源\庫配置以及源碼編譯安裝

yum的命令行選項:
    --nogpgcheck:禁止進行gpg check;
    -y: 自動回答為“yes”;
    -q:靜默模式;
    --disablerepo=repoidglob:臨時禁用此處指定的repo;
    --enablerepo=repoidglob:臨時啟用此處指定的repo;
    --noplugins:禁用所有插件;

yum的repo配置文件中可用的變量:
    $releasever: 當前OS的發行版的主版本號;
    $arch: 平臺;
    $basearch:基礎平臺;
    $YUM0-$YUM9



創建yum倉庫:
    createrepo [options] <directory>

程序包編譯安裝:

程序包編譯安裝:

別人編好的rpm包不適用所有版本,所以要自己編譯,如下面的src格式的包,都需要先用rpmbuild命令封裝。 testapp-VERSION-release.src.rpm –> 安裝后,使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝;

源代碼的組織格式是多文件的,多文件中的代碼之間,很可能存在跨文件依賴關系,要解決這種依賴關系,則使用專門的項目管理工具。如下:make,就為項目組織打包管理工具。

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

這個過程很復雜,所以要是有了項目管理器,就可以自動完成上述過程。

make真的那么強大嘛,是因為make與每個源代碼都有配置文件,即為makefile。makefile也不是寫死的,makefile由Makefile.in生成,Makefile.in根據用戶需求生成。configure腳本可以幫助用戶配置這些編譯的配置。

那么問題來了,./configure文件、Makefile.in文件以及makefile文件從哪里來?有的自帶,有的要生成。用開發工具生成 。 autoconf:生成configure腳本 automake:生成Makefile.in文件

建議:安裝前查看INSTALL,README

開源程序源代碼獲取

官方自建站點:
            apache.org (ASF)
            mariadb.org
            ...
        代碼托管:
            SourceForge
            Github.com
            code.google.com

編譯安裝的過程如下

1.運行configure腳本

(1)讓用戶通過選項傳遞參數,指定啟用特性、安裝路徑等,執行時會參考用戶的指定以及Makefile.in生成makefile。 (2)檢查各指定特性所依賴的外部環境,沒有依賴關系,configure會報錯。

        configure腳本的應用:

        –prefix:指定默認安裝路徑

        –sysconfdir:指定配置文件安裝路徑

        –with-CAPABLILITY:依賴的程序包

        –without-CAPABILITY:不依賴的程序包

        –enable-FEATURE:啟用某個特性

        –disable:禁用某個特性

2.運行make命令,完成項目構建

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

3.運行makeinstall命令,完成安裝

示例演示,以apache進行演示

安裝后的配置:

    (1) 導出二進制程序目錄至PATH環境變量中;
        編輯文件/etc/profile.d/NAME.sh
            export PATH=/PATH/TO/BIN:$PATH

    (2) 導出庫文件路徑
        編輯/etc/ld.so.conf.d/NAME.conf
            添加新的庫文件所在目錄至此文件中;

        讓系統重新生成緩存:
            ldconfig [-v]

    (3) 導出頭文件
        基于鏈接的方式實現:
            ln -sv 

    (4) 導出幫助手冊
        編輯/etc/man.config文件
            添加一個MANPATH

實例

  1. yum grouplist。查看是否安裝好所需要的包組。CentOS 6: "Development Tools", "Server Platform Development",Centos7就只有開發工具 

這里寫圖片描述

2.gcc –version。檢查是否有gcc。 這里寫圖片描述

3.下載http相關軟件包,由于筆者安裝到后面發現少安裝了3個文件,顧在此一并下載安裝。 具體情況如下:

wget http://mirrors.aliyun.com/apache/httpd/httpd-2.2.31.tar.gz
wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz  
wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz  
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip

5.將原有安裝卸載

yum remove apr-util-devel apr apr-util-mysql apr-docs apr-devel apr-util apr-util-docs

6.具體步驟如下:

  a:解決apr not found問題>>>>>>
[root@xt test]# tar -zxf apr-1.4.5.tar.gz  
[root@xt test]# cd  apr-1.4.5  
[root@xt apr-1.4.5]# ./configure --prefix=/usr/local/apr  
[root@xt apr-1.4.5]# make && make install  

  b:解決APR-util not found問題>>>>
[root@xt test]# tar -zxf apr-util-1.3.12.tar.gz  
[root@xt test]# cd apr-util-1.3.12  
[root@xt apr-util-1.3.12]# ./configure --prefix=/usr/local/apr-util --with- apr=/usr/local/apr/bin/apr-1-config  
因為安裝apr-util的時候需要編譯環境apr存在,故--with-apr指定apr安裝路徑。
[root@xt apr-util-1.3.12]# make && make install 

  c:解決pcre問題>>>>>>>>>
[root@xt test]#unzip -o pcre-8.10.zip  
[root@xt test]#cd pcre-8.10  
[root@xt pcre-8.10]#./configure --prefix=/usr/local/pcre  
[root@xt pcre-8.10]#make && make install

可以看到:現在我們都裝好了包,并解壓,并編譯安裝完成。 這里寫圖片描述7.cd 到 httpd-2.2.31,ls,less INSTALL。 這里寫圖片描述8../configure –prefix=/usr/local/apache2 –sysconfdir=/etc/httpd2 –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util/ 

這里寫圖片描述

9.make&&make install

10.cd /usr/local/apache2/ 上,ls bin這里寫圖片描述11.bin/apachectl start

12.netstat -tan 這里寫圖片描述13.看到端口80表示成功了,然后是安裝后的配置。 安裝后的配置:

        (1) 導出二進制程序目錄至PATH環境變量中;
            編輯文件/etc/profile.d/NAME.sh
                export PATH=/PATH/TO/BIN:$PATH

        (2) 導出庫文件路徑
            編輯/etc/ld.so.conf.d/NAME.conf
                添加新的庫文件所在目錄至此文件中;

            讓系統重新生成緩存:
                ldconfig [-v]

        (3) 導出頭文件
            基于鏈接的方式實現:
                ln -sv 

        (4) 導出幫助手冊
            編輯/etc/man.config文件
                添加一個MANPATH

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

(0)
N24_yeziN24_yezi
上一篇 2016-11-22
下一篇 2016-11-22

相關推薦

  • 單向加密原理

      單向加密算法對數據進行加密的過程分為兩個步驟:   一、添加特征碼           上圖中說明了為數據添加特征碼的步驟:       1、使用單向算法計算出特征碼       2、使用私鑰來加密特征碼   &nb…

    Linux干貨 2016-02-24
  • 計劃任務

              前要:Linux的計劃任務主要分為三塊。單一的執行一次計劃任務,系統自動的選擇空閑時間去執行特定的任務, 周期性的執行相關任務,下面就此三塊做簡要的描述。 一:單一的計劃任務at      &nbsp…

    2017-07-01
  • RHEL6.9換源記

    RHEL是提供給企業使用的,雖然我們在網絡上也能下載到它的鏡像,但是我們無法使用它的服務。最近由于系統比較卡,重裝了一次系統,裝完之后,我用VMware Workstation Pro 12 加載了之前的RHEL 6.9-000002.vmdk文件之后居然發現不能掛載CD/DVD,這就不能愉快的玩了。在VMware的設置里折騰好久也沒能搞定,光盤安裝RPM包…

    2017-07-20
  • keepalived雙主模型的實現

    一、簡介  keepalived 簡介:是服務器高可用的一個重要軟件,它的核心組件有vrrp ,stack, checker ,ipvs, warpper, watch dog  它是vrrp協議的實現,原生設計目的為高可用ipvs服務;keepalived能夠通過配置文件中定義生成ipvs規則 并能夠對RS的健康狀態進行檢測;vrrp_…

    Linux干貨 2016-08-30
  • linux 啟動文件 /etc/fstab 文件刪除 無法開機 修復的方法

    /etc/fstab文件刪除系統自檢無法掛載 無法啟動 按照提示進入命令行  手動寫/etc/fstab,如無內核文件  無grub  就缺啥補啥 fdisk    -l 查看當前分區  blkid    查看分區文件系統的卷標 手動掛載 …

    Linux干貨 2016-09-13
  • N23 9月底的

    1.linux下文件管理命令 cat 讀取文件 或者連接顯示touch 建立文件 改變時間 cp 復制文件 -f 強制復制 不論覆蓋-r 連同子目錄遞歸處理-l 建立硬鏈接-s 建立符號連接 rm 刪除文件 -r 遞歸刪除 連同子目錄也一起干掉-f 強制 刪除文件或者目錄-d 直接刪除目錄 file 辨識文件類型 find 查找文件 whereis 查找文件…

    Linux干貨 2016-09-25

評論列表(1條)

  • luoweiro
    luoweiro 2016-12-01 00:04

    注解的方式能加深對知識的掌握程度,而對自己來說就是知其然知其所以然了。

欧美性久久久久