yum詳解及源碼包的編譯安裝

yum的功能:

    在我們使用rpm包安裝程序時,各個程序包之間可能存在非常嚴重的依賴關系,這就導致我們在安裝一個包的同時還需要安裝其他存在依賴關系的包,因此我們可以使用rpm包的前端管理工具yum,可通過yum所支持的文件共享機制來解決各個rpm包之間的依賴關系。

yum倉庫的配置文件:

          /etc/yum.conf:為所有倉庫提供配置參數。

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0  ###(是否保存緩存中的已經被下載安裝的rpm包) 會刪除已緩存的rpm包
debuglevel=2    
logfile=/var/log/yum.log    ###日志文件存放路徑
exactarch=1    ###到倉庫中下載rpm包的時候要與當前主機的版本完全匹配才能安裝
obsoletes=1
gpgcheck=1    ###是否檢查rpm包的來源合法性及數據包的完整
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

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

[repo_ID]                   ###指定ID,不能重復,不能省略
name=String                  ###指定倉庫名稱
baseurl=倉庫的訪問路徑             ###指定倉庫的訪問路徑,不能省略(repodate所在目錄的父目錄即為倉庫所在路徑)
                               查看是否配置成功可以通過yum repolist查看
enabled={1|0}                 ###是否啟用此倉庫 默認啟用,省略后默認值為0
gpgcheck={1|0}                  ###是否檢查完整性和來源合法性,不能省略
gpgkey=公鑰文件                ###可以在本地,也可是服務器端路徑
cost=定義此倉庫開銷              ###默認為1000 開銷越小 優先級越高

            yum的repo配置文件中可用的變量:
                        $releasever: 當前OS的發行版的主版本號
                        $arch: 平臺, i386,i486,i586,x86_64等
                        $basearch:基礎平臺; i386
                        $YUM0-$YUM9:自定義變量
                實例:
                        http://server/centos/$releasever/$basearch/
                        http://server/centos/7/x86_64
                        http://server/centos/6/i384

yum倉庫

由于在某些特定的情況下,比如某些公司不能通過服務器訪問外網等,需要我們自行配置和創建yum倉庫,那么就可以采取如下四種辦法解決:

        方法1、使用本地掛載光盤的方法來創建yum倉庫

                        a、首先要查看我們的光盤是否已經掛載,可通過df命令查看,如果沒有掛載可通過mount命令進行掛載,如果時cenots6可以通過如下方式掛載。

root@cenots6.8  ~ # cd /misc       ####只要訪問/misc/cd 目錄 ,光盤就會自動掛載到/misc/cd下
root@cenots6.8  /misc # ls -a
.  ..
root@cenots6.8  /misc # cd cd
root@cenots6.8  /misc/cd # df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda3      121455724 4401412 110878008   4% /
tmpfs             502068      76    501992   1% /dev/shm
/dev/sda1         194241   34100    149901  19% /boot
/dev/sr0         3824484 3824484         0 100% /media/CentOS_6.8_Final
/dev/sr0         3824484 3824484         0 100% /misc/cd    #######此處可以看到光盤已經掛載到了/misc/cd上

 
                      b、掛載完光盤后,我們cd/misc/cd目錄下后,就可以看到一個repodata目錄,該目錄存在的位置就是我們要指向的yum倉庫的路徑,RPM-GPG-KEY-CentOS-7就是公鑰(/etc/pki/目錄下也可以獲取公鑰)。

root@cenots6.8  /misc/cd # ls
CentOS_BuildTag  EULA  images    Packages                  repodata              RPM-GPG-KEY-CentOS-Debug-6     RPM-GPG-KEY-CentOS-Testing-6
EFI              GPL   isolinux  RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-6  RPM-GPG-KEY-CentOS-Security-6  TRANS.TBL

                        c、接下來我們就可以配置yum倉庫,vim /etc/yum.repos.d/CentOS-Local.repo注意這里我們所創建的文件必須要以repo結尾,這樣才能夠被識別生效,配置參數如下

[cdrom]
name= cdrom
baseurl=file:///misc/cd
enabled=1
gpgcheck=0

                        d、執行yum repolist命令,查看是否正常工作。

root@cenots6.8  /etc/yum.repos.d # yum repolist
已加載插件:fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
cdrom                                                                                                                                 | 4.0 kB     00:00 ... 
倉庫標識             倉庫名稱             狀態
cdrom               cdrom              6,696
repolist: 6,696

                        注意:baseurl可以指多條路徑,但是要求每條路徑指向的內容是一樣的,增加冗余能力

        方法2、通過createrepo自行創建yum倉庫

                        a、首先創建一個目錄用于存儲rpm包,mkdir /testdir/testrepo,并cd到該目錄下 

                        b、訪問指定的路徑,查找自己的所要下載rpm包到/testdir/testrepo路徑下,然后createrepo /testdir/testrepo創建yum倉庫

root@cenots6.8  /testdir/testrepo # ls
tree-1.5.3-3.el6.x86_64.rpm
root@cenots6.8  /testdir/testrepo # createrepo ./
Spawning worker 0 with 1 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
root@cenots6.8  /testdir/testrepo # ls   ###創建完成之后我們會發現目錄下多了一個repodata目錄 此時手動創建yum倉庫成功
repodata  tree-1.5.3-3.el6.x86_64.rpm

                        d、配置/etc/yum.repos.d/CentOS-Local.repo文件

[tree]
name=tree
baseurl=file:///testdir/testrepo
gpgcheck=0
enabled=1

                        e、yum repolist查看生效有否。

root@cenots6.8  /etc/yum.repos.d # yum repolist
已加載插件:fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
cdrom                                                                                                                                 | 4.0 kB     00:00 ... 
tree            倉庫名稱         狀態
cdrom            cdrom           6,696
tree            tree            1
repolist: 6,697

        方法3、基于Ftp的方式配置yum倉庫

                        a、安裝vsftpd,輸入yum install vsftpd,在/var/ftp/pub目錄下創建rpm目錄,并且把/testdir/testrepo中的全部文件(/*)拷貝到rpm目錄中,然后執行service vsftpd start開啟vsftpd服務。

                        b、配置/etc/yum.repos.d/local.repo文件

[Ftprepo]
name=Ftp-repo
baseurl=ftp://192.168.1.103/pub/rpm
gpgcheck=0
enabled=1

                        c、yum repolist查看生效與否。

        方法4、基于htp的方式配置yum倉庫

                        a、安裝httpd,輸入yum install httpd,然后輸入service http start啟動,把/var/ftp/pub/目錄下的所有文件復制到/var/www/htm/目錄下。

                        b、在瀏覽器中熱輸入http://192.168.1.103/rpm

截圖20160824215329.png

                        c、 編輯/etc/yum.repos.d/local.repo文件配置倉庫路徑。

                        d、yum repolist查看生效與否。

                注意:/etc/yum.repos.d/目錄下,執行mv CentOS-Base.repo CentOS-Base.bak,這樣CentOS-Bse.repo就停止工作也做備份,以后重新使用把bak的后綴名改成repo即可,禁用啟用yum倉庫也可以使用yum-config-manager –disable “倉庫名" 禁用倉庫, yum-config-manager –enable “倉庫名” 啟用倉庫。

程序包的編譯安裝

       程序包的安裝編譯:

                1、拿到源代碼,并解壓:

                        # tar xf package-version.tar.{gz|bz2|xz}

                        注意:展開后的目錄名通常為package-version

                2、切換至源碼目錄中

                        # cd package-version

                3、執行configure腳本

                        # ./configure

                4、編譯

                        # make

                5、安裝

                        # make install

                    建議:安裝前先查看INSTALL,README

                  configure腳本功能:檢查編譯環境是否滿足編譯需求,并定義當前程序編譯時啟用哪個特性或功能,以及安裝路徑的定義等等;

                  GNU/make:項目管理工具  通過make命令來調用GCC編譯工具來實現編譯    

        configure腳本的通用功能:

            1、指定安裝路徑:

                    –prefix=/usr/local/packagename 指定安裝路徑

                    –sysconfdir=/etc/packagename 指定配置文件的存放路徑

            2、指定啟用/禁用的特性:

                    –enable-feature: 例如–enable-fpm

                    –disable-feature: 例如 –disable-socket

            3、指定所依賴功能、程序或文件

                    –with-function:啟用某功能

                    –without-function:禁用某功能  

                不同的程序,其configure腳本功能不同,要獲取幫助:./configure –help

        安裝后的配置:

                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|man_db.conf文件
                                    添加一個MANPATH

                                            vim /etc/mandb.conf
                                            MANDATORY_MANPATH /usr/local/NAME/man

        應用舉例:源碼安裝apache

        1、下載httpd到指定目錄中。

root@cenots6.8  ~ # lftp http://mirrors.sohu.com/apache/
cd 成功, 當前目錄=/apache                                  
lftp mirrors.sohu.com:/apache> ls
lftp mirrors.sohu.com:/apache> get httpd-2.2.31.tar.bz2 
5610489 bytes transferred in 51 seconds (106.8K/s) 
lftp mirrors.sohu.com:/apache> bye
root@cenots6.8  ~ # ls
aa  cc   dir1  httpd-2.2.31.tar.bz2  install.log.syslog  模板  圖片  下載  桌面
bb  dir  ee    install.log           公共的              視頻  文檔  音樂

         2、解壓程序包,并切換到nginx-1.9.9目錄中

root@cenots6.8  ~ # tar xf httpd-2.2.31.tar.bz2 
root@cenots6.8  ~ # ls
aa  cc   dir1  httpd-2.2.31          install.log         公共的  視頻  文檔  音樂
bb  dir  ee    httpd-2.2.31.tar.bz2  install.log.syslog  模板    圖片  下載  桌面
root@cenots6.8  ~ # cd httpd-2.2.31
root@cenots6.8  ~/httpd-2.2.31 # ls
ABOUT_APACHE  CHANGES        httpd.dsp       libhttpd.dep  NOTICE            server
acinclude.m4  config.layout  httpd.mak       libhttpd.dsp  NWGNUmakefile     srclib
Apache.dsw    configure      httpd.spec      libhttpd.mak  os                support
build         configure.in   include         LICENSE       README            test
BuildAll.dsp  docs           INSTALL         Makefile.in   README.platforms  VERSIONING
BuildBin.dsp  emacs-style    InstallBin.dsp  Makefile.win  README-win32.txt
buildconf     httpd.dep      LAYOUT          modules       ROADMAP

        3、配置configure命令指定安裝路徑和配置文件的存放路徑

./configure --prefix=/usr/local/http2 --sysconfdir=/etc/http2/

注意:如果在執行此命令報錯,error requires the *** library.可通過yum search ***,然后執行yum install ***—devel.x86_64 (支包一般都在***—devel包中)。

         4、make
         5、make install
         6、cd /usr/local/http2/bin   執行./apachectl start
         7、netstat -ant
         8、iptables -F
         9、在瀏覽器處輸入ip地址查看狀態即可。

1.png

yum的常用命令及選項

    yum的常用命令:

            顯示倉庫列表:yum repolist

            顯示程序包:yumlist

            安裝程序包:yum install package

            升級程序包:yum update package

            降級程序包:yum downgrade package

            卸載程序包:yum remove | erase  package

            檢查可用升級:yum check-update

            查看程序包信息:yum info

            查看指定的特定是由哪個程序包所提供的:yum provides | whatprovides feature

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

            構建緩存:yum makecache

            搜索:yum search string1 [string2] […]

            查看指定程序包所依賴的能力:yum deplist package1 [package2] […

            查看yum事物歷史:

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

                            yum history redo 6   重新執行編號為6的操作

                            yum history undo 6   撤銷之前編號6 的操作

            查看yum的日志:/var/log/yum.log

            創建yum倉庫:createrepo /path/to/dir

            包組管理的相關命令:

                            yum groupinstall group1 [group2] […]    
                            yum grouplist [hidden] [groupwildcard] […]
                            yum groupremove group1 [group2] […]
                            yum groupinfo group1 […]

            通過包組提供開發組件:

                            centOS5:“Development Tools”和“Development Libraries”

                            centos6:Develop Tools  Server Platform Development

                            centos7:Develop Tools

    yum的命令行選項:

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

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

(3)
NarutoNaruto
上一篇 2016-08-25
下一篇 2016-08-25

相關推薦

  • SSH端口轉發

    ? SSH 會自動加密和解密所有SSH 客戶端與服務端之間的網絡數據。但是,SSH 還能夠將其他TCP 端口的網絡數據通過SSH 鏈接來轉發,并且自動提供了相應的加密及解密服務。這一過程也被叫做“隧道”(tunneling),這是因為SSH 為其他TCP 鏈接提供了一個安全的通道來進行傳輸而得名。例如,Telnet,SMTP,LDAP 這些TCP 應用均能夠…

    2017-09-10
  • Linux磁盤、文件系統管理

    對Linux而言,其哲學思想之一就是一切皆文件,因此Linux之上所有設備的操作都是通過文件接口來實現的,也就是說在訪問設備的時候就如同訪問一個文件一樣,因為他們使用的都是文件系統接口。  設備也分種類,如:     1、塊設備:block 其存取單位是“塊”,如硬盤    &n…

    Linux干貨 2016-08-29
  • Mariadb之SELECT語法練習

    一 、導入hellodb.sql生成數據庫后實現以下操作     # mysql -uroot -h172.16.23.23 -pcento.123 < hellodb.sql     mysql>&nbsp…

    Linux干貨 2014-08-25
  • SQL優化大全

    1. 優化SQL步驟 1. 通過 show status和應用特點了解各種 SQL的執行頻率        通過 SHOW STATUS 可以提供服務器狀態信息,也可以使用 mysqladmin extende d-status 命令獲得。 SHOW STATUS 可以根據需要顯示 session 級別的統計結果和 g…

    Linux干貨 2015-04-13
  • Linux上的文件管理類命令

    N27-第二周作業

    2017-10-08
  • Linux 基礎知識

    1、環境變量 2、幫助 3、時間 4、引用 5、命令歷史 6、FHS 7、命令別名 8、Globbing文件名通配 9、命令,路徑補全 10、快捷鍵 ============================================ shell:是用戶和linux(或者kernel)之間的接口程序,你在提示符下輸入的每個命令都先由shell解釋(命令語…

    Linux干貨 2016-06-09

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-26 13:32

    文章對內容總結的很全面,同時通過多種方式自建yum源,并配置使用,加深了自己對yum工具的使用。如果在用詞上更專業點,會讓文章看起來更優秀哦。

欧美性久久久久