Linux程序包管理之RPM、YUMhtml
1、程序包管理工具前端
1.程序包製做流程node
程序源碼預處理後進行編譯,編譯成目標代碼,而後彙編成二進制代碼,最後將源程序所用的庫代碼與目標代碼合併,最終造成可執行的二進制代碼。web
2.程序包管理工具數據庫
通常狀況下一個程序不止一個二進制程序,可能存在配置文件,幫助文檔等相應文件,這時候咱們就須要一個打包軟件將程序包及相關組件進行打包,此時就須要使用程序包管理工具。apache
程序包管理器功能:vim
把二進制程序、庫文件、配置文件、幫助文件打包成一個文件;從而更方便地實現程序包的安裝、升級、卸載和查詢等管理操做後端
3.經常使用程序包管理工具緩存
後端工具:服務器
Debian:工具dpt, dpkg;包名 ".deb"
RedHat:工具 rpm ;包名 ".rpm"
前端工具:自動解決依賴關係;
RHEL系列: yum
Debian: apt-get (apt-cache)
SUSE:: zypper
Fedora : dnf
2、RPM命令管理程序包
1.什麼是RPM
RPM是一個開放的軟件包管理器,全稱是Redhat Package Manager,它工做於Red Hat Linux以及其它Linux系統,成爲了Linux中公認的軟件包管理標準。
2.RPM的命名格式
name-version-release-release.arch.rpm
包名-主版本號.次版本號.發行號.arch.rpm
主版本號:軟件內容發生重大改進會修改主版本號
次版本號:軟件內容的某個子功能發生重大變化會修改次版本號
發行號:修正了部分bug,調整了一點功能會修改發行號
arch:表示爲arch平臺架構
rpm:軟件包擴展名
3.RPM經常使用命令
rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
查詢:
rpm {-q|--query} [select-options] [query-options]
[select-options]:
PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本;
-a, --all:查詢全部已經安裝過的包;
-f FILE:查詢指定的文件由哪一個程序包安裝生成;
-p, --package PACKAGE_FILE:用於實現對未安裝的程序包執行查詢操做;
--whatprovides CAPABILITY:查詢指定的CAPABILITY由哪一個程序包提供;
--whatrequires CAPABILITY:查詢指定的CAPABILITY被哪一個包所依賴;
[query-options]
--changelog:查詢rpm包的changlog;
-l, --list:程序安裝生成的全部文件列表;
-i, --info:程序包相關的信息,版本號、大小、所屬的包組等;
-c, --configfiles:查詢指定的程序包提供的配置文件;
-d, --docfiles:查詢指定的程序包提供的文檔;
--provides:列出指定的程序包提供的全部的CAPABILITY;
-R, --requires:查詢指定的程序包的依賴關係;
--scripts:查看程序包自帶的腳本片段;
安裝:rpm {-i|--install} [install-options] PACKAGE_FILE ...
常規選項:
-v:verbose,詳細信息
-vv:更詳細的輸出
安裝選項:
-h:hash marks輸出進度條;每一個#表示2%的進度;
--test:測試安裝,檢查並報告依賴關係及衝突消息等;
--nodeps:忽略依賴關係;不建議;
--replacepkgs:從新安裝
升級:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-U:升級或安裝;
-F:升級
rpm -Uvh PACKAGE_FILE ...若是裝有老版本的,則升級;不然,則安裝
rpm -Fvh PACKAGE_FILE ...若是裝有老版本的,則升級;不然,則退出
--oldpackage:降級;
--force:強制升級;
注意:
(1) 不要對內核作升級操做;Linux支持多內核版本並存,所以,直接安裝新版本內核;
(2) 若是某原程序包的配置文件安裝後曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)後提供;
卸載:
rpm {-e|--erase}[--allmatches][--nodeps][--noscripts] [--test] PACKAGE_NAME ...
-e :卸載
--allmatches:卸載全部匹配指定名稱的程序包的各版本;
--nodeps:忽略依賴關係
--test:測試卸載,dry run模式
校驗:
rpm {-V|--verify} PACKAGE_FILE ... 無輸出信息即爲正常、
數據庫重建:
rpm管理器數據庫路徑:/var/lib/rpm/,查詢操做是經過此處的數據庫進行;
rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]
--initdb:初始化數據庫,當前無任何數據庫可實始化建立一個新的;當前有時不執行任何操做;
--rebuilddb:從新構建,經過讀取當前系統上全部已經安裝過的程序包進行從新建立;
3、YUM程序包管理
YUM在rpm的基礎上很好的解決了軟件包之間的依賴關系。 YUM是一種基於C/S架構的服務,須要Server和Client來進行使用,即yum倉庫和本地的yum工具。
1.YUM倉庫(即服務端配置):
yum倉庫能夠是本地文件、ftp服務器和http服務器。yum倉庫的配置文件即爲YUM的元數據文件,元數據文件須要存放在一個叫repodata的目錄下面,其目錄和組成yum衆多rpm包須要同處於同一個目錄下(在此目錄下可用createrepo命令建立本地yum倉庫)。
primary.xml.gz:定義了當前倉庫中全部的rpm包列表以及各包之間的依賴關係和每一個軟件包安裝生成的文件列表
filelists.xml.gz:當前倉庫中全部RPM包的文件列表
other.xml.gz:額外信息,rpm包的修改日誌
repomd.xml:記錄的是上面三個文件的時間戳和校驗和
comps.xml:RPM包分組信息
2.YUM本地工具(即客戶端配置):
客戶端配置文件在/etc/yum.repos.d/*.repo文件內進行定義,能夠定義多個.repo文件,也能夠在一個repo文件定義多個yum服務器,其格式以下:
[RepositoryID]
name=Some name for this repository
baseurl=yum倉庫路徑
enabled={0|1}:是否啓用此倉庫,默認不寫的時候是啓用
gpgcheck={0|1}:校驗文件的完整性
yum倉庫的路徑有三種:
ftp服務器: ftp://
http服務器:http://
本地文件 : file:///
3.YUM經常使用命令
顯示倉庫列表:yum repolist
顯示程序包:
yum list:查看yum列表
all:默認選項,會列出全部的rpm包
available:列出倉庫中未安裝的包
installed:列出顯示已經安裝的軟件
updates:列出能夠升級的軟件包
yum clean:清除緩存
安裝程序包:
yum install Package
yum –y install Package直接自動完成軟件的安裝
yum reinstall Package 從新安裝
升級程序包:
update Package 升級軟件包
downgrade Package (降級)
檢查可用升級:
check-update
卸載程序包:
remove | erase Package
查看程序包information:
yum info Package
查看指定的特性(能夠是某文件)是由哪一個程序包所提供:
provides | whatprovides feature1 [feature2] [...]
4.YUM的組管理命令
yum grouplist :查看組,包括安裝或未安裝的
yum groupinstall GROUPNAME :安裝組,注意若是組名中間有空格,須要使用」」
groupinfo 組名:顯示組包含包信息(若是組名中間有空格,使用」」)
groupremove :刪除組
4、源碼程序安裝
1.經過「包組」提供開發組件
CentOS 6: "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-PACKAGE[=ARG]
--without-PACKAGE
第二步:make
第三步:make install
安裝後的配置:
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
2.經過編譯、安裝web服務器來講明編譯安裝的相關過程
1.解壓源碼包
tar xf httpd-2.2.29.tar.bz2並進入解壓包目錄
2.配置參數、編譯、安裝
3.添加環境變量
vim /etc/profile.d/httpd.sh ,添加以下內容
export PATH=$PATH:/usr/local/apache/bin //增長環境變量
httpd安裝完後默認主頁面文件路徑:/var/www/html/index.html