運維筆記10 (Linux軟件的安裝與管理(rpm,yum))

概述:用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 -qlp name.rpm ##系統安裝這個包後會產生哪些文件(顯示結果同上一個命令) 

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 -q ##查詢這個軟件是否安裝

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>

-ivh name.rpm --forece   ##強制安裝
-qi ##查詢軟件的信息
-Kv name.rpm ##檢測軟件包是否被篡改(比方你在網上找到了一個第三方軟件包。必定要先檢測一下,是否被人篡改過)

-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緩存

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,371
remove 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
。

。。省略 名稱和簡單介紹匹配 only,使用「search all」試試。

可以看出,這個搜索是將和yum源中軟件名稱或者信息有一致的話就進行匹配。

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就沒有在一開始顯示出來,那麼咱們如何找到呢?
相關文章
相關標籤/搜索