程序包管理:rpm、yum、編譯詳解
rpm詳解:
一:大綱
1、什么是rpm
2、為什么要使用rpm
3、rpm能實現什么功能
4、rpm命令詳解
二、正題
1、什么是rpm
rpm全稱 RPM Package Manager,是一款行業標準的軟件包管理器。在rpm未出現之前,linux上的程序包都是以源碼方式存在,需要經過復雜的編譯,才能能在linux系統上安裝。
因為編譯方式異常復雜,絕大部分人都無法正常完成編譯工作,所以大大局限了linux的使用范圍。因此,各大發行商都自己研發出了一套程序包管理器,可以代替人工完成編譯工作,rpm就是redhat下一款比較通用的程序包管理器。
2、為什么要使用rpm
因為當下redhat與centos較其他發行版占比更高,最主要rpm功能比較強大,使用比較方便,所以非常有必要熟練掌握rpm命令的相關功能。
3、rpm能實現什么功能
rpm作為一款非常成熟的程序包管理器,可實現針對程序的安裝、升級、卸載、查詢與校驗,且可對成程序安裝包進行校驗、查詢。
4、rpm命令詳解
rpm <options> <PACKAGE|PACKAGE_FILE|FILE>
安裝:-i
rpm -i[install-option] PACKAGE_FILE(程序安裝包)
install-option:
-v:verbose,詳細信息;
-vv:更加詳細的信息;
-h:hash marks,輸出進度條,每個#代表2%的進度;
經典示例:
–test:測試安裝,檢查并報告依賴關系及沖突;
rpm -ivh –test PACKAGE_FILE
–nodeps:忽略依賴關系;
rpm -ivh –nodeps PACKAGE_FILE
–replacepkgs:重新安裝;
rpm –ivh –replacepkgs PACKAGE_FILE
–nosignature:不檢查包簽名信息,不檢查來源合法性;
rpm -ivh –nosignature PACKAGE_FILE
–nodigest:不檢查包完整性信息;
rpm -ivh –nodigest PACKAGE_FILE
升級:
rpm -U[install-option] PACKAGE_FILE
rpm -F[install-option] PACKAGE_FILE
-U:升級或安裝,如未安裝,則執行安裝;
-F:升級,只執行升級;
rpm -<U|F>vh PACKAGE_FILE
install-option:
–oldpackage:降級安裝;
rpm -Uvh –oldpackage PACKAGE_FILE
–force: 強制升級;
RPM -Uvh –force PACKAGE_FILE
注意:(1)、不要對內核做升級操作;Linux支持多內核版本并存,因此,直接安裝進新版本內核;
(2)、如果某原程序包的配置文件安裝后曾被修改過,升級時,新版本的程序提供的統一配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名為(FILENAME.rpmnew)后提供
卸載:-e
rpm -e[options] PACKAGE(已安裝的程序)
rpm –evh
options:
–allmatches:卸載所有匹配指定名稱的程序包的各版本;
–nodeps:忽略依賴關系
–test:測試卸載,干嚎模式
查詢:-q
rpm -q [select-options][query-options] <PACKAGE|PACKAGE_FILE>
[select-options]
-a:查詢所有已經安裝過的包;
-f:查詢指定的文件有那個程序包安裝生成;
-p:用于實現對未安裝的程序包執行查詢操作;
功能
–whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序寶提供;
–whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;
[query-options]
-l: 程序安裝生成的所有文件列表;
-i: 程序包相關的信息,版本號、大小、所屬的包租、等;
-c: 查詢指定的程序提供的配置文件;
-d: 查詢指定的程序包提供的文檔;
–provides: 列出指定的程序包提供的所有的CAPABILITY;
-R: 查詢指定的程序包的依賴關系
–scripts: 查看程序包自帶的腳本片段;
用法:
針對已安裝程序:
-qi PACKAGE
-ql PACKAGE
-qf FILE
-qc PACKAGE
-ql PACKAGE
-qd PACKAGE
…..
針對rpm安裝包:
-qpi PACKAGE_FILE
-qpl PACKAGE_FILE
-qpc PACKAGE _FILE
-qpl PACKAGE_FILE
-qpd PACKAGE_FILE
…..
校驗:-V
一般情況下,rpm會自動校驗已安裝的rpm包
來源合法性驗證
完整性驗證
rpm -V PACKAGE
導入信任的包制作者密鑰:
rpm –import
密鑰位置:
/etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-#
鏡像中的 RPM-GPG-KEY-CentOS-#
驗證rpm安裝包:
安裝時會自動驗證安裝包;
手動驗證:
rpm -k PACKAGE_FILE
數據庫重建:
rpm 管理器數據庫路徑:/var/lib/rpm
查詢操作:通過此處的數據庫進行
centOS 6:
rpm {–initdb|rebuilddb}
–initdb:初始化數據庫,當前無任何數據庫可初始化創建一個新的;當前有時不執行任何操作;
–rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新構建;
centOS 7:
rpmdb {–initdb|rebuilddb}
–initdb:初始化數據庫,當前無任何數據庫可初始化創建一個新的;當前有時
–rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新構建;
注:構建數據庫時非常占用資源,如果系統正在繁忙時謹慎使用?。?/span>
rpm總結:
rpm作為目前linux系統中最常用的程序包管理器,其強大的功能是功不可沒的。通過高度靈活的選項可以完成諸多管理操作,所以熟練掌握rpm命令是管理程序的不二法寶。
yum詳解:
一、大綱
1、什么是yum
2、為什么要使用yum
3、yum能實現什么功能
二、正題
1、什么是yum
yum全稱為 Yellow dog Updater, Modified,是一款運行在redhat和centos中的shell前端程序包管理器。能夠從指定的服務器自動下載RPM包并且安裝,(或從本地yum倉庫中下載安裝)可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。
2、為什么要使用yum
雖然rpm功能強悍,但是rpm有一個致命的確定:無法解決程序依賴關系。這在程序管理中至關重要,因為一個程序或許依賴于眾多程序才能運行,而眾多程序中的某個程序又會依賴其他程序。。。這樣會使程序的安裝工作變得異常繁瑣,嚴重影響了程序使用。所以這時就出現了一款能解決程序依賴關系的程序包管理器–yum。使用yum,最重要的是可以解決程序依賴關系,為批量安裝程序節省了大量的時間。
3、yum能實現什么功能
yum功能與rpm類似,在解決依賴關系的基礎上能實現對程序的安裝、升級、卸載、查詢、降級等。yum還可以在本地將所需要的rpm包手動創建為yum倉庫,自動解決依賴關系。yum可支持ftp、http、file等常見協議,為yum提供更好的兼容性。
4、yum實現與各命令詳解
yum可通過兩種方式實現:一種是直接加載網上的yum倉庫,前提是必須能連上互聯網;另一種是加載本地yum源來實現安裝。
首先說一下yum配置文件:(大寫單詞表示可自定義)
/etc/yum.conf:這個是yum的主配置文件,都是一些全局配置,一般如果沒有特殊需求的話不用配置;
/etc/yum.repo.d/*.repo:這個是yum倉庫的配置文件,每一個文件可以配置多個yum倉庫;
想要實現yum倉庫,首先必須要配置/etc/yum.repo.d/NAME.repo,其結構如下:
[repositoryID] :自定義名稱與文件名相同
name=NAME :倉庫的名稱,可自定義
baseurl=url:// :倉庫的具體地址,可以為ftp:// http:// file:///協議;
url:// :為鏡像地址,鏡像原必須與上面相同,可以不寫;
enable={1|0} :默認為1,表示啟用,0為關閉此yum倉庫;
gpgcheck={0|1} :表示是否需要檢查次yum的來源,0為關閉;
gpgkey=URL :提供檢查來源的地址
enablegroups={1|0} :是否支持組管理
failovermethod={rounrobin|priority}:如有多個url時的選擇模式,默認為輪詢;
輪詢 優先級
cost= :開銷,表示如有多個repo文件時,讀取此文件的優先級;
注:粗體表示的參數是必須的,其他的可以省略;
配置yum倉庫:
如果是網絡上的yum倉庫,則baseurl直接寫入網絡yum倉庫的地址,如下:
編輯/etc/yum.repo.d/NAME.repo (注:NAME是可自定義的)
[repositoryID]
name=NAME
baseurl=url:// (寫入網上的yum倉庫地址)
enable=1
gpgcheck=0
然后保存退出即可
如果是本地的,則如下:
本地倉庫的安裝包都在原版鏡像下的Package(os6,7)下,所以可按照以下步驟參考進行;
mkdir /mnt/repo
mount /dev/cdrom /mnt/repo (如果鏡像已經加載,清先卸載后重新掛載到指定目錄)
編輯/etc/yum.repo.d/NAME.repo (注:NAME是可自定義的)
[repositoryID]
name=NAME
baseurl=file:///mnt/repo
enable=1
gpgcheck=0
然后保存退出即可
以上yum倉庫就部署完畢
yum的用法:
yum [options] [command] [package …]
因為yum的參數太多,可使用 –help來詳解,以下只列出一些常用和實用的選項
顯示倉庫列表:
yum repolist [all|enabled|disabled]
顯示程序包:
yum list
# yum list [all | glob_exp1] [glob_exp2] […]
# yum list [available|installed|updates] [glob_exp1] […]
有但未安裝 glob表達式
安裝程序包:
yum install [PACKAGE1,PACKAGE2…..]
yum reinstall [PACKAGE1,PACKAGE2…..] (reinstall:重新安裝)
注:在安裝的過程中會彈出:
輸入y繼續安裝;
降級安裝:
yum downgrade package1 [package2] […]
升級程序包:
yum update [package1] [package2] […]
檢查可用升級:
yum check-update
卸載程序包:
會提示是否卸載,選擇是
查看程序包:
yum info package
查看指定的特性(可以是某文件)是由哪個程序包所提供:
yum provides | whatprovides feature1 [feature2] […]
清理本地緩存:
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
構建緩存:
yum makecache
搜索: 以指定的關鍵字搜索程序包名及summary(摘要)信息;
yum search string1 [string2] […]
查看指定包所依賴的程序及其提供的capabilities(功能):
yum deplist package1 [package2] […]
查看yum事物歷史:
history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll‐back|new|sync|stats]
示例:yum history list
安裝及升級本地程序包:
localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
localupdate rpmfile1 [rpmfile2] […]
注:在實際工作中,可直接使用install后跟包名,yum會自動識別安裝包并解決依賴關系;
包組管理命令:
yum還支持包組管理,使用方法同單個安裝類似,只是加了group,例如:
grouplist:[hidden] [group wildcard] […]
groupinstall:group1 [group2]
groupupdate: group1 [group2]
groupremove group1 [group2]
groupinfo: group1 [group2]
yum的命令行選項:(命令行權限大于配置文件)
-y:表示自動安裝,無需提示;
-q:表示靜默安裝,不顯示安裝過程;
–nogpgcheck:禁止進行gpgcheck;
–disablerepo=REPOIDGLOB:臨時禁用此處指定的repo,主要用于在repo文件沖突的情況下使用;
–enablerepo=REPOIDGLOB:臨時啟用此處指定的repo
–noplugins:禁用所有插件
創建yum倉庫:
creatrepo
createrepo是一款本地yum源制作工具,可以手動將一些rpm做成yum倉庫,解決依賴關系。
默認此工具沒有安裝,需要先安裝在使用:yum -y install createrepo
使用方法:可直接在rpm包目錄里:createrepo ./
有一個常用選項:–basedir:指定repo存放位置(createrepo ./ –basedir /DIR )
最后再說一下repo配置文件中可用的變量:
因為一條yum倉庫url在被多個用戶訪問時,每個用戶的linux版本與平臺都不一樣,所以為了能夠識別每個用戶的系統版本與平臺,就在url中引入變量,讓系統自動完成系統與平臺識別。
$releasever:當前OS的發行版的主版本號;
$arch:平臺;
$basearch:基礎平臺
$YUM0-$YUM9 自定義變量
示例: http://mirrors.magedu.com/centos/$releasever/$basearch/os
程序包編譯安裝
一:大綱
1、什么是編譯安裝
2、為什么要使用編譯安裝
3、編譯安裝能實現什么功能
4、編譯安裝詳解
二、正題
1、什么是編譯安裝
編譯安裝通俗的說是就是手動將程序的源碼部署到系統中去,通常需要三步才能完成安裝工作;
2、為什么要使用編譯安裝
編譯安裝是根據系統環境,在最優化的情況下完成代碼編譯工作,特點就是完全適應當前環境,可以最大化提升程序運行速度與系統穩定。
3、編譯安裝能實現什么功能
編譯安裝相比rpm包更加底層,所以可添加各種選項與參數來調節程序安裝的過程,滿足用戶的需求,是一種更加高級的程序安裝方式;再而且程序剛被發布是通常都是以源碼包的方式,只能通過編譯安裝來實現功能,所以編譯安裝是安裝程序的必要技能。
4、編譯安裝詳解
編譯安裝通常需要三個步驟:
./configure (在源碼包中)
make
make install:(相當使用install命令)
第一步:./configure
(1)通過選項傳遞參數,指定啟用特性、安裝路徑等生成makefile文件;
(2)檢查依賴到的外部環境;
(3)可通過–help來獲取此包所支持的選項;
選項分類:
指定安裝路徑(默認/usr/local)
–prefix=/PATH/TO/SOMEWHERE:指定默認安裝位置;
–sysconfdir=/PATH/TO/SOMEWHERE:配置文件安裝位置;
System type:系統類型(交叉編譯)
可選特性
–disable-FEATURE:禁止某特性
–enabled-FEATUR [=ARG]:啟用某特性
可選包
–with-PACKAGE [=ARG] 依賴包,必須有此包才能實現某功能。
–without-PACKAGE:不需要某個包
第二步:make
根據makefile文件,構建應用程序;
第二步沒有選項,這只是一個編譯過程;
第三步:make install
將上一步編譯完成后生成的程序文件復制到對應的目錄中。
第三步也沒有選項,這只是執行復制的一個過程。
安裝后的配置:
安裝完成后只是將程序文件部署到系統中,如果要使用的話,還需要以下步驟才能夠真正完成程序安裝;
(1)導出二進制程序目錄至PATH環境變量中;
編輯文件/etc/profile.d/NAME.SH
export PATH=/PATH/TO/BIN:$PATH
(2)導出庫文件路徑
編輯/etc/ld.so.conf.d/NAME.conf (直接寫入lib路徑)
/usr/local/apache2/lib
讓系統重新生成緩存:
ldconfig -v
(3)導出頭文件:
ln -s include
(4)導出幫助手冊:
編輯/etc/man.config
添加MANPATH路徑
原創文章,作者:N25_韓奇洋,如若轉載,請注明出處:http://www.www58058.com/66338
總結的很好,請繼續保持~~~加油!!