Linux軟件包管理
軟件包的組成部分:
1、二進制程序
2、配置文件
組成方式:
單文件,如/etc/pam.conf
將主配置文件切割爲多個小文件,並放置於某目錄中
單文件,在內部分割爲多個片段(用[]分割爲多個片段,如samba、PHP)
3、庫文件(二進制,可執行)
靜態庫:
動態庫:
4、幫助文件:
手冊頁
軟件包的種類:
1、可通過軟件包管理器安裝的軟件包
根據使用的linux的操作系統不同,他的軟件包也不同,當前linux下有兩種比較流行的軟件包,一種是以Redhat、SUSE爲主的rpm包,一種是以Debian、Ubuntu爲主使用的deb軟件安裝包
RPM是RedHat Package Manager(RedHat軟件包管理工具)的縮寫,這一文件格式名稱雖然打上了RedHat的標誌,但是其原始設計理念是開放式的,現在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分發版本都有采用,可以算是公認的行業標準了。
rpm包安裝命令是“rpm -參數” 包管理工具:yum
deb包安裝命令是“dpkg -參數”包管理工具apt-get
rpm包的組成和命名:
包:組成部分
主包:如:bind-9.7.1-1.el5.i586.rpm
子包:如:bind-libs-9.7.1-1.el5.i586.rpm
bind-utils-9.7.1-1.el5.i586.rpm
包名格式:name-version-release.arch.rpm
bind-major.minor.release-release.arch.rpm
主版本號:重大改進
次版本號:某個子功能發生重大變化
發行號:修正了部分bug,調整了一點功能
2、二進制格式的壓縮軟件包
二進制格式的壓縮軟件包是由第三方編譯好的二進制文件和一些幫助文件,這種包直接解壓縮就可以使用,但這種包要注意所下載包適應的平臺,如x86架構32位平臺和64位平臺,或其他架構的等,都用的是不同的包,因爲二進制包是別人編譯好的,該包的編譯平臺就決定了該包的運行平臺。
3、可編譯的源碼軟件包
該軟件包就是帶有程序的源代碼的安裝包,幾乎沒有平臺限制,但該包需要自己手動編譯,與上面兩種軟件包相比雖然比較麻煩,但可以指定軟件的某些特性,這是上面的兩種軟件包所不具備的。
軟件包的安裝
1、rpm包安裝
Rpm包安裝有兩的命令rpm和yum,yum的使用需要配置yum源,我們在下面介紹yum安裝的時候再詳細介紹yum及使用,現在先介紹rpm命令安裝及其常用用法
rpm命令安裝
(1)、安裝
rpm -i /PATH/TO/PACKAGE_FILE
-h: 以#顯示進度;每個#表示2%;
-v: 顯示詳細過程
-vv: 更詳細的過程
rpm -ivh /PATH/TO/PACKAGE_FILE
--nodeps: 忽略依賴關係;
--replacepkgs: 重新安裝,替換原有安裝;
--force: 強行安裝,可以實現重裝或降級;
(2)、查詢
rpm -q PACKAGE_NAME: 查詢指定的包是否已經安裝
rpm -qa : 查詢已經安裝的所有包
rpm -qi PACKAGE_NAME: 查詢指定包的說明信息;
rpm -ql PACKAGE_NAME: 查詢指定包安裝後生成的文件列表;
rpm -qc PACEAGE_NEME:查詢指定包安裝的配置文件;
rpm -qd PACKAGE_NAME: 查詢指定包安裝的幫助文件;
rpm -q --scripts PACKAGE_NAME: 查詢指定包中包含的腳本
rpm -qf /path/to/somefile: 查詢指定的文件是由哪個rpm包安裝生成的;
如果某rpm包尚未安裝,我們需查詢其說明信息、安裝以後會生成的文件;
rpm -qpi /PATH/TO/PACKAGE_FILE
rpm -qpl
(3)、升級
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果裝有老版本的,則升級;否則,則安裝;
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果裝有老版本的,則升級;否則,退出;
--oldpackage: 降級
(4)、卸載
rpm -e PACKAGE_NAME
--nodeps
(5)、校驗
rpm -V PACKAGE_NAME
(6)、重建數據庫
rpm
--rebuilddb 重建數據庫
--initddb初始化數據庫
(7)、檢驗來源合法性,及軟件包完整性;
# ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-redhat-release
rpm -K /PAPT/TO/PACKAGE_FILE
dsa, gpg: 驗正來源合法性,也即驗正簽名;可以使用--nosignature,略過此項
sha1, md5: 驗正軟件包完整性;可以使用--nodigest,略過此項
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: 導入密鑰文件
yum安裝
(1)yum介紹
Yum是爲了解決rpm包安裝的依賴關係而出現的一種軟件包管理工具,它是rpm的前臺工具,也就是在使用yum安裝的時候,其實也是依賴於rpm的,yum可以自動的解決rpm包的依賴關係。
Yum是c/s架構,需要有yum repository:rpm包倉庫--yum倉庫。
yum倉庫有三類: 1.本地文件路徑
2.ftp
3. http
(2)Yum的工作機制
在使用yum命令安裝軟件包時,首先在yum倉庫中獲取所有包的列表,將安裝的文件從倉庫下載並緩存下來安裝,安裝前分析依賴關係,並把依賴包也下載至本地,然後一起安裝。
Yum是通過yum倉庫中的源數據文件獲取rpm包列表,依賴關係等。
Yum倉庫中的元數據文件:1.primary.xml.gz 所有rpm包列表,依賴關係,每個rmp安裝生成的文件列表
2.filelist.xm.gz當前倉庫中所有rmp包的所有文件列表
3.other.xml.gz額外信息(rpm修改日誌)
4.repomd.xml記錄的是上面的三個文件的時間戳和校驗和
5.comps*.xml rpm包分組信息
(3)yum倉庫
紅帽5中的rpm包倉庫:(任何目錄要當做yum源,則該目錄一定要有一個叫repodata的目錄,放置yum的元數據文件)
Repodata/: 只有包含此目錄爲其子目錄的那個路徑纔可以作yum源:
Server 系統常用的基本軟件
Cluster 集羣相關的軟件
clusterStorage 集羣存儲相關的
VT 虛擬化相關的
紅帽6:
所有包都在Package:
Server中沒有了rpm包,該目錄目錄是定義了rpm包的元數據信息
Yum倉庫的元數據文件:
Repomd.xml 記錄的是上面三個文件的時間戳和校驗和;
Primary.xml.gz:當前yum倉庫內每一個rpm包的名字及彼此間的依賴關係;此外好報還每一個rpm安裝生成的文件;
Filelists.xml.gz: 所有rpm包包含的安裝生成文件的列表:
Other.xml.gz:額外信息,主要包含的是rpm的改變日誌
Comps-rhel5-server-core.xml 當前rpm包包組的定義(額外定義的,不是必須的)
(除了Comps-rhel5-server-core.xml外,其他文件都要手動生成)
生成元數據文件的命令:createrepo(此命令必須安裝同名的rpm包後纔可以使用)
(4)yum 配置文件
Yum配置文件:
/etc/yum.conf 主配置文件,定義了包含的配置文件
/etc/yum.repo.d/*.repo
/etc/yum/pluginconf.d/ 插件的配置文件
Yum的配置文分爲兩段
全局配置(/etc/yum.conf中)
[main]
Cachedir=/var/cache/yum定義yum的緩存目錄
Keepache=0是否在開關機後還保存緩存文件
Debuglevel=2調試級別
Logfile=/var/log/yum.log日誌文件位置
Distroverpkg=redhat-release驗證發行版相關的rpm包使用的哪個祕鑰文件
Tolerant=1爲1表示安裝多個包時忽略已安裝的包
Exactarch=1是否做平臺精確匹配,1表示必須精確匹配
Obsoletes=1是否檢查廢棄的包
Gpgcheck=1是否檢查rpm的簽名信息(驗證rpm包的來源的合法性)
Plugins=1是否支持插件
Metadat_expire=1h 緩存的時間
(5). 指定yum倉庫,yum倉庫定義,指定yum倉庫(/etc/yum.repo.d/*.repo):
Yum倉庫的指定文件位於/etc/yum.repos.d/目錄中,該文件可以自己創建編輯,但後綴名一定得是“.repo”。
內容格式爲:[repo_name]
Name=描述信息
Baseusrl=
本地: file:///var/yumrepo/server
ftp|http: ftp|http://192.168.1.1/pub/server
ftp://USERNAME:[email protected]/pub/server 必須以用戶名登錄訪問的時候
Enabled={0|1} 是否啓用該yum倉庫,默認就是1(啓用)
Gpgcheck=0 不啓用
或 gpgcheck=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release(驗證rpm來源的文件)
(6)創建yum倉庫
1)創建yum倉庫目錄。
2)指定yum倉庫位置即上面提到的/etc/yum.repos.d/目錄中以“.repo”結尾的文件,可以重新創建一個也可以在已有的文件內再加一條。
3)生成元數據
使用命令createrepo生成該rpm倉庫的元數據文件,如:createrepo /yum/Server
/yum/Server是創建的倉庫的路徑目錄。
(7)yum命令使用
yum [options] [commd] package。。。。
list
(還可以支持指定匹配)
All(默認)
Available(可用的,尚未安裝)
Installed(已安裝的)
Updates(可用的升級)
repolist 顯示repo列表及其簡要信息
all
enable 默認
disabled
clean (清理緩存)
packages
headers
metadata
dbcache
all
install Package——Name : 安裝
-yes 自動回答yes
update 升級,升級爲最新的
update_to 升級爲指定版本
remove|erase 卸載(依賴包同時卸載)
info =qi
provides 查看指定的文件或特性由哪個包安裝生成的
grouplist
groupinfo
groupinstall
groupdate
groupsearch
grouplist
reinstall
--nogrpgcheck 忽略gpg檢查
2、二進制包的安裝
二進制包裝只需要將壓縮包解壓縮,然後將二進制文件複製到你所需要的安裝路徑下,之後修改PATH環境變量,以能夠識別此程序的二進制文件路徑,導出庫文件和頭文件,之後再在Man配置文件(/etc/man.config)中添加一新路徑即可。
步驟:
1、解壓縮
# tar -xf /path/to/soft_file
2、複製二進制可執行文件
# cp -R soft_file /patah/to/install_path
3、修改PATH環境變量,以能夠識別此程序的二進制文件路徑
修改/etc/profile文件或在/etc/profile.d/目錄建立一個以.sh爲名稱後綴的文件,在裏面定義export PATH=$PATH:/path/to/somewhere
如:export PATH=$PATH:/usr/local/apache/bin
4、導出庫文件和頭文件
導出庫文件:
默認情況,系統搜索庫文件的路徑/lib,/usr/lib ;所以要搜索額外路徑
在/etc/ld.so.conf.d/中創建以.conf爲後綴名的文件。而後把要增添的路徑直接寫在此文件中(當前找不着)
Ldconfig 通知系統重新庫文件
-v 顯示重新搜尋的過程
導出頭文件:
庫文件用於程序的二次開發,要導出的頭文件包含了庫文件的函數以及函數的調用參數等相關信息
默認路徑:/usr/include
要增添頭文件搜尋路徑,使用鏈接進行;
/usr/local/tengine/include /user/include/
Ln -s /usr/local/tengine/include/* /user/include/
或 ln /usr/local/tengine/include /user/include/tengin
5、編輯man的配置文件(此項不是必須的)
在Man配置文件(/etc/man.config)中添加一新路徑,安裝軟件的man文件在解壓後的目錄下的man文件中
如:安裝軟件的man文件位於/usr/loacl/man,就在man配置文件中添加
MANPATH /usr/loacl/man,
沒添加前也可以使用man -M /path/to/man_file_dircotory
如:man -M /usr/loacl/man
3、源碼包安裝(編譯安裝)
前提:準備開發環境
.編譯安裝需要安裝相應的編譯環境或開發環境如C語言軟件包就安裝gcc的開發環境安裝"Development Tools"和"Development Libraries"
源碼包安裝步驟:
1)解壓縮
# tar -xf /PATH/TO/SOFT_FILE
2)生成makefile文件
# cd /PATH/TO/SOFT_PATH
# ./configure
./configure是該包的一個腳本(./configure 生成makefile.in---->生成makefile文件),可以加參數,
--help 獲取幫助信息,可添加的選項信息
--prefix=/path/to/somewhere 指定安裝路徑
--sysconfdir=/PATH/TO/CONFFILE_PATH 指定配置文件的安裝路徑
功能:1、讓用戶選定編譯特性;2、檢查編譯環境;
3)編譯
# make
4)安裝
# make install
5)修改PATH環境變量
6)導出庫文件和頭文件
7)編輯man的配置文件
注:5、6、7和二進制包的過程一樣,源碼包的安裝步驟大多數都是以上幾步,但也有個別的不是,這時候我們就需要看一下安裝的幫助文件INSTALL、README兩個文件