Linux 程 序 包 管 理
1.API:Application Progarmming Interface
POSIX :Portable OS
2.程序源代碼--à預處理--à編譯----à彙編----à鏈接
靜態編譯:
共享編譯: .so
3.ABI: Application Binary Interface
Windows與Linux不兼容
庫級別的虛擬化:
Linux: WINE
Windows: Cywin
4.1系統級開發
C
C++
4.2應用級開發
Java
Python
php
pel
ruby
4.3二進制應用程序的組成部分
二進制文件、庫文件、配置文件、幫助文件
程序包管理器:
Debian :dep, dpt
Redhat: rpm ,rpm(Redhat Package Manager)
PRM: RPM is Package Manager
Archlinux :
Gentoo:
5.源代碼: name-VERSION.tar.gz
VERSION: major.minor.release
6.rpm包命名方式:
1>.name-VERSION-release.arch.rpm
VERSION:major.Minor.release
release.arch:
release:release.OS
常見的arch:
X86: i386,i486,i586,i686
X86_64: x64,x86_64,amd64
Powerpc:ppc(硬件平臺)
跟平臺無關: noarch (例如包含java程序包等)
2>.testapp: 拆包
testapp-VERSION-ARCH.rpm:主包
testapp-devel-VERSION-ARCH.rpm: 支包
testapp-testing-VERSION-ARCH.rpm
3>.包之間:存在依賴關係
yum:rpm包管理器的前端工具;
apt-get :dep包管理前端工具;
zipper : suse 上的rpm前端管理工具;
dnf :Fedora 22+ rpm包管理器前端管理工具;
7.1查看二進制程序所依賴的庫文件:
ldd /PATH/TO/BINARY_FILE
7.2管理及查看本機裝載的庫文件:
ldconfig
/sbin/ldconfig -p : 顯示本機已經緩存的所有可用庫文件名及文件路徑映射關係
配置文件爲: /etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
緩存文件: /etc/ld.so.cache
8.程序包管理:
1>.功能: 將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,從而方便快捷的實現程序包的安裝、卸載、查詢、升級和校驗等管理操作
2>.程序的組成組成清單(每個包獨有)
文件清單
安裝或卸載時運行的腳本
3>.數據庫(公共)
程序包名稱及版本
依賴關係
功能說明
安裝生成的個文件的文件路徑及校驗碼信息;
9.1管理程序包的方式:
使用包管理器: rpm
使用前端工具: yum, dnf
9.2獲取程序包的途徑:
1>.系統發版的光盤或官方的服務器;
Centos鏡像:
2>.項目官方站點;
3>.第三方組織:
Fedora-EPEL
搜索引擎:
http://pkgs.org
4>.自己製作
5>>建議檢查其合法性
來源合法性;
程序包的完整性;
10.Centos系統上rpm命令管理程序包
安裝、卸載、升級、查詢、校驗、數據庫維護
1>.安裝
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-v : verbose
-vv:
-h: 以#顯示程序包管理執行進度,每個#表示2%的進度
rpm –ivh PACKAGE_FILE …
[install-options]
--test: 測試安裝,但不真正執行安裝過程;dry run模式;
--nodeps:忽略依賴關係;
--replacepkge: 重新安裝;
--nosignature: 不檢查來源合法性
--nodigest: 不檢查包完整性;
--noscripts : 不執行程序包腳本片斷:
%pre :安裝前腳本: --nopre
%post: 安裝後腳本: --nopost
%preun: 卸載後腳本: --nopreun
%postun: 卸載後腳本: --nopostun
2>.升級:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
upgrage: 安裝有舊版本程序包,則“升級”;如果不存在舊版本程序包,則安裝;
freshen:安裝有舊版本程序包,則“升級”;如果不存在就版本程序包,則不執行升級操作;
rpm –Uvh PACKAGE_FILE …
rpm –Fvh PACKAGE_FILE …
--oldpackage :降級;
--force: 強行升級;
**.(1) 不要對內核做升級操作; linux支持多內核版本並存,因此,可直接安裝新版本內核
(2)如果原程序包的配置文件安裝後曾被修改,升級時,新版本的提供的同一配置文件並不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.pmnew)後保留;
3>.查詢
rpm {-q|--query} [select-options] [query-options]
[select-options]
-a:所有包
-f查看指定的文件由哪個程序包安裝生成;
-p /PATHTO/PACKAGE_FILE:針對尚未安裝的程序包文件做查詢操作;
--whatprovides CAPABILITY :查詢指定的APABILITY由哪個包所提供;
--whereprovides CPABILITY:查詢指定的APABILITY被哪個包所依賴;
[query-options]
--changelog :查詢rpm包的配置文件;
-c: 查詢程序的配置文件;
-d: 查詢程序的文檔;
-i: information
-l: 查看指定的程序包安裝後生成的所有文件;
--script: 程序包自導的腳本片斷;
-R: 查詢指定的程序包所依賴的CPABILITY
--provides: 列出指定程序包所提供的CPABILITY;
用法:
-qi PACKAGE, -qf FILE , -qc PACKAGE, -ql PACKAGE , -qd PACKAGE
-qpi PACKAGE_FILE ,-qpl PACKAGE_FILE
-qa
4>.卸載:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
5>.校驗:
rpm {-V|--verify} [select-options] [verify-options]
S fiel Size differs
M Mode differs (inculdes permissions and file type )
5 diget (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 differs
11.包來源合法性驗證及完整性驗證;
1>.完整性校驗
公鑰加密:
對稱加密: 加密、解密使用同一密鑰
非對稱加密:密鑰是成對兒的;
Public key: 公鑰,公開
Secret key: 私鑰,不公開
2>.導入所需公鑰:
rpm --import /PATH/FRO/GPG-PUBKEY-FILE
3>.數據庫重建:
rpm {--initdb|--rebuilddb}
initdb:初始化
如果事先不存在數據庫,則新建,否則不執行任何操作
rebuilddb :重建
無論當前存在與否,直接重新創建數據庫