概述:用rpm安裝和管理軟件(rpm解決依賴性),用yum安裝與管理軟件(yum解決依賴性)。php
1.linux的軟件html
linux可以說是一款改變時代的操做系統,但是一個操做系統再優秀假設沒有好用的應用跑在上面,也不會流行起來,嚴格意義上講操做系統也是軟件,是系統軟件。1991年linux系統誕生了,但是在他誕生以前有很是多優秀的程序猿參加了GNU計劃,編寫了很是多「自由」軟件。前端
GNU計劃。又稱革奴計劃,是由Richard Stallman在1983年9月27日公開發起的。它的目標是建立一套全然自由的操做系統。mysql
Richard Stallman最先是在net.unix-wizards新聞組上發佈該消息,並附帶《GNU宣言》等解釋爲什麼發起該計劃的文章。當中一個理由就是要「重現當年軟件界合做互助的團結精神」。爲保證GNU軟件可以自由地「使用、複製、改動和發佈」,所有GNU軟件都有一份在禁止其它人加入不論什麼限制的狀況下受權所有權利給不論什麼人的協議條款,GNU通用公共許可證(GNU General Public License。GPL)。linux
即「反版權」(或稱Copyleft)概念。(此段摘抄自百度文庫)c++
咱們現在所熟知的linux發行版都是基於GNU計劃的。也就是說Linux也是一款GNU計劃的軟件,僅僅是他比較特殊,是所有GNU軟件的執行平臺,因此也把Linux稱爲GNU/Linux。git
2.軟件名稱web
[google-chrome-stable]-[21.0.1180.89]-[154005].[x86_64].[rpm]
<span style="white-space:pre"> </span>(1)<span style="white-space:pre"> </span> (2)<span style="white-space:pre"> </span> (3)<span style="white-space:pre"> </span> (4)<span style="white-space:pre"> </span> (5)
(1)軟件的名稱sql
(2)軟件的版本號chrome
(3)軟件公佈的次數
(4)適合的硬件平臺。可以經過arch命令查詢
(5)rpm格式表示紅帽的軟件包。全稱爲red hat Package Manager。假設是debian系列的系統軟件包的後綴名爲deb。
3.rpm命令的解說
1)rpm命令
rpm -ivh name.rpm##-i表示安裝,-v顯示過程,-h指定加密方式爲hash加密
rpm -e softname##卸載
rpm -ql softname##查詢這個軟件產生的文件
[root@localhost yum]# rpm -ql net-tools /bin/netstat /sbin/arp /sbin/ether-wake /sbin/ifconfig /sbin/ipmaddr /sbin/iptunnel /sbin/mii-diag /sbin/mii-tool /sbin/nameif
。。。(省略過多的文件)
rpm -qa ##查詢系統中安裝的所有軟件的名稱(是軟件不是軟件包)
lzo-2.06-6.el7_0.2.x86_64 perl-Socket-2.010-3.el7.x86_64 ethtool-3.15-2.el7.x86_64 perl-Time-HiRes-1.9725-3.el7.x86_64 hostname-3.13-3.el7.x86_64 perl-Scalar-List-Utils-1.27-248.el7.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 perl-Pod-Simple-3.28-4.el7.noarch p11-kit-trust-0.20.7-3.el7.x86_64 perl-File-Path-2.09-2.el7.noarch gettext-libs-0.18.2.1-4.el7.x86_64
。。。(省略過多的文件)
rpm -qa | grep name ##查詢軟件是否安裝
比方我想查詢我有沒安裝httpserver這個軟件
[root@localhost yum]# rpm -qa | grep httpd <span style="color:#ff0000;">httpd</span>-tools-2.4.6-31.el7.x86_64 <span style="color:#ff0000;">httpd</span>-2.4.6-31.el7.x86_64依據結果我確實安裝了這個軟件
rpm -qp name.rpm##查詢軟件包安裝後軟件的名字
-qf ##查看filename屬於哪一個安裝包
<span style="font-size:18px;">[root@localhost yum]# whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz [root@localhost yum]# rpm -qf /usr/bin/ls coreutils-8.22-11.el7.x86_64 </span>
-qp name.rpm --scripts##檢測軟件在安裝或卸載過程當中運行的動做(檢測這個軟件包是否被篡改還放心的話,可以運行這個個參數,看下在安裝和卸載這個文件後,他所運行的腳本是否有害)
-qc ##查看這個軟件的配置文件
-qd ##查看這個軟件的所有說明文件
2)rpm的缺陷
事實上也不能說是rpm的缺陷,做爲一個軟件安裝工具。僅僅要能很是好的安裝軟件已經足夠了,但是有時候咱們找到一個rpm包後並不能直接安裝上他,那時因爲在開發這個軟件時,他可能需要一些別的軟件來支持。比方MP3播放器,你前提必定要有聲卡驅動,就像這種關係叫作軟件的依賴關係。
咱們來看個實際的樣例:
[root@localhost yum]# rpm -ivh google-chrome-stable-21.0.1180.89-154005.x86_64.rpm 警告:google-chrome-stable-21.0.1180.89-154005.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID ff6382fa: NOKEY 錯誤:依賴檢測失敗: lsb >= 4.0 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要 libatk-1.0.so.0()(64bit) 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要 libgconf-2.so.4()(64bit) 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要 libXss.so.1()(64bit) 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要 libXcomposite.so.1()(64bit) 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要 libXfixes.so.3()(64bit) 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要 wget 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要咱們想用rpm直接安裝谷歌的rpm包。但是發現沒有成功。看了報錯信息後發現。google瀏覽器需要很是多的其它庫或文件支持。致使咱們不能安裝。
但是rpm僅僅是將這個狀況說明了一下。並且中止你的安裝,並無解決你的問題。固然你要是暴脾氣想直接安裝也可以,加上前面提到的--force參數,但是安裝後的軟件那也確定會發生很是奇怪的問題。基於這些問題,出現了yum這樣的前端軟件包管理器,他不只僅是可以發現依賴關係問題。還能解決問題。
4.yum(Yellow dog Updater, Modified)
yum是上層軟件管理工具。最重要的功能是可以解決軟件的依賴關係。但是想讓yum投入使用是咱們必須擁有yum源,但是紅帽系統的官方鏡像源是收費的。咱們以學習爲目的可以先使用Centos的yum源或本身搭建。
1)yum 的client端配置
/etc/yum.repos.d/*.repo##倉庫指向文件的位置(用來指定咱們的yum源在哪裏)
配置格式:
[xxxx] ##本身定義倉庫的名稱
name=yyyy ##本身定義的倉庫描寫敘述
baseurl=[protocol]://地址##用來填寫yum源的地址,可以是本地file://,可以是ftp服務ftp://。可以是http服務http://。
gpgcheck=0 ##gpg是軟件的出品logo是一種非對稱加密用於檢驗軟件是否屬於官方源(不是第三方軟件),爲0時爲檢測,爲1時爲不檢測。
enabled=1 ##是否啓動這個yum源
樣例:
[base] name=localsoft baseurl=http://192.168.1.201/yum gpgcheck=0 enabled=1
yum clean all更新yum的配置。
2)yum的服務端配置
2.1)得到與你係統版本號對應的鏡像文件,比方個人事企業7,那麼就是rhel-server-7.1-x86_64-dvd.iso。
2.2)將這個鏡像掛載到一個文件夾下
mount /iso/rhel-server-7.1-x86_64-dvd.iso /yum
2.3)改動倉庫指向文件
[base] name=localsoft baseurl=file:///yum
gpgcheck=0
enabled=1
2.4)清空yum緩存
yum clean all
2.5)開機本身主動掛載,將鏡像本身主動掛載到/yum
vim /etc/rc.d/rc.local(切記在加入完開機需要啓動的命令後給這個文件加上運行權限,這是企業7處於安全考慮去掉了他的運行權限,假設不去掉運行權限。那麼寫在這個文件下的命令也不會運行)
加入
mount /iso/rhel-server-7.1-x86_64-dvd.iso /yum
這樣本地yum源就配置好了
3)http服務的yum源
你必定想知道網絡上的yum源是怎樣配置的現在我就示範一下:
3.1)首先下載資源共享服務http服務
yum install httpd -y
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl start httpd
systemctl enable httpd
3.2)在/var/www/html/ 下創建一個共享文件夾test
將鏡像掛載到上面
3.3)改動倉庫指向文件
[base] name=localsoft baseurl=http://本機ip/test
gpgcheck=0 enabled=1
在瀏覽器中輸入:http://本機ip/test 測試一下。
4)創建第三方yum源
剛纔咱們創建的yum源都是基於鏡像文件的,也就是說官方都已經給作好的。但是假設咱們本身找到了很是多好用的第三方軟件包也想創建一個Yum源怎麼辦呢?就要本身創建第三方庫。
將收集好的rpm包放在一個目錄下(這個目錄下必定要全是rpm包)。
createrepo -v 當前文件夾,當前文件夾就變成了一個yum源文件夾。
再使用以前的方式將倉庫指向文件改動爲這個文件夾,就可以用啦。
5)yum命令的詳解
yum install softawarename ##安裝
repolist##列出設定的yum源信息
Loaded plugins: langpacks, product-id, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. repo id repo name status !redhatsoftware localsoftware 4,371 repolist: 4,371remove softwarename ##卸載
listsoftwarename##查看軟件源中是否有此軟件,可以不輸入軟件的全部名字,它會本身主動匹配到的。
list all ##列出所有軟件
yajl.x86_64 2.0.4-4.el7 base yelp.x86_64 1:3.8.1-7.el7 base yelp-libs.i686 1:3.8.1-7.el7 base yelp-libs.x86_64 1:3.8.1-7.el7 base 2.31省略。
。。
listinstalled##列出已安裝的軟件名稱
listavailable##列出可以用yum安裝的軟件名稱
clean all##清空yum緩存
search softwareinfo##依據軟件信息搜索軟件名字
[root@2+2 ~]# yum search gcc 已載入插件:product-id, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. ====================================================================================== N/S matched: gcc ======================================================================================= gcc-c++.x86_64 : C++ support for GCC gcc-gnat.x86_64 : Ada 95 support for GCC gcc-objc.x86_64 : Objective-C support for GCC gcc-objc++.x86_64 : Objective-C++ support for GCC libgcc.i686 : GCC version 4.8 shared support library libgcc.x86_64 : GCC version 4.8 shared support library 。可以看出,這個搜索是將和yum源中軟件名稱或者信息有一致的話就進行匹配。。
。。省略 名稱和簡單介紹匹配 only,使用「search all」試試。
whatprovides filename##在yum源中查找包括filename文件的軟件,這個命令常用,增長咱們使用最小安裝,裝了一臺電腦發現他缺乏很是多常用命令。比方ifconfig。
[root@2+2 ~]# yum search ifconifg 已載入插件:product-id, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. 警告:沒有匹配 ifconifg 的軟件包 No matches found依據軟件名字和簡單介紹沒法找到含有ifconfig的軟件。這時這個命令就實用了
[root@2+2 ~]# yum whatprovides */ifconfig 已載入插件:product-id, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. net-tools-2.0-0.17.20131004git.el7.x86_64 : Basic networking tools 源 :base 匹配來源: 文件名稱 :/sbin/ifconfig net-tools-2.0-0.17.20131004git.el7.x86_64 : Basic networking tools 源 :@base 匹配來源: 文件名稱 :/sbin/ifconfig一會兒咱們就看到了咱們需要的ifconfig命令是來自net-tools這個軟件包的,接下來咱們僅僅要安裝這個軟件包就行了。
update##更新軟件,什麼都不加的話它會更新差點兒一切可以更新的軟件。包含內核,因此謹慎使用。
history##查看軟件改變歷史。僅僅包含安裝和卸載
[root@2+2 ~]# yum history 已載入插件:product-id, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. ID | 登陸用戶 | 日期和時間 | 操做 | 變動數 ------------------------------------------------------------------------------- 6 | root <root> | 2016-10-24 15:43 | Erase | 1 5 | root <root> | 2016-10-23 22:18 | Install | 3 4 | root <root> | 2016-10-23 20:13 | Install | 5 3 | root <root> | 2016-10-23 20:13 | Install | 1 2 | root <root> | 2016-10-23 20:11 | Install | 31 1 | 系統 <空> | 2016-10-23 19:10 | Install | 324 history list可以看出。進行了很是屢次的安裝操做,近期一次作了刪除操做。
reinstall softwarename##又一次安裝軟件
info softwarename##查看軟件信息
[root@2+2 ~]# yum info net-tools 已載入插件:product-id, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. 已安裝的軟件包 名稱 :net-tools 架構 :x86_64 版本號 :2.0 公佈 :0.17.20131004git.el7 大小 :917 k 源 :installed 來自源:base 簡單介紹 : Basic networking tools 網址 :http://sourceforge.net/projects/net-tools/ 協議 : GPLv2+ 描寫敘述 : The net-tools package contains basic networking tools, : including ifconfig, netstat, route, and others. : Most of them are obsolete. For replacement check iproute package
groupslist##查看軟件組信息,這些包是整合好的,安裝後就可以進行一些工做的。比方webserver需要的php,mysql,apache等
Maybe run: yum groups mark convert (see man yum) Available environment groups: 最小安裝 基礎設施server 文件及打印server 基本網頁server 虛擬化主機 帶 GUI 的server 可用組: 傳統 UNIX 兼容性 兼容性程序庫 圖形管理工具 安全性工具 開發工具 控制檯互聯網工具 智能卡支持 科學記數法支持 系統管理 系統管理工具 完畢
groupsinfosoftwaregroup##查看軟件組內包括的軟件,這個命令可以查看一個軟件組中的軟件的安裝狀況
[root@2+2 ~]# yum groups info Input* 已載入插件:product-id, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. 組:輸入法 組編號:input-methods 描寫敘述:輸入國際文本的軟件。 默認的軟件包: +ibus-chewing +ibus-hangul +ibus-kkc +ibus-libpinyin +ibus-m17n +ibus-rawcode +ibus-sayura +ibus-table +ibus-table-chinese +m17n-contrib +m17n-db 可選的軟件包: ibus-typing-booster iok 可能的軟件包: gtk2-immodule-xim gtk3-immodule-xim ibus-gtk2 ibus-gtk3 +ibus-qt imsettings-gsettings +imsettings-qt當中+表示沒有安裝,但是會在下次運行「yum upgrade」or"yum group upgrade foo "後安裝。
前面什麼也沒有的表示已經安裝但是不是經過group安裝的方式安裝的。
有時候還會看到=號,表示已經安裝。而且經過groups的方式安裝的。
groupsinstallsoftwaregroup##安裝組件
groups removesoftwaregroup##卸載組件
我這最後另外一個問題。當你使用yum groups list 時發現他所顯示的組包並不全。
[root@2+2 ~]# yum group list 已載入插件:product-id, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. Available environment groups: 最小安裝 基礎設施server 文件及打印server 基本網頁server 虛擬化主機 帶 GUI 的server Installed groups: 安全性工具 系統管理工具 可用組: 傳統 UNIX 兼容性 兼容性程序庫 圖形管理工具 開發工具 控制檯互聯網工具 智能卡支持 科學記數法支持 系統管理 完畢
[root@2+2 ~]# yum groups info Input* 已載入插件:product-id, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. 組:輸入法 組編號:input-methods 描寫敘述:輸入國際文本的軟件。 默認的軟件包: +ibus-chewing +ibus-hangul +ibus-kkc +ibus-libpinyin +ibus-m17n +ibus-rawcode +ibus-sayura +ibus-table +ibus-table-chinese +m17n-contrib +m17n-db 可選的軟件包: ibus-typing-booster iok 可能的軟件包: gtk2-immodule-xim gtk3-immodule-xim ibus-gtk2 ibus-gtk3 +ibus-qt imsettings-gsettings +imsettings-qt你看這個Input-method就沒有在一開始顯示出來,那麼咱們如何找到呢?