軟件包管理
API:Application Programming Interface
POSIX:Portable OS
程序源代碼 –> 預處理 –> 編譯 –> 匯編 –> 鏈接
靜態編譯:.a
動態編譯:.so
二進制應用程序的組成部分:
二進制文件、庫文件、配置文件、幫助文件
程序包管理器:
debian:deb文件,dpkg包管理器
redhat:rpm文件,rpm包管理器
rpm:Redhat package manager
rpm package manager
命名格式:mame-version-release.arch.rpm
源代碼:name-version.tar.gz|bz2|xz
version:major.minor.release
常見的arch:
x86:i386,i486,i586,i686
x86_64:x64,x86_64,amd64
powerpc:ppc
跟平臺無關:noarch
包之間可能存在依賴關系,甚至循環依賴。
解決依賴包管理工具:
yum:rpm包管理器的前端工具
apt-get:deb包管理器前端工具
zypper:suse上的rpm前端工具
dnf:fedora 18+ rpm包管理器前端工具
查看二進制程序所依賴的庫文件
ldd 二進制所在目錄
管理及查看本機裝載的庫文件
ldconfig
/sbin/ldconfig -p:顯示本機已經緩存的所有可用庫文件名及文件路徑映射
配置文件:/etc/ld.so.conf , /etc/ld.so.conf.d/*
緩存文件:/etc/ld.so.cache
程序包管理器:
功能:將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、升級和校驗等管理操作
包文件組成(每個包獨有)
rpm包內的文件
rpm的元數據,如名稱、版本、依賴性和描述等安裝或卸載時運行的腳本
數據庫(公共):/var/lib/rpm
程序包名稱及版本
依賴關系
功能說明
包安裝后生成的各文件路徑及校驗碼信息
rpm命令
安裝、卸載、升級、查詢、校驗、數據庫維護
安裝:
rpm -i 安裝
-v 顯示安裝過程
-h 以#顯示安裝進度
-l 列出rpm包中的文件
–test: 測試安裝,但不真正執行安裝,即dry run模式
–nodeps:忽略依賴關系
–replacepkgs |replacefiles軟件遭到破壞重新安裝時找回破壞的文件
–nosignature: 不檢查來源合法性
–nodigest:不檢查包完整性
–noscripts:不執行程序包腳本
%pre: 安裝前腳本; –nopre
%post: 安裝后腳本; –nopost
%preun: 卸載前腳本; –nopreun
%postun: 卸載后腳本; –nopostun
升級:
upgrade:安裝并升級,有舊版本升級,沒有就安裝(-U)
freshen:升級,有舊版本升級,沒舊版本報錯(-F)
以上兩項不能用于升級內核版本
升級內核版本時直接安裝,安裝后
–oldpackage:降級
–force:強制安裝
查詢:
-q:查詢
-a:所有包
-c: 查詢程序的配置文件
-d: 查詢程序的文檔
-i: information
-l: 查看指定的程序包安裝后生成的所有文件
-R: 查詢指定的程序包所依賴的CAPABILITY
-f:查看指定的文件由哪個程序包安裝生成
-p rpmfile:針對沒有安裝的包文件查詢(跟文件名)
–changelog:查詢rpm包的changelog
–scripts:程序包自帶的腳本
–provides: 列出指定程序包所提供的CAPABILITY
–whatprovides ?關鍵字\功能 :查詢指定的 CAPABILITY 由哪個包所提供
–whatrequires ?關鍵字\功能 :查詢指定的 CAPABILITY 被哪個包所依賴
rm -rf /var/lib/rpm 從刪庫到跑路的第四步
rpm2cpio 包文件|cpio –itv 預覽包內文件
rpm2cpio 包文件|cpio –id “*.conf” 釋放包內文件
以上方法可以恢復損壞的包文件,但可能會影響到文件屬性
卸載:
-e卸載
–allmatches:卸載多個同名包文件
包校驗:
-V:校驗包錯誤(后面跟文件名,加a查詢包全部文件)
S:文件大小不同
M:模式不同
5:哈希值不同
D:設備號碼不匹配
L:路徑不匹配
U:校驗用戶權限
G:校驗組權限
T:校驗包時間的一致性
P:功能不同
-K:檢查包的完整性和前面(需要導入簽名文件)
rpm –import 簽名文件
光盤默認路徑:/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
系統光盤根目錄下也有
rpm被卸載:
進入救援模式:mount 掛在光盤;rpm -ivh [包名稱] –root=/mnt/sysimage/
yum
解決rpm依賴性問題,基于C/S(client/server)架構,可在多個庫之間定位軟件包
文件
文件服務器
http://
https://
ftp://
file://
yum客戶端配置文件
/etc/yum.conf:為所有倉庫提供公共配置
/etc/yum.repos.d/*.repo:為倉庫的指向提供配置
日志:/var/log/yum.log
倉庫指向的定義:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
roundrobin:意為隨機挑選,默認值
priority:按順序訪問
cost= 默認為1000
yum的repo配置文件中可用的變量:
$releasever: 當前OS的發行版的主版本號
$arch: 平臺,i386,i486,i586,x86_64等
$basearch:基礎平臺;i386, x86_64
$YUM0-$YUM9:自定義變量
yum命令
顯示倉庫列表
yum repolist
顯示程序包
yum list
yum list [all | glob_exp1] [glob_exp2] […]
yum list {available|installed|updates} [glob_exp1] […]
安裝軟件包
yum install package1 [package2] […]
yum reinstall package1 [package2] […] (重新安裝)
升級軟件包
yum update [package1] [package2] […]
yum downgrade package1 [package2] […] (降級)
檢查可用升級
yum check-update
卸載程序包
yum remove | erase package1 [package2] […]
查看程序包information:
yum info […]
查看指定的特性(可以是某文件)是由哪個程序包所提供:
yum provides | whatprovides feature1 [feature2] […]
清理本地緩存:
清除/var/cache/yum/$basearch/$releasever緩存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins |all ]
構建緩存:
yum makecache
yum的命令行選項:
–nogpgcheck:禁止進行gpg check
-y: 自動回答為“yes”
-q:靜默模式
–disablerepo=repoidglob:臨時禁用此處指定的repo
–enablerepo=repoidglob:臨時啟用此處指定的repo
–noplugins:禁用所有插件
如何使用光盤當作本地yum倉庫:
1.掛載光盤至某目錄,例如/media/cdrom
#mount /dev/cdrom /media/cdrom
2.創建配置文件
[CentOS7]
name=
baseur1=
gpgcheck=0
enabled=
yum repolist:自動獲取新的yum源
創建yum倉庫:
createrepo rpm包目錄
程序包編譯安裝:
xxxx.src.rpm 未編譯的rpm包,安裝后,使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝;
源程序從獲取到使用過程:源代碼–>預處理–>編譯(gcc)–>匯編–>鏈接–>執行
源代碼組織格式:
多文件:文件中的代碼之間,很可能存在跨文件依賴關系;
C、C++:make (用configure腳本–>對Makefile.in模板–>生成makefile文件)項目管理器
java:maven
編譯安裝三步驟:
./configure:
1.通過選項傳遞參數,制定啟動特性、安裝路徑;執行時會參考用戶的指定以及Makefile.in文件生成makefile;
2.檢查依賴到的外部環境;
make:
根據makefile文件,構建應用程序;
make install
開發工具:
autoconf:生成configure腳本
automake:生成Makefile.in
開源程序源代碼的獲取:
官方自建站點:
apache.org
mariadb.org
…
代碼托管:
SourceForge
githup.com
code.google.com
c/c++:gcc (GNU C Complier)
編譯C源代碼:
前提:提供開發工具及開發環境;
開發工具:make,gcc等
開發環境:開發庫,頭文件
glibc:標準庫
通過“包組”提供開發組件
centos 6:“Development Tools”,“Server Platform Development”,
centos 7:grouplist
第一步:configure腳本
選項:只等安裝位置、指定啟用的特性
選項分類:
安裝路徑設置:
–prefix=/PATH/TO/SOMEWHERE:指定默認安裝位置
–sysconfidir:配置文件安裝位置
第二步:make
第三部:make install
安裝后的配置:
1.導出二進制程序目錄至PATH環境變量中:
編輯文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
2.導出庫文件路徑
編輯/etc/ld.so.conf.d/NAME.conf
添加新的庫文件所在目錄至此文件中;
讓系統重新生成緩存
ldconfig [-v]
3.導出頭文件
基于鏈接的方式實現;
ln -sv
4.導出幫助手冊
編輯/etc/man.config文件
添加一個MANPATH
wget:下載
rpm是不可替代的,如果被卸載,yum也不能使用,yum是基于rpm的
man配置文件:
/etc/man.config centos6
man_db.conf centos7
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96571