軟件包管理

API:Posix

ABI:Application Binary Interface

glibc:系統核心庫


Debian:dpt

Redhat:rpm(Redhat Package Manager)


軟件包組成部分:

1) 二進制程序(/bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin、/usr/local/sbin)

2) 庫文件(/lib、/usr/lib、/usr/local/lib)

3) 配置庫文件(/etc)

4) 幫助文件(手冊、README、INSTALL、/usr/share/doc)


軟件包管理工具:

1) 文件清單

2) 文件放置路徑

3) 提供的功能說明

4) 依賴關係


軟件包數據庫:存儲軟件相關信息(如:已安裝軟件、版本等)


兩大軟件包管理器:

1) dpt --> apt-get(Debian開發的前端管理工具)

2) rpm(改名爲:RPM is Package Manager) --> update(Redhat開發) --> yum(Redhat二次發行版YellowDog開發)


軟件包管理器功能:

打包、安裝、查詢、升級、校驗、卸載、數據庫管理(重建)


編譯器:gcc, g++

提供編譯環境:開發環境

二進制:

庫:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

幫助手冊:/etc/man.config, man -M

頭文件:/usr/include


安裝程序的方式:

1) 通用二進制格式

2) 軟件包管理器

3) 軟件包管理器的前端工具

4) 源代碼編譯


軟件版本號、發行號:

1) 源程序

name-version.tar.gz

版本號:major.minor.release(主版本.次版本.release版本),如:bash-4.3.1.tar.xz


2) rpm包

name-version-release.arch.rpm

發行號:用於標識rpm包本身的發行號,還可包含所適用的操作系統

el6:RHEL6

el5:RHEL5

centos6:

suse11:

arch:主機平臺

i686、x86_64、amd64、ppc(powerpc)、noarch(任何平臺)

如:bash-4.3.2-el6.x86_64.rpm


一、rpm軟件包管理

rpm分包:

主包:核心包,如:bind

分包:支包,如:bind-devel


rpm獲取:

fedora-epel(Extra Packages for Enterprise Linux)如:http://mirrors.sohu.com

http://rpmfind.net

http://rpm.pbone.net


1、rpm包驗證機制:

來源的合法性:使用非對稱加密gpg(pgp規範的一種實現)--> pgp(規範)

軟件包的完整性:使用數據簽名

RedHat系列官方公鑰:

1) 存放在:/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

2) 安裝光盤:/RPM-GPG-KEY-redhat-release


驗證方法:

rpm

--import PUBKEY 導入公鑰(默認使用系統下的KEY)

–K|checksig RPMfile 檢測簽名和合法性

--nosignature 不檢測簽名

--nodigest 不檢測合法性


2、安裝、卸載

rpm

-i|--install: 安裝

-v|vv|vvv: 顯示詳細信息的級別

-h: 以#號(hash)方式顯示安裝進度,一個#號表示2%

--nodeps: 忽略依賴關係

--test: 測試安裝

--replacepkgs:重新安裝

-e: 卸載


源碼格式的rpm包安裝:

根據SPEC文件將其打包爲rpm安裝包後,再進行安裝


安裝步驟:

1) rpm -ivh nginx-1.0.15-5.el6.src.rpm (當前目錄生成rpmbuild目錄)

2) cd rpmbuild/SPECS

3) rpmbuild -bb nginx.spec 只生成二進制包

rpmbulid –ba nginx.spec 生成二進制包和源碼包(任選一種方式生成)

4)cd ../RPMS/x86_64

5)rpm –ivh nginx-1.0.15-5.el6.x86_64.rpm


3、查詢

rpm –q|--query 包名(同樣適用於未安裝的包)

rpm –qa 查詢所有已安裝包

rpm –qi 查詢包的摘要信息

rpm –ql 查詢包安裝生成的文件清單

rpm –qf 查詢某文件是由哪個rpm包安裝生成的

rpm –qc 查詢包安裝生成的配置文件

rpm –qd 查詢包安裝生成的幫助文檔

rpm –q –changelog 查詢已安裝軟件的修改記錄

rpm –q –scripts 查詢包相關的腳本:

preinstall:安裝前腳本

postinstall:安裝後腳本

preuninstall:卸載前腳本

postuninstall:卸載後腳本


4、 升級

rpm

-U:升級+安裝

-F:升級

--force:強制

--nodeps:忽略依賴關係


注意:內核不應該升級,應該儘可能安裝,它允許多版本共存


5、 檢驗

檢驗安裝後的軟件包相關文件是否被修改:

# rpm -V vsftpd

S.5....T. c /etc/vsftpd/ftpusers

S.5....T. c /etc/vsftpd/user_list

S.5....T. c /etc/vsftpd/vsftpd.conf

權限說明:

S file Size differs

M Mode differs (includes permissions and file type)

5 digest (formerly 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

P caPabilities differ


6、 數據庫

rpm數據庫位置:/var/lib/rpm

rpm --initdb:新建

--rebuilddb:重建


二、yum

yum repository支持協議:ftp、http、file

yum緩存目錄:/etc/cache/yum



1、 yum客戶端配置

a)主配置文件:/etc/yum.conf

[]即爲一個倉庫,除[main]外,[main]段爲其它倉庫定義默認選項,且必須存在

也可以將倉庫定義單獨文件中,並保存至/etc/yum.repos.d/*.repo


[main]

cachedir=/var/cache/yum/$basearch/$releasever

keepcache=0 #是否保留下載至本地的軟件包

debuglevel=2

logfile=/var/log/yum.log

exactarch=1 #是否與本地系統平臺完全匹配

obsoletes=1

gpgcheck=1 #是否檢查軟件包來源合法性

plugins=1

installonly_limit=3




[base]

name=Red Hat Enterprise Linux $releasever - $basearch - Source

baseurl=http://mirror.sohu.com/centos/$relasever/os/$basearch/

enabled=1

cost=1000 #同時有多個倉庫時,可配置優先級

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

b)yum內置變量

$releasever

This is replaced with the package's version, as listed in distroverpkg. This defaults to the version of the redhat-release package.

$arch

This is replaced with your system's architecture, as listed by os.uname() in Python.

$basearch

This is replaced with your base architecture. For example, if $arch=i686 then $basearch=i386.

$YUM0-9

This is replaced with the value of the shell environment variable of the same name. If the shell environment variable does not exist, then the configuration file variable will not be replaced.


可使用Python查看變量值:

[root@server1 ~]# python -c 'import yum,pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'

Loaded plugins: product-id,refresh-packagekit

{'arch': 'ia32e',

'basearch': 'x86_64',

'releasever': '6Server',

'uuid':'f1114e9d-d994-4b37-9c31-51b5cf3c0c9f'}



2、 yum命令使用

yum subcommand

-y 自動回答爲yes

list [all|installed|available] 可用軟件包

repolist [all|enable|disabled] 可用的倉庫

info 軟件包信息

groupinfo 軟件包組信息

install 安裝軟件包

reinstall 重新安裝軟件包

check-update 檢查更新

update 更新

update-to 更新到某個版本

remove 移除軟件包

provides|whatprovides 搜索包含關鍵字的軟件包,支持通配符

search 搜索包含關鍵字的軟件包

groupinstall

groupupdate

groupremove

localinstall 安裝本地軟件包(RHEL6直接使用install)

localupdate

history yum安裝的歷史記錄

clean [packages|metadata|expire-cache|rpmdb|plugins|all] 清空yum緩存目錄

makecache 從當前可用的倉庫下載並生成可用的無數據

--nogpgcheck 不檢查合法性,優先級高於配置文件

version

downgrade 降低當前軟件包版本


常用開發包組:

RHEL6:

"Development tools"、"Server Platform Development"、"Desktop Platform Development"

RHEL5:

"Development tools"、"Development Libraries"


3、 yum倉庫創建

createrepo rpmDir

# createrepo rpmDir

# ls rpmDir/repodata/ #repodata目錄會自動生成

401dc19bda88c82c403423fb835844d64345f7e95f5b9835888189c03834cc93-filelists.xml.gz

6bf9672d0862e8ef8b8ff05a2fd0208a922b1f5978e6589d87944c88259cb670-other.xml.gz

77a287c136f4ff47df506229b9ba67d57273aa525f06ddf41a3fef39908d61a7-other.sqlite.bz2

8596812757300b1d87f2682aff7d323fdeb5dd8ee28c11009e5980cb5cd4be14-primary.sqlite.bz2

dabe2ce5481d23de1f4f52bdcfee0f9af98316c9e0de2ce8123adeefa0dd08b9-primary.xml.gz

f8606d9f21d61a8bf405af7144e16f6d7cb1202becb78ba5fea7d0f1cd06a0b2-filelists.sqlite.bz2

repomd.xml


filelists文件: 所有rpm包文件列表

primary文件: 當前倉庫內所有rpm包有哪些,以及各rpm包之間的以來關係

other文件(changelog): 版本修改等信息

repomd.xml文件:保存以上每個文件的時間戳信息


三、編譯安裝

make:軟件包組(項目)編譯工具,它會自動調用gcc、g++等進行編譯,編譯過程需要Makefile文件,而Makefile文件通過configure腳本+Makefile.in生成。configure腳本可使用autoconf工具生成,Makefile.in文件可使用automake工具生成。


編譯安裝步驟:

1)cd SOURCE_CODE

2)./configure (檢查編譯環境、用戶定製編譯配置)

--help 查看可用選項及幫助信息

--prefix=/usr/local/apache 指定安裝目錄

--sysconfdir= 指定配置文件目錄

3)make

4)make install


編譯安裝後配置(可選):

1、 PATH環境變量

1) 安裝軟件通常放在 /usr/local/ 下,默認PATH變量不包含

2) 可編寫修改PATH變量腳本,並放到 /etc/profile.d/*.sh下,由系統自動加載

export PATH=/usr/local/apache/bin:$PATH


2、 庫文件搜索路徑

1) 修改配置文件 /etc/ld.so.conf

2) 編寫腳本內容爲搜索路徑,並放到 /etc/ld.so.conf.d/*.conf 下

ldd ls :查看ls 命令所依賴的庫文件

ldcoonfig –v:重新搜索當前系統上所有庫文件搜索路徑下的庫文件,並生成緩存 /etc/ld.so.cache


3、 man文檔目錄

1) 修改man配置文件 /etc/man.conf ,添加MANPATH變量

2) 使用 man –M /Dir 指定man文檔路徑


4、 頭文件

1) 創建軟件鏈接

如:

ln –sv /usr/local/apache/include /usr/include/httpd 整個目錄

ln –sv /usr/local/apache/include/* /usr/include/* 每個文件



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章