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:為所有倉庫提供公共配置
/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中就會顯示該倉庫列表
顯示程序包:
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]
yum history
yum history info 15 //查看yum history id為15 的 操作
yum history undo 15 //撤銷yum history id為15 的 操作
日志 : /var/log/yum.log
由于我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系統可以選擇的包組 )
所以在使用 yum groupinstall groupname 安裝包組的時候,需要加雙引號" " ,否則無法識別
如何使用光盤當作本地yum倉庫:
(1) 掛載光盤至某目錄,例如/media/cdrom
# mount /dev/cdrom /media/cdrom
(2) 創建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
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
創建yum倉庫:
createrepo [options] <directory>
no.1 復制倉庫安裝包至自定義目錄,自定義目錄為自創的yum倉庫
no.2 在yum倉庫下運行命令 createrepo . (. 為當前目錄) , 運行成后會生成一個repodata ,一個yum倉庫的標記文件
no.3 安裝yum倉庫的rpm包
以下為創建yum倉庫,并安裝 tree
當然 , 安裝倉庫沒有的rpm包是會報錯的
====================================================================================================================================
程序包編譯安裝:
若要在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版本比較穩定)
1、 ./configure:(一般來說,我們都先要看一下幫助文件,以了解軟件的相關信息: configure –help 或者是 less README )
(1) 通過選項傳遞參數,指定啟用特性、安裝路徑等;執行時會參考用戶的指定以及makefile.in文件生成makefile
(2) 檢查依賴到的外部環境 (需要檢查,了解)
(3) 最后才運行configure (./configure)
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
(2) 導入庫文件路徑
編輯/etc/ld.so.conf.d/NAME.conf
添加新的庫文件所在目錄至此文件中;
讓系統重新生成緩存:
ldconfig [-v]
(3) 導入頭文件(程序運行,很多時候都是要依賴頭文件)
基于鏈接的方式實現:
ln -sv
在 /usr/include/ 目錄下創建 /usr/lcoal/apache2/include/ 的軟鏈接
(4) 導入幫助手冊
編輯/etc/man.config|man_db.conf文件
添加一個MANPATH
開發工具:
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",
原創文章,作者:hunter,如若轉載,請注明出處:http://www.www58058.com/39458
文章思路清晰,整篇博客能讓人看到很多專業性所在,還能看出很用心的地方,革命尚未成功,同志仍需努力啊,加油!