您好,登錄后才能下訂單哦!
一、程序包管理器
1、軟件的運行
2、程序包管理
將編譯好的文件打包成一個或有限的幾個文件,可用于實現便捷的安裝、卸載、升級、查詢,校驗等程序管理。 centos常用的程序管理器有rpm和yum
二、程序包管理器之RPM
1、rpm是什么
RPM 是RPM Package Manager(RPM軟件包管理器)的縮寫,這一文件格式名稱雖然打上了RedHat的標志,但是其原始設計理念是開放式的。RPM包管理器(RPM)是一個強大的命令行驅動的包管理系統能夠安裝、卸載、驗證、查詢和更新計算機軟件包。每個軟件包包括存檔的文件連同包和它的版本信息,描述等。還有一個庫API,允許高級開發人員來管理
2、程序的組成部分
程序的組成部分:
編譯之前:源代碼
編譯文件:
二進制程序
庫文件
配置文件
幫助文件(手冊、文檔)
二進制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin, /opt/bin, /opt/sbin
庫文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
配置文件:/etc, /etc/DIR, /usr/local/{etc,conf}
幫助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man
注意:有些特殊的應用程序可能會將可執行文件放置在libexec目錄;
3、rpm包命名格式:
4、分包機制
想象一種場景:testapp有30種功能,其中有10種常用,有6次常用,余下的14種極少用;所以rpm包制作者會把一個程序的每個功能制作成一個rpm包,他們都依賴主包。
例如:
核心包,主包:命名與原項目名稱一致;
bash-4.3.2-2.centos6.x86_64.rpm
子包(支包):命令為源項目名稱后附加分支包中的文件提供的功能組成;
bash-devel-4.3.2-2.centos6.x86_64.rpm
程序包的獲取路徑:
1、系統的發行光盤鏡像或官方站點(或站點鏡像服務器)
掛載光盤:
mount -r /dev/cdrom /media/cdrom
官方站點,鏡像:
mirrors.sohu.com
mirrors.163.com
mirrors.aliyun.com
2、程序包的官方站點
3、第三方組織:epel
4、搜索引擎
http://rpmfind.net
http://rpm.pbone.net
http://pkgs.org
建議:安裝之前要驗正的其合法性
來源合法
包的完整性
三、rpm的應用
3.1 安裝
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-i 安裝
-v 顯示詳細信息,可疊加使用查看更加詳細信息,如-vv,-vvv
-h 顯示進度,用50個#來作為進度條
我們一般組合使用-ivh來安裝rpm包
--nodeps 取消依賴關系
--replacepkgs 重新安裝
--test 測試安裝,而不是真正安裝
舉例:[root@localhost ~]# rpm -ivh package.rpm
3.2升級
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
如果有較舊的版本程序包,則升級安裝;若沒有,則直接安裝
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
如果有較舊的版本程序包,則升級安裝;若沒有,則終止
我們一般組合使用-Uvh、-Fvh來安裝rpm包
[install-options]
--oldpackage 降級安裝
--force 忽略沖突,強制執行
注意:
不要對內核包執行升級操作;linux支持多版本內核并存,因此,對新版本內核可直接安裝;
如果原程序包的配置文件安裝后曾被改動,升級時,新版本的文件并不會直接覆蓋老版本的文件,而是把新版本的文件重命(加后綴.rpmnew)名后保留;
舉例: [root@localhost ~]# rpm -Uvh package.rpm
3.3、卸載
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
--nodeps 忽略依賴關系
--test 卸載測試
舉例 : [root@localhost ~]# rpm -ev package123
3.4、卸載查詢
rpm {-q|--query} [select-options] [query-options]
[select-options]
1、查詢該包是否安裝
rpm -q PACKAGE_NAME...
2、查詢已安裝的所有包
rpm -qa
3、查詢某文件是由哪個包安裝生成
rpm -qf /path/to/somefile
4、查詢尚未安裝包的相關信息
rpm -qp PACKAGE_FILE
[query-options]
1、查詢某包的簡要說明信息
rpm -qi PACKAGE_NAME
2、查詢某包安裝后生成的所有文件列表
rpm -ql PACKAGE_NAME
3、查詢某包安裝后生成的所有配置文件列表
rpm -qc PACKAGE_NAME
4、查詢某包安裝后生成的所有幫助文件列表
rpm -qd PACKAGE_NAME
5、查詢某rpm包制作時隨版本變化的changelog列表信息
rpm -q --changelog PACKAGE_NAME
6、查詢某包提供的capabilities
rpm -q --provides PACKAGE_NAME
7、查詢某包所依賴的capabilities
rpm -q --requires PACKAGE_NAME
8、查詢某包安裝卸載時的腳本
rpm -q --scripts
附加: 安裝卸載時的腳本有四種:
preinstall: 安裝前執行的腳本
postinstall: 安裝后執行的腳本
preuninstall: 卸載前執行的腳本
postuninstall: 卸載后執行的腳本
3.5校驗
rpm {-V|--verify} [select-options] [verify-options]
常用用法:rpm -V PACKAGE_NAME
文件改動后校驗會有下列相關信息提示:
5:文件的MD5校驗值
S:文件大小
L:鏈接文件
T:文件創建的時間
D:設備文件
U:文件的用戶
G:文件的用戶組
M:文件的權限
3.6包來源合法性及完整性驗正
rpm --import PUBKEY ...
導入密鑰
rpm {-K|--checksig} [--nosignature] [--nodigest] PACKAGE_FILE ...
驗證密鑰
--nosignature: 不檢查來源合法性
--nodigest: 不檢查完整性
3.7、公共數據庫:/var/lib/rpm
重建數據庫
rpm {--initdb|--rebuilddb}
初始化:--initdb
如果事先不存在數據,則會新之;否則,不執行任何操作
重新構造:--rebuilddb
無論當前是否已經存在數據庫,都會直接重建并覆蓋現有數據庫
四、程序包管理器之yum
1、yum介紹
yum: Yellow dog Updater,Modified,主要功能是更方便的添加/刪除/更新RPM包,它能自動解決包的倚賴性問題,便于管理大量系統的更新問題
2、配置yum倉庫
yum倉庫配置文件:
指向倉庫的位置以及各種配置信息;每個yum客戶可以有多個可用的yum倉庫
主配置文件有:
/etc/yum.conf
/etc/yum.repos.d/*.repo
yum客戶端配置的高級用法:
(1)、如果有多個yum倉庫,想優先選擇使用,可以在配置文件添加一行cost定義倉庫的使用開銷值,默認值是1000,數值越低越優先
例如:cost=400
(2)、baseurl中指定路徑時可使用變量,
例如:http://mirrors.sohu.com/centos/$releasever/os/$basearch
(3)、可以使用mirrorlist指令替換baseurl
指向一個URL,此URL是一個文本文件,其中保存了大量鏡像服務器列表;用戶使用yum倉庫時,會獲取此列表文件,而后通過fastestmirror插件判斷哪一個鏡像為訪問速度最快的服務器,并以之做為本次訪問的baseurl
3、yum的應用
3.1安裝
yum install PACKAGE_NAME ...
-y: 自動回答為yes
如果需要安裝指定的版本的程序:
yum install PACKAGE-VERSION ...
重新安裝指定的程序包:
yum reinstall PACKAGE_NAME ...
3.2升級
yum update PACKAGE_NAME
如果有多個版本的升級包可用,且僅期望升級到指定版本:
yum update PACKAGE-VERSION
降級:
yum downgrade PACKAGE_NAME
檢查可用升級:
yum check-update
3.3卸載
yum erase|remove PACKAGE_NAME
注意:依賴于該指定程序包的其它包,會被一并卸載
3.4查詢
yum list
列出所有可安裝的軟件清單
yum info PACKAGE_NAME
列出軟件包信息
yum search KEYWORD
根據關鍵字模糊查詢包名或包的sumary信息包含此KEYWORD的相關列表
yum provides|whatprovides /path/to/somefile
列出軟件包提供哪些文件
3.5包租管理
顯示所有包組:
yum grouplist
顯示某包組的相關信息:
yum groupinfo "GROUP_NAME"
安裝包組:
yum groupinstall "GROUP_NAME"
或
yum install @GROUP_NAME 引號加不加都可以
卸載包組:
yum groupremove "GROUP_NAME"
yum remove @"GROUP_NAME"
升級包組:
yum groupupdate "GROUP_NAME"
3.6從yum倉庫下載rpm包
yumdownloader --resolve PACKAGE_FILE …
--destdir DIR
指定下載目標目錄。默認為當前目錄。
--urls
而不是下載RPM包,列出將要下載的網址
--resolve
當下載RPM包,解決依賴關系,并下載所需的軟件包
--source
而不是下載的二進制RPM包,下載源RPM包
3.7yum命令還可用安裝本地rpm包文件
yum localinstall /path/to/rpm_package_file ...
安裝本地rpm包
選項:
--enablerepo=啟用某yum倉庫
--disablerepo=禁用某yum倉庫
注意:優先級高于/etc/yum.repos.d/*.repo配置文件中定義的屬性;
-y: 自動回答為yes
--nogpgcheck:不驗證包的來源和完整性
四、程序包管理器之 編譯
一、編譯安裝是什么?
在 linux上,有時候有的程序需要定制,可能程序內置功能很多,但是我們需要的只是我們需要的一部分,用yum安裝不能提供我們需要的服務的時候,我們就會編譯安裝。編譯安裝就是將源代碼編譯成我們可以使用的可執行文件。
二、編譯流程 Testapp-VERSION-release.src.rp.---->安裝后,使用rpmbuild命令制作成二進制格式的rpm包----->安裝
第一步:由于SRPM需要重新編譯,而編譯的過程當中,我們至少需要有make與其相關的程序,及gcc、c、c++等其 他的編譯用的程序語言來進行編譯。同時還要安裝“Development Tools”,”Server Platfrom Development”開發組 件。
第二步:configure腳本
選項:指定安裝位置、指定啟用的特性
--help:獲取其支持使用的選項
選項分類:
安裝路徑設定:
--prefix=/PATH/TO/SOMEWHERE:指定默認安裝位置,默認為/usr/local
--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安裝位置
第三步: 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
提示:如果configure安裝為默認路徑,就無須安裝后配置文件。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。