軟件包的分類,主要有以下兩大類
源碼包
二進制包(rpm包,系統默認包)
rpm包由Redhat公司提出,被眾多linux發行版所采用。
優點:建立統一的數據庫文件,詳細記錄軟件包的安裝、卸載等變化信息,能夠自動的分析軟件包依賴關系。
查詢已安裝的rpm軟件信息:
格式:
rpm -q[子選項] [軟件名]
用法:結合不同的子選項完成不同的查詢
選項:
-qa:查詢已安裝的所有rpm軟件包列表
-qi:查詢指定軟件的詳細信息
-ql:查詢軟件包安裝的目錄、文件列表
-qc:查詢某軟件包安裝后生成的所有配置文件
-qd:查詢某軟件包安裝后生成的所有幫助文件
-q –changelog:查詢某軟件包制作時隨版本變化的changelog信息
-q –scripts:查詢某包安裝或卸載時執行腳本
示例:
rpm -q bash :查詢bash軟件,會顯示出bash這個軟件是由哪個包安裝以后才有的。
rpm -qa | grep bash :查詢是否已經安裝有bash軟件包
rpm -ql postfix :查詢postfix軟件包安裝的文件列表
-qf 可查詢文件或目錄屬于哪個rpm軟件生成的
格式:
rpm -qf 文件名或目錄名
示例:
rpm -qf /usr/bin/vim :查詢vim文件屬于哪個rpm軟件
查詢未安裝的rpm包文件:
格式:
rpm -qp[子選項] rpm包文件
用法:結合不同的子選項完成不同的查詢
選項:
-qpi:查看該軟件的詳細信息
-qpl:查看包內所包含的目錄、文件列表
示例:
rpm -qpi ethtoo….rpm :查看該包的詳細信息
rpm -qpl ethtool…rpm :查看該包內包含的目錄、文件列表
安裝及升級rpm軟件
格式:
rpm [選項] rpm包文件
用法:不同的選項適用于不同的情況
選項:
-i:安裝一個新的rpm軟件包
-U:升級軟件、若未安裝,則進行安裝。
-h:以“#”號顯示安裝的進度
-v:顯示安裝過程中的詳細信息
-F:更新某個軟件包,若未安裝,則放棄安裝。
–force:強制安裝、升級指定的rpm軟件包
–nodeps:在安裝或升級、卸載一個軟件包時,不檢查與其他軟件包的依賴關系,忽略依賴關系(不推薦使用)
-qR:查詢軟件包的依賴性
-qRp:查詢未安裝軟件包的依賴關系
卸載rpm軟件包
格式:
rpm -e 軟件名
示例:
rpm -e links :卸載links這個軟件
rpm包的依賴關系:
樹形依賴:a-b-c
解決辦法:把依賴包安裝上
環形依賴:a-b-c-a
解決辦法:一次性安裝這幾個包
模塊依賴:依賴于某個包中的某個程序
解決辦法:在查詢網站www.rpmfind.net中搜索這個程序所在的包,然后安裝就可以了。
解決軟件包的依賴關系
安裝有依賴關系的多個軟件時:
被依賴的軟件包需要先安裝
可同時指定多個rpm包文件進行安裝
卸載有依賴關系的多個軟件時
依賴其他程序的軟件需要先卸載
可同時指定多個軟件名進行卸載
維護rpm數據庫:
當rpm數據庫受到破壞時,可重建數據庫
rpm –rebuilddb 或者 rpm –initab
查詢二進制程序依賴的庫文件
ldd /PATH/TO/BINARY_FILE
rpm包校驗:
格式:
rpm -V 已安裝的包名
-V:校驗指定rpm包中的文件
檢驗過程中輸出的內容信息解釋如下:
S:文件的大小是否改變
M:文件的類型或文件的權限是否改變
5:文件MD5校驗個是否改變(可看成是文件內容是否改變)
D:設備的主從代碼是否改變
L:文件的路徑是否改變
U:文件的屬主是否改變
G:文件的屬組是否改變
T:文件的修改時間是否改變
rpm包的文件提取
作用:當誤刪除命令或者誤刪除某個rpm包中的文件時可以用次命令
格式:
rpm2cpio 包全名 | cpio -idv .文件絕對路徑
YUM
yum是通過分析rpm的標頭數據后,根據各軟件的依賴關系制作出有依賴關系時的解決方案,然后可以自動處理軟件的依賴性問題,以解決軟件安裝的依賴性問題。
yum的配置文件:
主配置文件: /etc/yum.conf 為各倉庫指向提供公共配置文件
各倉庫自定義: /etc/yum.repos.d/*.repo 為每一個倉庫提供特有的配置
倉庫文件解釋:
倉庫文件應以.repo結尾,每個repo配置文件中可以配置一至多個倉庫
[main] :提供公共的配置信息
[倉庫id]:對于當前系統的yum來講,此倉庫id用于唯一標識此倉庫指向,必須唯一
name:當前倉庫的描述信息
baseurl:指明倉庫的訪問路徑
路徑支持類型:
ftp服務:ftp://SERVER/PATH/TO/REPOSITORY
http服務:http://SERVER/PATH/TO/REPOSITORY
本地目錄:file:///PATH/TO/REPOSTIROY
enabled={1|0}:當前倉庫是否開啟,1開啟,0關閉,默認不寫為開啟
gpgcheck={1|0}:是否對程序包校驗,1開啟,0關閉,默認不寫為開啟
gpgkey= :指明校驗文件的路徑
yum的使用:
格式:
yum [選項] [命令] [包名…]
常用命令:
install :安裝
update :升級
downgrade :降級
check-update:檢查可用升級
remove:卸載,所有依賴于正卸載的程序包的程序包會被一并卸載
reinstall:重新安裝
search 關鍵字:根據關鍵字搜索軟件包
list:列表查看
info:查看簡要信息
provides:查看某特性是由哪個軟件包所提供的
chean all:清理本地緩存
groupinstall:安裝包組
groupupdate:升級包組
grouplist:列表查看包組
groupremove:卸載包組
groupinfo:查看包組信息
history:查看yum事物歷史
help:幫助信息
注意:安裝、查詢、卸載時只需提供包名即可,安裝時如果某包在不同的倉庫中有多個不同的版本,默認會安裝最新的,如果要安裝指定版本,就要指明install 包名-版本
yum命令的可選項:
-y:自動回答yes
–disablerepo=:臨時禁用在配置文件中配置并啟用的某個倉庫
–enablerepo=臨時啟用指定的某倉庫
–nogpgcheck:禁止做包校驗
yum中的變量:
這些變量用來保存當前平臺的相關信息,這些常用的變量有以下這些:
①:$raleasever:當前OS發行版的住版本號;例如:Centos6.6 x86_64,主板吧號為6
②:$arch:平臺 例如:i386 i486
③:$basearch:基礎平臺,例如:i686,i586,i486,i386的基礎平臺同為i386
例如:
在yum的配置文件中定義的baseurl路徑為baseurl=http://repo.abc.com/centos/$relrasever/$basearch 且當前的系統
為Centos6.6 x86_64,實際路徑就為http://repo.abc.com/centos/6/x86_64
制作本地yum源
使用本地yum源的方式有兩種:
1、直接使用光盤做為yum源,僅限本機使用
2、創建本地yum倉庫,然后使用http或者ftp等方式向外提供yum倉庫
使用光盤作為yum源的做法:
先掛載光盤,例如:mount /dev/sr0 /media/cdrom
在/etc/yum.repos.d目錄下新建以.repo結尾的倉庫文件,內容如下
[bash]
baseurl=file///meida/cdrom
gpgecheck=0
這是最簡單的創建方法
創建本地yum源
1、首先安裝createrepo程序包
2、確定repository的輸出方式:
a.本地輸出:提供一個放置rpm包的本地路徑;
file類型
b.網絡輸出:提供一個服務器.ftp或者http服務
ftp服務:
先安裝vsftpd程序包
文件放置在/var/ftp/pub目錄中
啟動服務
http服務:
先安裝httpd程序包
文件放在/var/www/html目錄中
啟動服務
在準備好的目錄中導入rpm包文件
對此目錄執行createrepo命令生成repository目錄
完成
源碼編譯安裝程序:
使用源碼包編譯安裝的優點:
可獲得最新的軟件版本,及時修復bug
根據用戶需要,靈活定制軟件功能
應用場合:
安裝較新版本的應用程序時
當前安裝的程序無法滿足需要時
需要為應用程序添加新的功能時
Tarball封包
.tar.gz和.tar.bz2格式的居多
完整性校驗:
計算MD5校驗和,并與官方提供的值相比較,判斷是否一致
格式:
md5sum 源碼包、
源代碼組織格式:
多文件:文件中的代碼之間很有可能存在跨文件依賴關系
確認源碼包的編譯環境:
1、編譯開發工具包組:
Development tools
Server Platform Development
Desktop Platform Development
Debug Tools
2、被依賴的程序包的開發組件
①編譯安裝被依賴的程序
②安裝相關程序的名稱中包含devel的子包
項目管理工具:make
編譯時可能需要按特定的次序進行編譯,此時,一般會用到項目管路工具對其進行管理;
構建工具會調用合適的編譯器,并根據配置文件makefile中定義的次序對源代碼文件進行編譯
注意:1、每個項目的程序員開發完成某版本之后,會使用autoconf為程序代碼生成一個腳本文件:configure
功能:此腳本會收集當前系統上的開發環境中所依賴各組件的版本、特性,并檢查所依賴的環境是否能滿足,最后會根據Makefile.in文件 生成一個makefile文件
2、每個項目的程序員開發完成某版本之后,會使用autoconf為程序代碼生成一個makefile模板文件,即Makefile.in
編譯安裝源碼包流程:
下載源碼安裝包文件
↓
步驟1:tar解包
用途:解壓釋放源碼包到指定的目錄
↓
步驟2:./configure配置,生成makefile文件
用途:設置安裝目錄、安裝模塊等選項
↓
步驟3:make編譯
用途:生成可執行的二進制文件
↓
步驟4:make install安裝
用途:復制二進制文件到系統,配置應用環境
↓
測試、應用及維護軟件
步驟1:解包
可以根據自己的需求把解壓后的包放在任何地方,當習慣上將軟件包釋放到/usr/src目錄中
解包后的源碼包文件位置:/usr/src/軟件名-版本號/目錄中
步驟2:配置
使用源碼目錄中的.congfigure腳本
執行./configure –help 可查看幫助信息
常用的配置項:
–help:查看幫助信息
–prefix:指定默認安裝路徑,默認為/usr/local目錄下
–sysconfdir:指定配置文件安裝路徑
–with-CAPABILITY:依賴的程序包
–without-CAPABILITY:不依賴的程序包
–enable-FEATURE:啟動某個特性
–disable-FEATURE:禁用某個特性
system types:指明系統類型(交叉編譯才會用到)
步驟3:編譯
執行make命令 (執行make命令還是在解壓后的這個目錄中)
執行make命令有時也會出現問題,例如:某個函數不滿足要求等等
執行make命令時可加上“-j”選項,-j[n],n代表cpu核心數,表示幾個核心同時編譯
步驟4:安裝
執行make install命令
完成
注意:前幾步普通用戶可執行,建議使用普通用戶身份進行,最后一步根據安裝路徑的指定,可能會用到管理權限。
程序的運行環境:
將所定義的二進制程序安裝路徑加入到$PATH變量中去
在/etc/profile.d/目錄中的*.sh文件中添加 PATH=$PATH:二進制程序安裝路徑
linux系統會在特定路徑下為應用查找所依賴的庫文件:/lib64,/lib,/usr/lib64,/usr/lib 自己編譯安裝的程序提供的庫文件有可能不在系統搜索路徑中,解決辦法:
編輯/etc/ld.so.conf.d/*.conf文件,添加新庫文件搜索路徑到此,每行一個
執行ldconfig命令,重新生成庫映射緩存ld.so.conf
此命令的常用選項有:
-v:顯示命令執行過程的詳細信息
-p:打印當前系統ld.so.cache中已經緩存的所有庫文件目錄及庫文件映射列表
復制所有新生成的頭文件至/usr/include目錄中
創建鏈接(以apache為例)
ln -sv /usr/local/apache/include /usr/include/httpd
ln -sv /usr/local/apache/include/* /usr/include
修改man的配置文件/etc/man.config文件中使用MANPATH指令指向的路徑,讓其識別新的幫助信息。
原創文章,作者:ZJM,如若轉載,請注明出處:http://www.www58058.com/39105