軟體包的組成
1、二進制程式
/bin,/sbin 系統啟動(不允許脫離根)
/usr/bin,/usr/sbin 系統提供基本功能(RHEL6中不允許脫離根)
/usr/local/bin,/usr/local/sbin 三方軟體
2、配置檔案(單檔案,單檔案在内部分割為多個片段)
/etc
/etc/httpd/
3、庫檔案(多個軟體共有的功能,被組成一個獨立功能子產品,隻能被其他程式調用執行)
/lib,/usr/lib
路徑定義 /etc/ld.so.conf/etc/ld.so.conf.d/*.conf
頭檔案(對庫檔案的說明,如何去調用本庫) /usr/include
靜态庫多個功能放入一個庫檔案中,程式在編譯時候把整個庫檔案包含至程式中。
動态庫不同程式調用相同功能,複制動态庫副本至自己的記憶體空間中。
4、幫助檔案
手冊頁 /usr/share/man(/etc/man.config)
文檔 /usr/share/doc
軟體包管理工具
Debian dpkg(資料庫記錄安裝生成檔案的相關資訊) deb
RedHat rpm(資料庫記錄安裝生成檔案的相關資訊) rpm 标準的軟體管理格式
rpm格式的軟體包命名格式
name-[subname|devel]-version-release.arch.rpm
name 名字
subname 一個軟體包為了管理友善,在制作rmp包時候,可以劃分為多個功能相對獨立的rpm包
devel 被其他軟體包以來的庫檔案和頭檔案(其他軟體依賴于此主包,需要裝此devel包)
version {major(質的飛躍).minor(改變一些功能).release(修正bug更新檔)}
release{ 軟體包制作者發型版本号.[系統平台号]}
arch 二進制程式有格式(編譯器自身會在軟體編譯時對軟體在特定平台上運作做優化)
32bit (i386,i486,i586,i686)
64bit (x86_64)
noarch(文本檔案,根平台沒關系)
前段工具
rpm ---> yum
dpkg ---> aptget
Linux上軟體包的安裝途徑
1、rpm包
rmp指令
yum指令
2、源碼包
編輯安裝
3、編譯好的二進制包壓縮包
解壓後配置使用
rmp包中包含的内容
要安裝的檔案
要執行的腳本
pre 安裝之前
post 安裝完成
preun 解除安裝之前
postun 解除安裝之後
軟體管理功能
安裝 (依賴的包叫做能力)
rpm -i PK1 PK2 PK3 ...
-v 詳細資訊
-h 進度
--test 測試是否可以安裝
--nodeps 忽略依賴關系
--replacepkgs 重新安裝
--force 無視沖突
解除安裝
rpm -e PK_name PK2_name ...
--nodeps 忽略依賴關系(其他軟體包依賴于它的時候不讓解除安裝)
更新
rpm -F 無old,則不new
-U 無old,則安裝new
-v
-h
--oldpackage 降級
注意:核心不應該更新安裝,核心允許多版本并存,可直接安裝多個不同版本核心
查詢
rpm -qPK_name
-qa 目前系統上所有已經安裝的軟體包
-qi 查詢軟體包的相關資訊
-ql 列出此rpm包安裝之後在系統上生成那些檔案
-qf 查詢此檔案是由哪個軟體包生成的
-qc 檢視此軟體包有哪些配置檔案
-qd 檢視此軟體包有那些文檔
-q --scripts 檢視軟體包腳本
-qp 檢視尚未安裝rpm的軟體資訊(支援上述選項)
校驗 檢查某rpm包安裝生成的檔案有沒有被非法修改過
rpm -V PK_name
S.5....T不改變用. 該表表示出來
S file Size differs
M Mode differs (includes permissions and file type)
5 MD5 sum differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
-K PKG 檢查軟體包簽名(或者發行CD光牒)
需要公鑰/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
--import 導入公鑰
-K --nodigest 不檢查單項加密相關内容sha1 md5
--nosignature 不檢驗簽名gpg dsa
rpm包簽名:提取特征碼,附加在軟體包上,官方使用自己的私鑰加密此特征碼
驗證簽名
用官方的公用解密這段被加密的特征碼,得到可靠的官方特征碼
自己再使用同樣的單項加密提取軟體包特征碼。并比較和官方特征碼是否一緻。
rpm資料庫 /var/lib/rpm
--initdb 重新初始化丢失的庫
--rebuilddb 重建,無論事先是否存在
yum
RPM
rpm databas/var/lib/rpm
yum 自動解決依賴關系
x--->y
x 依賴哪些包
y 安裝情況
yum 如何解決依賴關系
repository 倉庫 yum源 repodata
rmp 每一個rpm包依賴于其他的那些capacity,是rpm包的制作者指定的
就算沒有定義rpm指令也可以識别。
yum 配置檔案指定找相應的yum倉庫,已經安裝多少個,多少為安裝
下載下傳未安裝包到本地緩存,安裝完成
倉庫在本地某目錄
file:///
倉庫在遠端伺服器
ftp:///
http:///
rpm包
repodata/ 自由包含此目錄為其子目錄的路徑,才可以用作yum源
repomd.xml 保留時間戳校驗值
primary.xml.gz 目前yum倉庫内每個rpm包名字和彼此間依賴關系
每個rpm包能夠安裝生成的檔案
filelists.xml.gz 所有rpm包包含的安裝生成的檔案的檔案清單
other.xml.gz 額外資訊,主要包含rpm包的changelog
comps-rhel5-server-core.xml 包組
yum配置
/etc/yum.conf 主配置檔案 全局配置
/etc/yum.repos.d/*.repo 分片配置檔案 分段配置
/etc/yum/pluginconf.d/ 插件目錄
[repo]
name=My Date Base
baseurl=file:///var/yumrepo/Server
baseurl=ftp://192.168.0.254/pub/Server
baseurl=ftp://USERNAME:[email protected]/pub/Server
enabled={0|1}
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
yum指令
repolist
list {installed|available|updates|all}
clean {expire-cache|packages|headers|metadata|dbcache|all}
/var/cache/yum
中繼資料
rpm包
grouplist 列出包組
groupinfo "GROUP_NAME" 檢視包組資訊
info zsh 檢視包資訊
search KETWORD 模糊查詢
whatprovides FILE 某檔案是由哪個rpm包生成
installPKG_NAME 安裝
removey<--x 解除安裝
update 更新
groupinstall "NAME" 安裝包組
groupremovec "NAME" 解除安裝包組
localinstall 使用yum源安裝;如果不是CD光牒導讀作者公鑰或者不檢查簽名
reinstall 重新安裝
check-update 檢查有哪些可用于更新的包
yum的選項指令
-y 自動回答為yes
-nogpgcheck
建立本地yum源
1、先安裝 yum install createrepo(建立yum源指令)
2、createrepo 路徑目錄
createrepo
-g支援包組定義
yum 進階用法
軟體包源碼編譯安裝
source code --> binary
編譯安裝需要事先安裝“開發環境”
Development Tools
Development Libraries
X Software Development
c/c++
./configure
Makefile.in--->makefile (autoconf automake)
-prefix=制定安裝路徑
--sysconfdir制定配置檔案的安裝路徑
二進制程式 /usr/local/apache/bin 在PATH中添加此路徑
庫檔案管理 /usr/local/apache/lib 如何讓系統識别此庫
/lib /usr/lib 系統預設庫檔案路徑
導出庫檔案路徑
第一種方法
/etc/ld.so.conf
第二種方法
1、建立檔案/etc/ld.so.conf.d/*.conf
并将目前軟體的庫檔案所在的目錄添加至此新檔案
2、# ldconfig [-v] 通知系統重新讀取庫
/etc/ld.so.cache并儲存至緩存中
頭檔案管理
/usr/include 系統預設頭檔案目錄
/usr/local/apache/include 如何讓系統識别頭檔案
# ln -s /usr/local/apache/include /usr/include/apache
或者使用cp 也可以
手冊頁檔案
/etc/man.config
/usr/local/apache/man
MANPATH /usr/local/apache/man
如果隻是臨時使用一次
man -M /usr/local/apache/man httpd
注意:一般情況下都要導出庫和頭檔案
make-->makefile
make install
大多數源程式都會自帶檔案 INSTALL README
perl
perl Makefile.PL
make
make install
本文轉自 ftmoonfans 51CTO部落格,原文連結:http://blog.51cto.com/soulboy/1265966