Linux系統的早期,編譯是利用程序代碼生成可執行文件的過程的手動編譯。雖具有一定優勢,但是專業知識要求高,不利于實際操作。因此出現了許多軟件包管理器,最具代表的是由Red Hat 推出的RPM。Yum則有利于解決linux安裝軟件時的依賴性。
所謂依賴性,就是linux系統中的軟件將不同的功能模塊單獨寫入到不同的軟件包中,最后將多個相互依存的軟件包結合起來形成一個應用程序(網上答案)。通俗來說,就是你在linux安裝程序時,會接二連三的要求你先安裝與正要安裝的程序有依賴性的軟件才可以。
以下分別講述rpm與yum
rpm包命名方式:
name -VERSION-release.arch.rpm
VERSION: minor major release
release: release.OS
常見的arch:
×86:i386, i486, i586, i686
×86_64: ×64, ×86_64, amd64
以下是RPM軟件包名稱格式:
包命名和工具:
Linux軟件安裝包的類型
通常Linux應用軟件的安裝包有三種:
1) tar包,如software-1.2.3-1.tar.gz。他是使用UNIX系統的打包工具tar打包的。
2) rpm包,如software-1.2.3-1.i386.rpm。他是Redhat Linux提供的一種包封裝格式(www.rpmfind.NET)。
3) dpkg包,如software-1.2.3-1.deb。他是Debain Linux提供的一種包封裝格式。
4) bin包,如RealPlayer11GOLD.bin,它是realplayer的linux文件下的二進制安裝格式,它是源程序經過編譯后的一種機器語言。
5)腳本安裝文件,這一類格式比較多,例如后綴為sh、pl、run的文件都是腳本文件。不過對于普通用戶不太常見。安裝這類文件要注意的問題是,多數要給文件先增加可執行權限,否則有可能會提示找不到文件。具體方法:終端或控制臺下執行 chmod +x ***.*,然后再安裝。
一:rpm
Rpm命令基本格式:
rpm [option]
-q : 使用查詢模式
-a : 查詢所有軟件包
-i : 顯示所有詳細信息。如果指定了軟件包,則安裝軟件包
–install 安裝
–test 檢測
–nodeps 忽略依賴性關系直接安裝
–replacepkgs 已安裝過的包重裝
–nosignature 不檢查來源合法性
–nodigest 不檢查包完整性
–noscripts 不執行程序包腳本
%pre: 安裝前腳本; –nopre
%post: 安裝后腳本; –nopost
%preun: 卸載前腳本; –nopreun
%postun: 卸載后腳本; –nopostun
-l : 顯示軟件包的文件列表
-p : 查詢指定的軟件包
-f : 查詢指定文件所屬軟件包
-v : 顯示命令執行過程
-h : 安裝軟件包時顯示進度信息
-e : 卸載指定的軟件包
-U : 升級軟件包
實例:
如果想查看已經安裝的所有軟件包:
[root@localhost ~]# rpm -qa
如果想查看某個軟件包:
[root@localhost ~]# rpm -qa | grep “軟件包名”
查詢文件所屬軟件包(需要輸入文件的絕對路徑)
[root@localhost ~]# which ls
[root@localhost ~]# rpm -qf /usr/bin/ls
使用rpm命令安裝軟件包
[root@localhost ~]# df #查看光盤是否掛載
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 48803552 4772816 44030736 10% /
devtmpfs 1001392 0 1001392 0% /dev
tmpfs 1016064 84 1015980 1% /dev/shm
tmpfs 1016064 9172 1006892 1% /run
tmpfs 1016064 0 1016064 0% /sys/fs/cgroup
/dev/sda5 48803552 33008 48770544 1% /app
/dev/sda1 972452 156004 816448 17% /boot
tmpfs 203216 16 203200 1% /run/user/42
tmpfs 203216 0 203216 0% /run/user/0
/dev/sr0 8086368 8086368 0 100% /media
[root@localhost ~]# cd /media
[root@localhost media]# ls
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@localhost media]# cd Packages/
[root@localhost Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
Preparing… ################################# [100%]
Updating / installing…
1:tree-1.6.0-10.el7 ################################# [100%]
[root@localhost Packages]# rpm -qa tree
tree-1.6.0-10.el7.x86_64
使用rpm卸載軟件包:
[root@localhost Packages]# rpm -e tree
-Uvh 當有舊的版本的包時,則卸載舊包再裝新包,如沒有舊包,直接裝新包
-Fvh 當有舊的包時,卸載舊包裝新包,無舊包時,什么也不做
–oldpackage 降級 已有新包,裝舊包
–force 強制安裝
-q 軟件包名 查詢已安裝過的軟件包名。
-qa 列出所有的已安裝過的rpm包
-qa “name*”
-qa |grep name
-qf 查詢一個文件來自于哪一個rpm包 (已安裝的rpm)
-q –changelog 版本更新日志
-qc 查詢軟件包的配置文件(不是所有包都有配置文件)
-qd 查詢軟件包的幫助文檔
-qi 查詢軟件包的詳細信息
-ql 查詢軟件包所安裝到系統當中的所有文件路徑
-q –scripts 查詢軟件包自帶的腳本
-q –provides 查詢自身的功能
-qR 查詢實現自身的功能需要什么能力
-qp[licd] rpm包 查看未安裝的rpm包的各項信息二:yum
-e 軟件名
–nodeps 忽略依賴性。強制卸載
二:yum
Yum有yum倉庫,yum倉庫里放著rpm包文件和元數據文件(放置于特定目錄repodate下)。其工作原理是:
當執行yum install rpmfilename(安裝軟件包時),會先下載元數據里記錄rpm依賴關系數據的文件,同時臨時產生一個文件來緩存這些數據,然后就會下載所有有依賴關系的安裝包,最后執行安裝,安裝完成之后會刪除那個臨時文件。
Yum配置文件:
/etc/yum.conf: 為所有倉庫提供公共配置
/etc/yum.repos.d/*.repo:為倉庫的指向提供配置
倉庫指向的定義:
[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的用法:
yum check-update 列出所有可更新的軟件清單
yum update 安裝所有更新軟件
yum install <package_name> 僅安裝指定的軟件
yum remove <package_name> 刪除指定軟件包
yum list 列出所有可裝的軟件清單
yum list updates 列出所有可更新的軟件包
yum list installed 列出所有已安裝的軟件包
yum list extras 列出所有已安裝但不在yum repository 內的軟件包
yum search <keyword> 查找軟件包
yum info 列出所有軟件包的信息
yum provides <package_name> 列出軟件包提供哪些文件
yum clean packages 清除緩存目錄(/var/cache/yum)下的軟件包
yum clean headers 清除緩存目錄(/var/cache/yum)下的headers
以上所列有針對所有文件,若你想只針對單個包文件進行操作,只需跟上包文件名就可以了。
注意:不建議只執行yum update命令,因為會造成所有軟件都會更新安裝,如非需要,在工作中盡量不要執行此條命令。
原創文章,作者:xxcj,如若轉載,請注明出處:http://www.www58058.com/84631