在windows上我們安裝應用程序都是通過雙擊事先下載好.exe格式的應用程序進行的,那麼在linux中我們該如何安裝和卸載軟件呢,本文介紹下在linux中安裝軟件的三種方法:rpm、yum、編譯。
rpm
rpm是以一種數據庫記錄的方式來將你所需要的軟件安裝到你的linux系統的一套管理機制。rpm最大的的特點就是將你要安裝的軟件先編譯過,並且打包成rpm機制的安裝包,通過包裝好的軟件裏頭默認的數據庫記錄這個軟件要安裝的時候必須具備的依賴屬性軟件,當安裝在你的Linux主機時,rpm會先依據軟件裏頭的數據查詢Linux主機的依賴屬性軟件是否滿足,若滿足則予以安裝,若不滿足則不予安裝。那麼安裝的時候就將該軟件的信息整個寫入rpm的數據庫中,以便未來的查詢、驗證與反安裝。
各發行版程序包管理器:
debian:dpt,dpkg,".deb"後綴
redhat:redhat package manager,rpm,".rpm";rpm is package manager;
S.u.S.E:rpm,".rpm"
程序包管理器功能:將編譯好的應用程序的各組成文件打包成一個或幾個程序包文件,從而更方便地實現程序包的安裝、升級、卸載和查詢等管理操作;
rpm包命名格式:
name-VERSION-release.arch.rpm
VERSION: major.minor.release
release.arch:rpm包的發行號
rpm命令:rpm [OPTIONS][PACKAGE_FILE]
安裝:-i,--install
升級:-U,--update,-F,--freshen
卸載:-e,--erase
查詢:-q,--query
校驗:-V,--verify
數據庫維護:--builddb,--initdb
安裝:
rpm{-i|--install} [install-options] PACKAGE_FILE ...
rpm-ivh PACKAGE_FILE...:安裝
rpm -e:卸載
GENERALOPTIONS:
-v:verbose,詳細信息
-vv:更詳細的輸出
[install-options]:
-h:hash marks輸出進度條,每個#表示2%的進度;
--test:測試安裝,檢查並報告依賴關係及衝突消息等
--nodeps:忽略依賴關係,不建議
--replacepkgs:重新安裝
注意:rpm包可以自帶腳本
四類都不執行用--noscripts
preinstall:安裝過程開始之前運行的腳本,%pre,--nopre
postinstall:安裝過程完成之後運行的腳本,%post,--nopost
preuninstall:卸載過程真正開始執行之前運行的腳本,%preun,--nopreun
postuninstall:卸載過程完成之後運行的腳本,%postun,--nopostun
--nosignature:不檢查包簽名信息,即不檢查來源合法性;
--nodigest:不檢查包完整性信息;
升級安裝包:
rpm{-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm{-F|--freshen} [install-options] PACKAGE_FILE ...
-U:升級或安裝;
-F:升級,如果不存在老版本,則不升級也不安裝
rpm-Uvh PACKAGE_FILE ...
rpm-Fvh PACKAGE_FILE ...
--oldpackage:降級安裝;
--force:強制升級;
注意:(1)不要對內核做升級操作;Linux支持多內核版本並存,因此,直接安裝新版本內核
(2)如果某原程序包的配置文件安裝後曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)後提供
卸載軟件包:
rpm{-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...
--allmatches:卸載所有匹配指定名稱的程序包的各版本;
--nodeps:忽略依賴關係
--test:測試卸載,dry run模式
查詢程序包:
rpm{-q|--query} [select-options] [query-options]
[select-options]
PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本;
-a,--all:查詢所有已經安裝過的包;
-f 後跟文件路徑:查詢指定的文件由哪個程序包安裝生成
rpm-qf /etc/fstab
-p,--packagePACKAGE_FILE:用於實現對未安裝的程序包執行查詢操作;
--whatprovidesCAPABILITY:查詢指定的CAPABILITY由哪個程序包安裝;
--whatrequiresCAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;
[query-options]
--changelog:查詢rpm包的changlog;
-l,--list:程序包安裝生成的所有文件列表
-i,--info:程序包相關的信息,版本號、大小、所屬的包組等等;
-c,--configfiles:查詢指定的程序提供的配置文件;
-d,--docfiles:查詢指定的程序包提供的文檔;
--provides:列出指定的程序包所提供的所有CAPABILITY;
-R,--requires:查詢指定的程序包的依賴關係
--scripts:查看程序包自帶的腳本片段
用法:
-qa 列出所有的已經安裝在本機系統上的所有軟件名稱
-qiPACKAGE 列出該軟件的詳細信息、包含開發商、版本與說明等
-qfFILE 後面接文件,查詢系統的某個文件屬於哪一個軟件所有的
-qcPACKAGE 列出該軟件的所有設置文件(找出在/etc/下面的文件名而已)
-qlPACKAGE 列出該軟件所有的文件與目錄所在的完整文件名
-qdPACKAGE 列出該軟件所有的幫助文件
-qR 列出與該軟件有關的依賴軟件所含的文件
-qpiPACKAGE_FILE
-qplPACKAGE_FILE
-qpcPACKAGE_FILE
校驗:
rpm{-V|--verify} [select-options] [verify-options]
S file Size differs:文件的容量大小是否被改變
M Modediffers (includes permissions and file type):文件的類型或文件的屬性是否被改變
5 digest(formerly MD5 sum) differs:MD5這一種指紋碼的內容已經不同
D Devicemajor/minor number mismatch:設備的主/次代碼已經改變
LreadLink(2) path mismatch:link路徑已被改變
U Userownership differs:文件的所有者已被改變
G Groupownership differs:文件的所屬用戶組已被改變
T mTimediffers:文件的創建時間已被改變;
PcaPabilities differ
yum
yum通過分析rpm的標題數據後,根據各軟件的相關性製作出屬性依賴的解決方案,然後可以自動處理軟件的依賴屬性問題,以解決軟件安裝或刪除與升級的問題;
CentOS先將發佈的軟件放置到YUM服務器內,然後分析這些軟件的依賴性問題,將軟件內的記錄信息寫下來。然後再將這些信息分析後記錄成軟件相關性的清單列表。這些列表數據與軟件所在的位置可以稱爲容器。當客戶端有軟件安裝的需求時,客戶端主機會主動向網絡上面的yum服務器的容器網址下載清單列表,然後通過清單列表的數據與本機rpm數據庫已存在的軟件數據相比較,就能夠一口氣安裝所有需要的具有依賴性屬性的軟件了。整個流程可以簡單的用如下圖所示:
當客戶端有升級、安裝的需求時,yum會向容器要求清單的更新,等到清單更新到本機的/var/cache/yum裏面後,等一下更新時就會用這個本機清單與本機的rpm數據庫進行比較,這樣就知道該下載什麼軟件。接下來yum會跑到容器服務器下載所需要的軟件,然後再通過rpm的機制開始安裝軟件。
yum客戶端的配置:
配置文件:
/etc/yum.conf:爲所有倉庫提供公共配置
/etc/yum.repos.d/*.repo:爲倉庫的指向提供配置
倉庫指向的定義:
[repositoryID]:代表容器的名字
name=Some name forthis repository:只是說明一下這個容器的意義而已
baseurl=url://path/to/repository:指定固定的一個容器網址。
enabled={1|0}:是否使用這個容器,1代表使用,0表示不使用
gpgcheck={1|0}:是否需要查閱rpm文件內的數字證書
gpgkey=URL:指明密鑰文件
enablegroups={1|0}是否支持組來進行批量管理
failovermethod={roundrobin|priority}url故障轉移方法
默認爲隨機
cost= 開銷,默認爲1000
yum命令的用法:
yum [options][command] [package ...]
顯示倉庫列表:
repolist[all|enabled|disabled]
顯示程序包:
yum list
安裝程序包:
yum install
升級程序包
update package
降級
downupgrade package
檢查可用升級:
check-update
卸載程序包
remove|erase package
查看程序包的信息
info package
查看程序提供的特性(可以是某文件)是由哪個程序包所提供:
provides 包名
清理本地緩存:
clean
構建緩存
makecache
搜索:
search 以指定的關鍵字搜索程序包名及summary信息
查看指定包依賴的capabilities
deplist package
查看yum事物歷史
yum history
安裝及升級本地程序包
localinstll
如何使用光盤當作本地yum倉庫
(1)掛載光盤至某目錄,例如/media/cdrom
mount -r -t iso9660/dev/cdrom /media/cdrom
(2)創建配置文件
[CentOS 7]
name=
baseurl=
gpgcheck
enabled=
yum的命令行選項:
--nogpgcheck 禁止進行gpg check
-y:自動回答爲“yes”
-q:靜默模式
--disablerepo=repoidglob 臨時禁用此處指定的repo;
--enablerepo=repoidglob 臨時啓用此處指定的repo;
--noplugins 禁用所有插件
編譯
程序包的編譯安裝步驟如下:
第一步:configure腳本
選項:指定安裝位置、指定啓動的特性
--help:獲取其支持使用的選項
選項分類
安裝路徑設定:
--prefix=/PATH/TO/SOMEWHERE:指定默認安裝位置
--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安裝位置
system types:
optionalteatures:可選特性
optionalpackage:可選包
第二步:make
第三步:makeinstall
安裝後的配置:
(1) 導出二進制程序目錄至PATH環境變量中;
編輯文件/etc/profile.d/NAME.sh
exportPATH=/PATH/TO/BIN:$PATH
(2) 導出庫文件路徑
編輯/etc/ld.so.conf.d/NAME.conf
添加新的庫文件所在目錄至此文件中;
讓系統重新生成緩存;
ldconfig [-v]
(3) 導出頭文件
ln -sv
(4) 導出幫助手冊
編輯/etc/man.config文件
添加一個MANPATH 即時生效