YUM,Yellow dog UpdateModified,是一個在Fedora和RedHat以及CentOS中的shell前端軟體包管理器。基于RPM包管理,能夠從指定的伺服器自動下載下傳RPM包并且安裝,可以自動處理依賴關系,并且一次安裝所有依賴的軟體包,無需繁瑣地一次次下載下傳、安裝。
1. Yum用戶端:
配置檔案:
/etc/yum.conf:為所有倉庫提供公共配置
<a href="https://s1.51cto.com/wyfs02/M02/00/1C/wKiom1mWe3_TeekrAACFa3hx34g958.png-wh_500x0-wm_3-wmp_4-s_651197008.png" target="_blank"></a>
具體參數含義為:
cachedir=/var/cache/yum/$basearch/$releasever ##yum緩存目錄,yum在此存儲下載下傳的rpm包和資料庫;
keepcache=0 ##安裝完成後是否保留軟體包,0不保留,1為保留,預設為0;
debuglevel=2 ##debug資訊輸出等級,範圍為0-10,預設為2;
logfile=/var/log/yum.log ##yum日志檔案位置;
exactarch=1 ##精确平台比對,設定為1時,yum隻會安裝和系統架構精确比對的軟體包;
obsoletes=1 ##update的參數,允許更新陳舊的rpm包;
gpgcheck=1 ##檢查安裝包的完整性和來源合法性,1檢查,0不檢查;
plugins=1 ##是否啟用插件,預設為1允許,
installonly_limit=5 ##
bugtracker_url= ##bug送出的url
gory=yum ##
distroverpkg=centos-release ##指定一個軟體包,yum會根據這個包判斷你的發行版本;
這其中也是部分的參數配置,如果想要了解更深入的可以使用如下指令進行查閱man手冊:
倉庫指向:
下面我們随機檢視yum的其中一個.repo檔案:
倉庫指向的定義:
[repositoryID]##軟體源的名稱;
name=Somename for this repository ##軟體倉庫名;
baseurl=url://path/to/repository/ ##yum源的鏡像伺服器位址;
enabled={1|0} ##是否啟用這個repo檔案,預設為1啟用;
gpgcheck={1|0} ##是否檢查安裝包的完整性以及合法性;
gpgkey=URL ##用于校驗的gpg秘鑰位址;
enablegroups={1|0} ##手否對組啟用;
failovermethod={roundrobin|priority} 預設為:roundrobin,意為從列出的baseurl裡随機挑選;
cost= ##花銷,預設為1000;
2. 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][golb_exp2]
#yum list{available|installed|updates} [glob_exp1] [...]
安裝程式包:
Install package1 [package2]…
Reinstall package1 [package2]…
在安裝過程中,會有一個詢問互動式的過程,必須選擇y才能繼續安裝,否則則不會繼續安裝;
更新安裝包:
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
搜尋:
searchstring1 [string2] […] 以指定的關鍵字搜尋程式包及summary資訊;
檢視指定的包所依賴的capabilities:
deplistpackage1 [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 - useinstall)
*localupdate rpmfile1 [rpmfile2] [...]##本地更新
(maintainedfor legacy reasons only - use update)
包組管理的相關指令:
* groupinstall group1 [group2] [...] ##組安裝
* groupupdate group1 [group2] [...] ##組更新
* grouplist [hidden] [groupwildcard] [...]##顯示組
* groupremove group1 [group2] [...]##解除安裝組
* groupinfo group1 [...] ##檢視組資訊
如何使用CD光牒當作本地yum倉庫:
(1) 挂載CD光牒至某目錄,例如/media/cdrom;
Mount –r –tiso9660 /dev/cdrom /media/cdrom;
(2) 建立配置檔案:
[centos6.6]
name=
baseurl=
gpgcheck=
enabled=
1. 将/etc/yum.repo.d下的檔案備份一份,
2. 然後建立一個.repo結尾的檔案,編輯配置檔案,儲存退出後可用yum repolist檢視yum倉庫是否建立成功;
其中cdrom.repo的配置檔案内容為:
yum的指令行選項:
--nogpgcheck:不進行gpgcheck;
-y:自動回答為yes;
-q:靜默模式;
--disablerepo=repoidglob:臨時禁用此處指定的repo;
--enablerepo=repoidglob:臨時啟用此處指定的repo;
--noplugins:禁用所有插件;
建立yum倉庫:
createrepo[options] <directory>
程式包的編譯安裝:
testapp-VERSION-release.src.rpm--> 安裝後,使用rpmbuild指令制作成二進制格式的rpm包,而後再安裝;
大概的執行流程為:源代碼 --> 預處理 --> 編譯(gcc) --> 彙編 --> 連結 --> 執行
源代碼組織格式:
多檔案:檔案中的代碼之間,很可能存在跨檔案依賴關系;
C、C++: make (configure --> Makefile.in --> makefile)
java: maven
c代碼編譯安裝三步驟:
./configure:
(1) 通過選項傳遞參數,指定啟用特性、安裝路徑等;執行時會參考使用者的指定以及makefile.in檔案生成makefile;
(2) 檢查依賴到的外部環境;
make:
根據makefile檔案,建構應用程式;
make install
開發工具:
autoconf:生成configure腳本;
automake:生成makefile.in
建議:安裝前檢視INSTALL,README
開源程式源代碼的擷取:
官方自建站點:
apache.org(ASF)
mariadb.org
代碼托管:
SourceForge
Github.com
code.google.com
c/c++: gcc (GNU C Complier)
編譯c源代碼:
前提:提供開發工具及開發環境
開發工具:make,gcc等
開發環境:開發庫,頭檔案
glibc:标準庫
通過“包組”提供開發元件
Centos6:“development tools”,“server platform development”
第一步:configure腳本
選項:指定安裝位置、指定啟用的特性
--help:擷取其支援使用的選項
選項分類:
安裝路徑設定:
--prefix=/PATH/TO/SOMEWHERE:指定預設安裝位置:預設為/usr/local/
--sysconfdir=/PATH/TO/SOMEWHERE:配置檔案安裝位置;
System types:
Optional Features:可選特性
--disable-FEATURE
--enable-FEATURE[=ARG]
Optional Packages:可選包
--with-Packages=[ARG]
--without-PACKAGE
第二步:make
第三步:make install
安裝後的配置:
(1) 導出二進制程式目錄至PATH環境變量中;
編輯檔案/etc/profile.d/NAME.sh
ExportPATH=/PATH/TO/BIN:$PATH
(2) 導出庫檔案路徑
編輯/etc/ld.so.conf.d/NAME.conf
添加新的庫檔案所在的目錄至此檔案中:
讓系統重新生成緩存:
ldconfig[-v]
(3) 導出頭檔案
基于連結的方式實作:
ln –sv
(4) 導出幫助手冊
編輯/etc/man.config檔案
添加一個MANPATH
舉例:在centos6.6上編譯安裝httpd
1. 安裝gcc編譯工具:
<a href="https://s5.51cto.com/wyfs02/M02/00/1C/wKiom1mWfMTQ6TAEAAAGEZqfD9c379.png-wh_500x0-wm_3-wmp_4-s_2951314675.png" target="_blank"></a>
2. 安裝開發元件,"Development tools" "Server PlatformDevelopment"
<a href="https://s5.51cto.com/wyfs02/M00/9E/CC/wKioL1mWfM2j6ojGAAALT4VAUnw182.png-wh_500x0-wm_3-wmp_4-s_4023768316.png" target="_blank"></a>
3. 進入下載下傳的httpd檔案夾,展開httpd-2.2.26.tar.gz,并進入http-2.2.26檔案夾:
<a href="https://s2.51cto.com/wyfs02/M02/00/1C/wKiom1mWfNzh42-GAACOENrQxjo080.png-wh_500x0-wm_3-wmp_4-s_2628163344.png" target="_blank"></a>
4. 運作http-2.2.26檔案夾下的configue腳本,并指明安裝路徑等選項:
<a href="https://s3.51cto.com/wyfs02/M01/9E/CC/wKioL1mWfOWBcrKpAAANQYBU1r4179.png-wh_500x0-wm_3-wmp_4-s_711083284.png" target="_blank"></a>
5. 等腳本運作完之後運作make指令:
<a href="https://s1.51cto.com/wyfs02/M02/9E/CC/wKioL1mWfPTD967eAAAHkYBMET4529.png-wh_500x0-wm_3-wmp_4-s_3218797590.png" target="_blank"></a>
6. 然後運作make install指令:
<a href="https://s5.51cto.com/wyfs02/M00/00/1C/wKiom1mWfQyyH8BBAAAH2ImfS8A180.png-wh_500x0-wm_3-wmp_4-s_1147202550.png" target="_blank"></a>
7. 進入安裝目錄,
<a href="https://s2.51cto.com/wyfs02/M01/00/1C/wKiom1mWfRfzcPNCAAAV5ZMEBzM503.png-wh_500x0-wm_3-wmp_4-s_101693730.png" target="_blank"></a>
測試80端口是否在監聽狀态:
<a href="https://s1.51cto.com/wyfs02/M01/9E/CC/wKioL1mWfSDSzM_mAABdJr1iKWE572.png-wh_500x0-wm_3-wmp_4-s_1990472262.png" target="_blank"></a>
8. 在網頁中測試服務狀态:
<a href="https://s5.51cto.com/wyfs02/M02/00/1C/wKiom1mWfS3DvAsrAABzk276qa0784.png-wh_500x0-wm_3-wmp_4-s_2430469534.png" target="_blank"></a>
安裝完之後的配置:
9. 導出二進制程式目錄至PATH環境變量中;
<a href="https://s3.51cto.com/wyfs02/M00/00/1C/wKiom1mWfTqAAeCQAAA-hXmpFO0482.png-wh_500x0-wm_3-wmp_4-s_3883430788.png" target="_blank"></a>
10.導出庫檔案路徑,并讓系統重新生成緩存:
<a href="https://s5.51cto.com/wyfs02/M02/9E/CC/wKioL1mWfUOxms09AAAx3VqLHg8484.png-wh_500x0-wm_3-wmp_4-s_3654503225.png" target="_blank"></a>
系統重新生成緩存:
<a href="https://s4.51cto.com/wyfs02/M00/9E/CC/wKioL1mWfU3y73lBAAAmez_fUVc456.png-wh_500x0-wm_3-wmp_4-s_961512534.png" target="_blank"></a>
11.導出頭檔案:
<a href="https://s2.51cto.com/wyfs02/M01/9E/CC/wKioL1mWfWHhBQuZAAAPhkV6vM4084.png-wh_500x0-wm_3-wmp_4-s_4286306345.png" target="_blank"></a>
12.導出幫助手冊:
<a href="https://s1.51cto.com/wyfs02/M00/00/1C/wKiom1mWfW6z9Tn7AABXjdj-f8o779.png-wh_500x0-wm_3-wmp_4-s_2130672236.png" target="_blank"></a>
此時,才算完成整個程式的編譯安裝。
本文轉自 claude_liu 51CTO部落格,原文連結:http://blog.51cto.com/claude666/1957311,如需轉載請自行聯系原作者