如何實現在linux安裝,更新程序。
硬件--內核(系統調用接口)--庫調用接口(32位,64位)
API:Application Programming Interface
POSIX:可移植系統,源代碼級別各系統都是兼容的。
程序的源代碼文件--預處理--編譯--彙編--鏈接
靜態編譯:不依賴外部環境
共享編譯:直接調用lib .so 文件
linux支持elf,windows支持exe,因爲ABI不同(應用二進制接口)
庫級別虛擬化,WINE 可以在linux跑windows程序,CYWIN在windows跑linux程序
應用及開發(java,python,php,perl,rubby)和系統及開發(c,c++)
二進制應用程序的組成部分:
二進制文件,庫文件,配置文件,幫助文件
程序包管理器:
debian:deb包,包管理器dpt
rehat:rpm ,redhat package manager
gentoo
archlinux
源代碼:name-VERSION.tar.gz
rpm包命名方式(使用源代碼製作而成)name-VERSION-ARCH.(指定平臺)rpm
常見的arch
x86:i386,i486,i586,i686
x86_64:x86_64,amd64
powerpc:ppc
跟平臺無關:noarch
yum rpm包管理器前端安裝工具
apt-get :deb包管理器前端工具
zypper:suse上的rpm包前端管理工具
dnf:Fedora22+ rpm包管理器前端管理工具
查看二進制程序所依賴的庫文件 ldconfig(/erc/id.so.conf)
ldd /path/to/binary
程序包管理
功能:將編譯好的應用程序的各個組成文件打包成一個或幾個程序包文件,從而方便快捷的實現程序包的安裝,卸載,查詢升級和校驗等管理操作。
1程序的組成清單(每個包獨有)
文件清單
安裝或卸載運行的腳本
2數據庫(公共)
程序包名稱及版本
依賴關係
功能說明
安裝生成的個文件的文件路徑及校驗碼信息
管理程序包的方式
使用包管理器工具:rpm
使用前端工具:yum,dnf
rpm
1系統發版的光盤或官方服務器
centos鏡像http://mirrors.aliyun.com ,https://mirrors.sohu.com,https://morrors.163.com
項目官方:
第三方組織:Fedora-EPEL
搜索引擎:https://rpmfind.net http://pkgs.org
centos rpm 命令管理程序包
安裝,卸載,升級,查詢,校驗,數據庫維護
安裝:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-i 安裝install
-h 以#顯示程序包管理執行進度,每個#表示是2%進度
-v 顯示安裝詳細信息
[]install -option]
--test 測試安裝,單不真實執行,dry run
--nodeps:忽略依賴關係(循環依賴)
--relacepkgs 重新安裝
升級:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
upgrade: 安裝有舊版程序包,則‘升級’,如果不存在舊版程序包則安裝
freeshen:安裝有舊版程序包,則升級,如果不存在舊版程序包,則不執行操作
rpm -Uvh package
rpm -Fvh package
注意:1不要對內核做升級操作,linux支持多內核版本並存,因此,對直接安裝新版本內核
2如果原程序包的配置文件安裝後曾被修改,升級時,新版本的提供的同一個配置文件並不會
直接覆蓋老版本的配置文件,而把新版本的文件重命名(.rpmnew)後保留
查詢:rpm {-q|--query} [select-options] [query-options]
select-options
-a 所有包
-f 查詢指定的文件有哪個包安裝生成
-p /path/to/package_file 針對尚未安裝的程序包文件做查詢
--what'provide 查詢指定的文件由哪個包提供
--whatrequire 查詢指定的文件被哪個包所依賴
[query-options]
--changelog 查詢rpm包的changelog
-c 查詢配置文件
-d 查詢幫助文檔
-i 簡要信息
-l 顯示安裝生成的所有文件
-R 查詢指定程序依賴
--provides 列出指定程序包所提供的capability