Linux程序包安裝和管理方式共計三種:
一、[yum|dnf],通過官網或者其他開源網站提供的文件服務器,本機鏡像源等途徑進行安裝。
二、rpm,通過官網或者其他開源網站通過下載rpm包,在本地繼續安裝
三、源代碼編譯,通過官網或者其他開源網站下載源代碼自己編譯安裝
yum|dnf
yum|dnf 安裝程序包的機制是通過官網或者其他開源網站提供的文件服務器、本機鏡像源等,在這個文件服務器上面存儲了眾多rpm包,以及包的相關的元數據(放置于特定目錄文件:repodata),因此我們只需要讓本機能夠訪問這個文件服務器即可。
一、yum|dnf 安裝的優勢:在遠程的文件服務器上面儲存了元數據,元數據記錄了,每一個程序報的依賴關系,當我們需要下載某個程序包時,首先文件服務器會自行讀取元數據確定相關安裝報的依賴關系,將所有這個程序需要依賴的庫函數,程序包等等一起按照程序包要求的特定順序進行安裝。這樣安裝避免了我們自己去確定程序的依賴關系,節約了時間。
1,文件服務器格式(共四類):
(ftp文件服務器) ftp://
(http文件服務器) http://
(ntf文件服務器) ntf://
(本機鏡像服務器) file:///
1,現在本機查看是否安裝了yum或者dnf工具,rpm -q [yum|dnf]
[root@localhost ~]# rpm -q yum
yum-3.4.3-132.el7.centos.0.1.noarch
可以看到本機已經安裝了yum工具。
2,本機yum客服端:
配置文件:
/etc/yum.conf :為所有倉庫提供公共配置
/etc/yum.repos.d/*.repo :為倉庫的指向提供配置
常用的倉庫配置,具體的每個信息請man yum.conf
庫指向的定義
[repositoryID]—->這個yum源的名字,必須有
name=Some name for this repository——>對于這個yum詳細描述
[baseurl=url://path/to/repository
url://path/to/repository
url://path/to/repository
yum源的指向地址,這是本地yum元的地址
mirrorlist 互聯網鏡像指向,這個yum必須支持插件功能]必須有
enabled={1|0}是否啟動,0代表不啟用,1代表啟用
gpgcheck={1|0}是否檢查這個軟件包的來源是否合法,0代表不啟用,1代表啟用
repo_gpgcheck={1|0}是否檢查這個yum源合法,0代表不啟用,1代表啟用
gpgkey=URL 軟件包合法性key的位置,一般都在本機的
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enablegroup={0|1} 檢查軟件包組是否合法,0代表不啟用,1代表啟用
failovermethod={roundrobin|priority} yum源的掃描方式,一共兩種方式:
1、輪循掃描,隨機從一個baseurl地址開始,當這個baseurl鏈接服務器失敗后才鏈接下一個baseurl地址
2、priority,直接從上到下依次掃描
bandwidth
username :服務器不允許匿名顯示需要輸入用戶名
passwd :服務器上面有密碼是需要輸入面
顯示倉庫列表
yum
repolist [all|enabled|disabled]
yum程序包管理工具的功能:
升級/檢查/卸載
查看程序包informat
查看指定的特性(可以是某文件)是由那個程序包所提供
provides|whatprovides
清理本地緩存
clean
構建緩存
makecache (沒必要做,每次安裝都會構建緩存,更新緩存)
搜索
search(模糊匹配機制)
以指定的關鍵字搜索程序報名及summary信息;
重新安裝
reinstall
程序包降級
downgrade
顯示某個程序包的依賴關系
deplist
查看yum事務歷史
yum history
yum history summary
yum 來安裝rpm包,可以解決rpm 的依賴關系
localinstall(可以直接使用insall)
localupdate(直接使用update)
顯示包組
grouplist
包組安裝:
groupinstall
包組信息
groupinfo
包組移除:
groupremove
如何使用光盤當做本地yum倉庫
(1)掛載光盤至某目錄。例如/media/cdrom
# mount -r -t iso9660 /dev/cdrom /media/cdrom
(2) 創建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
yum的命令行選項
–nogpgcheck 禁止執行gpg check
-y 自動回答為“yes”
-q 靜默模式:
–disablerepo=repoidglob :臨時禁用此處指定的repo
–enablerepo=repoidglob :臨時啟用此處的repo
yum的repo配置文件中可用的變量
$releasever :當前os發行版的主板號
$arch :平臺類型
$basearch :基礎平臺
$YUM0-YUM9 (基本沒用)
自建yum源
createrepo [options]<directory>
這個命令里面的選項基本沒用,若有需要自行man
二、rpm
rpm=rpm is packeage manager
rpm的優勢:
使用RPM最大的好處在于它提供快速之安裝,減少編譯安裝之偵錯困擾。對于最終用戶來說,RPM所提供的眾多功能使維護系統要比以往容易的多。安裝、卸載和升級RPM軟件包均只需一條命令即可完成,所有煩瑣的細節問題無須您費心。RPM維護一個所有已安裝的軟件包和文件的數據庫,可以讓您進行功能強大的軟件包查詢和驗證工作。
在軟件包升級過程中,RPM會對配置文件進行特別處理,因此您絕對不會丟失以往的定制信息——這對于直接使用.tar.gz文件是不可能的。對于程序員,RPM可以讓您連同軟件的源代碼打包成源代碼和二進制軟件包供最終用戶使用。這個過程十分簡單,整個過程由一個主文件和可能的補丁程序組成。RPM在軟件的新版本發布時,這種“原始”源代碼,補丁程序和軟件生成指令的清晰描述簡化了軟件包的維護工作。
rpm包的劣勢:需要自己解決程序包的依賴關系
rpm包命名的格式:
redis-3.0.2-1.centos7.x64.rpm
name-VERSION-release(打包次數).arch.rpm
VERSION:majior.minor.release(發行版本)
release.arch:rpm包的發行號
relese.os:2.el7.i386.rpm
archetceure:i386,x64(amd64),ppc,noarch
changelog:每次rpm更改后都有一個changelog開記錄更改信息
拆包:
redis-3.0.2.tar.gz–>redis-3.0.2-1.centos7.x64.rpm
把一個包當中的n個功能拆開,可以實現按需安裝
拆包后分為:主包和支包
主包:name-VERSION-release.arch.rpm
支包:name-function-release.arch.rpm
function:devel,utils(工具程序),libs(庫包)
rpm程序包管理器的功能
安裝、升級、卸載、查詢、檢驗、數據庫維護
rpm 命令:rpm [options] [package_file]
安裝:-i,–install
升級:-U,-update,-F,–freshen
卸載:-e,–erase
查詢:-q,–query
校驗: -v,–verify
數據庫維護;–rebuilddb,–initdb
安裝:-i,–install
-h:hash ,以50個#來表示安裝進度
-v,–verbose:顯示安裝過程的詳細信息
-vv:更詳細的過程輸出
-vvv:超級詳細的過程輸出
組合使用:-ivh;-ivvh
–test:不執行真正的安裝過程,而僅僅報告依賴關系及沖突信息
–nodeps:忽略依賴關系,副作用是能安裝成功,不一定能運行成功;不建議這樣安裝
–replacepkgs:覆蓋安裝–重新安裝并覆蓋原文件,但是修改的配置文件不會還原,因為系統默認是你有意識的修改,刪除可以恢復
–force:強制安裝
注意:rpm可以自帶腳本:
四類:
preinstall:安裝過程開始之前運行的腳本,%pre,–nopre
postinstall:安裝過程完成之后的腳本,%post,–nopost
preuninstall:卸載過程真正開始執行之前運行的腳本,%preun,–nopreun
postuninstall:卸載過程完成之后運行的腳本,%postun,–nopostun
–noscripts 所有腳本都不執行
–nosingnature 不檢查包簽名信息,不檢查來源合法性
–nodigest不檢查包完整性信息,md5信息
升級
rpm {-U|–upgrade}[install-options]PACKAGE_FILE…
-U 升級或者安裝
{-F|–freshen}[install-iptions]PACKAGE_FILE…
-F 升級
組合使用-iUh;-iFh
–test,不執行真正的安裝或者升級過程,而僅僅報告依賴關系和沖突信息等
–oldpackage :將級;
–force :強制升級;
注意:(1)不要對內核做升級操作;Linux支持多內核并存,因此直接安裝新版本內核
(2)如果某原程序包的配置文件安裝后層級被修改過,升級是,新版本提供的配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENANME.rpmnew)后提供;
卸載:
{-e|–erase}[options]PACKAGE_NAME….
–nodeps
–test:測試卸載時,dry run模式
-allmathes:如果一個程序包同時安裝多個版本,則此選項一次全部卸載之
注意:如果程序包的配置文件被安裝后曾被修改,卸載時,此文件通常不會刪除,而是被重命名(加后綴.rpmsave)后留存。
查詢:
{-q|–query}[select-options][query-options]
[select-options]
PACEAGE_NAME:查詢某包或某些包是否安裝;
rpm -q PACKAGE_NAME…
-a,–all 查詢所有已經安裝過的包
-f FILE :查詢某些文件是有那個包安裝生成;
-f /PATH/TO/SOMEFILE
-pi 查詢某些安裝的包文件的相關信息,使用-p選項
-pi PACKAGE_FILE
–whatprovides CAPABILITY:查詢指定的CAPABILITY由那個程序包提供
–whatrequire CAPANILITY:查詢指定的CAPABILITY被那個包所依賴
[query-options]
-p 文件包名 用于執行查詢未安裝文件包的相關信息,接下面
–changelog:查詢rpm包的changelog
-l,–list:程序安裝生成的所有文件列表
-i,–info 查詢程序包的相關信息
-c,–configfiles 查詢程序包安裝完成后所有的配置文件
-d, 查詢程序安裝完成后生成的所有的幫助文件
–provides:列出指定程序包提供的所有的CAPABILITIES
-R,–requires:查詢指定程序包所依賴的各種資源
–scrips 查詢安裝或者卸載時執行的腳本
校驗:
{-v|–verify}[select-option][verify-options]
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
包來源合法性驗證和完整性驗證:
來源合法性驗證:由我們信任的制作者提供;依賴制作者的數字簽名,簽名是作者使用自己的私鑰加密程序包的特性碼進行的;
所謂內容合法:包未被二次修改;完整性校驗成功,依賴于制作者提供的程序特征碼
驗證方式:安裝者用同樣的特征碼提取算法提取程序包的特征碼,與原作者提供的比較
centos 自帶 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
數據重建:
rpm 管理器數據庫路徑:/var/lib/rpm/
查詢操作:通過此處數據庫進行
獲取幫助:
CentOS6 man rpm
CentOS6 man rpmdb
rpm {–initdb|rebuilddb}
–initdb:初始化數據庫
–rebuilddb:重新構建數據庫
但是構建數據庫不一定能讓原來程序的數據庫完全恢復,所以慎用,實在需要恢復是可以嘗試。
三、編譯安裝
編譯安裝的優勢:是將源代碼在本機編譯而成的安裝好,能夠更好地適應本機的硬件,不會存在兼容性的問題。
程序包編譯安裝
testapp-VERSION-release.src.rpm–>安裝后,使用rpmrebuild命令制作成二進制格式的rpm包,而后再安裝;
源代碼組織格式:
多文件:文件中的代碼之間,很可能存在跨文件依賴關系;
源代碼–>預處理–>編譯器(gcc,c語言編譯器)–>匯編–>鏈接(鏈接器)–>執行
C、C++:make(項目打包構建管理工具)(configure–>Makefile.in –>makefile)
java:maven
C代碼編譯安裝三步驟:
./configure
(1)通過選項傳遞參數,指定啟動特性,安裝路徑等;執行時會參考用戶的指定以及Makefile.in文件生成makefile
(2)檢查各啟動特性依賴的外部環境
make (*)
根據makefile文件,構建應用程序
make install
開發工具:
autoconf:生成configure腳本(有些程序未自帶,需要通過此工具生成)
automake:生成Makefile.in
建議安裝前查看install,沒有install看readme
開源程序源代碼的獲?。?/p>
程序官方自建站點:
apache.org(ASF)
代碼托管:
SourceForege
Giphub.com
code.google.com
C/C++ gcc(GNC C Complier)
編譯C源代碼:
前提:提供開發工具及開發環境
開發工具:make,gcc等
開發環境:開發庫,頭文件
gilbc:標準庫
通過“包組”提供開發組件
Centos 6:"Development Tools","Server platform Development"
第一步:configuer腳本
選項:指定安裝位置、指定啟用的特性
–help :獲取其支持的選項
./configure –prefix=PREFIX 指定默認安裝位置
–sysconfdir=/PATH/TO/SOMEWHERE 配置文件安裝的位置
System types:
Optional Features:可選特性
–disable-FEATURE
–enable-FEATURE[=ARG]
Optional Packages:可選包
–with-PACKAGE[=ARG]
–without-PACKAGE
安裝后的配置:
(1)導出二進制程序目錄至PATH環境變量中:
編輯文件/etc/profile.d/NAME.SH
exprot PAHT=/PATH/TO/BIN:$PATH
(2)導出庫文件路徑
編輯/etc/ld.so.conf.d/NAME.conf
添加新的庫文件所在的目錄至此文件:
讓系統重新生成緩存:
ldconfig [-var]
(3)導出頭文件
創建連接目錄或者文件
ln -sv
存放位置/usr/include
(4)導出幫助手冊
編輯/etc/man.conf
添加一條新的路徑MANPATH
原創文章,作者:fighter,如若轉載,請注明出處:http://www.www58058.com/26383