yum倉庫管理


yum在線管理

  rpm包的管理分為 rpm命令管理和yum在線管理,rpm命令管理由於可能需要解決各種依賴問題,在安裝軟件的時候可能顯得比較麻煩,然而,yum在線管理正好和它相反。Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器。基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關系,並且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。SO,SO,SO它用起來是相當的方便,特別適合初學者使用。 不過yum的安裝源可以是網上的,也可以是光盤上的呢,要是我們使用網絡上的yum源,那么,這些yum源來自於哪里呢?在我們的/etc/yum.repo.d/目錄下,我們可以看到我們可以使用的yum源,如果/etc/yum.repos.d/里的所有文件不改動,默認啟用網絡yum源,如果把除CentOS-Media.repo以外的yum源暫時修改,並將CentOS-Media.repo里面的內容做下修改,就能啟用本地光盤yum源

一般,只要我們的網絡連通,  上面的yum源都是合法的yum源。一般在有網絡的情況下,默認會從“Base”yum源中下載我們需要的rpm包以及各種依賴包進行自動安裝,在沒有網絡的情況下,則會選擇“Media”yum源——本地光盤yum源.

/etc/yum.repos.d/
CentOS-Base.repo
CentOS-Debuginfo.repo
CentOS-Media.repo
CentOS-Vault.repo

其中CentOS-Base.repo用於網絡yum源的配置
CentOS-Media.repo 用於光盤yum源的配置


 

除了上面的方法外,我們還可以自己手動寫一個yum源配置,方法十分的簡單,首先我們要在 創建一個后綴為repo的文件,至於這個文件的名字,我們可以自己隨意起名,比如我起的名字是:

[root@CT71 ~]#vim locate.repo

接下來我們需要知道在這個文件里面都寫什么東西:

[base]     容器名稱,一定要放在[]里(必須寫,一般第一個我們默認寫成base) name      容器說明,可以自己寫(可以不寫) mirrorlist    鏡像站點,可以注釋掉(可以不寫) baseurl      我們yum源的地址。默認是centOS官方的yum源服務器,是可以使用的(必須寫) enabled     如果enabled=1或者不寫,此容器都是生效的,enabled=0容器無效(默認是1) gpgcheck    如果是1 則RPM數字證書生效,如果是0不生效 gpgkey    數字證書的公鑰文件保存位置,不用管
enablegroups={1|0}開啟組
failovermethod={roundrobin|priority}
roundrobin: 意為隨機挑選,默認值
priority:按順序訪問
cost= 默認為1000

在上面的說明中,baseurl的值就是我們的yum源的路徑,它不能識別空格,所以路徑中有空格的要用“\”進行轉譯,我們所要獲取的軟件包都是從這個路徑里面來的,由於yum的最大作用就是為了解決我們的依賴問題,所以在我們的路徑打開后我們需要能夠看到一個名字為repodata的目錄,這里面記錄的就是我們安裝文件需要的依賴,要想repo可以使用,其實很簡單,我們以一個簡單的例子試下就知道了:

掛載光驅:

[root@CT71 yum.repos.d]#df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2       52403200 4811976  47591224  10% /
/dev/sda3       52403200  339132  52064068   1% /app
/dev/sda1        1038336  172128    866208  17% /boot
/dev/sr0 8086368 8086368 0 100% /mnt/cdrom
[root@CT71 yum.repos.d]#
[root@CT71 yum.repos.d]#ll /mnt/cdrom/
total 1550
-rw-r--r--. 1 root root      14 Dec  5  2016 CentOS_BuildTag
drwxr-xr-x. 3 root root    2048 Dec  5  2016 EFI
-rw-r--r--. 1 root root     215 Dec 10  2015 EULA
-rw-r--r--. 1 root root   18009 Dec 10  2015 GPL
drwxr-xr-x. 3 root root    2048 Dec  5  2016 images
drwxr-xr-x. 2 root root    2048 Dec  5  2016 isolinux
drwxr-xr-x. 2 root root    2048 Dec  5  2016 LiveOS
drwxrwxr-x. 2 root root 1548288 Dec  5  2016 Packages
drwxrwxr-x. 2 root root    4096 Dec  5  2016 repodata
-rw-r--r--. 1 root root    1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7 ------------------------------------校驗碼
-rw-r--r--. 1 root root    1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root    2883 Dec  5  2016 TRANS.TBL
  1 [base]
  2 name=my own yum
  3 baseurl=file:///mnt/cdrom/
[root@CT71 yum.repos.d]#yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
repo id                                     repo name                                      status
base                                        my own yum                                     9,363
repolist: 9,363

  是不是感覺很簡單,但是這樣是有一個問題的,那就是我們無法對安裝包進行各種驗證,無法保證我們的安裝包是安全的,也是是說我們需要對我們安裝的包進行校驗,校驗,就是要驗證包來源的合法性和完整性。這很重要,能夠保證我們安裝的軟件沒有被人修改過,我們上面做的那個小示例是沒有進行校驗的,是存在安全性問題的。

  rpm包的校驗是基於非對稱加密方式的,通過秘鑰對我們的軟件包進行校驗,如果人為的修改軟件包,就無法針對秘鑰驗證成功手動驗證方式我們參考rpm包管理。這里我們就說一下如何在域名配置中添加校驗:

  我們在上面的代碼中有一個校驗碼,一般的yum倉庫都會有這個校驗碼,用於我們在安裝軟件的時候進行校驗。我們以一個小例子說明如何寫這個repo:

  1 [base]
  2 name=my own yum
  3 baseurl=file:///mnt/cdrom/
  4 enable=1
  5 gpgcheck=1
  6 gpgkey=file:///mnt/cdrom/

這里面的gpgcheck就是打開軟件校驗,默認情況下是打開的,這里就是為了讓大家看明白,gpgkey是我們的包校驗碼的地址(空格一樣要進行轉譯),我寫的依然是我上面掛載的光驅里面的,沒毛病。我們在下面的圖片中一樣可以看到官方是如何寫repo的。

 我們在上面的圖片中似乎還發現了變量。比如$releasever ,$basearch 這有什么用呢?最大的好處就是便於移植。

$releasever: 當前OS的發行版的主版本號
$arch: 平台, i386,i486,i586,x86_64
$basearch:基礎平台; i386, x86_64
$YUM0-$YUM9:自定義變量

這是變量代表的含義,要是我們的yum倉庫就是按照平台路徑進行存放的話,我們使用變量,無論什么倉庫我們都不用再更改我們編寫的倉庫路徑,它們自己都可以通過路徑找到我們想要的軟件包,很是方便的。

除了系統自帶的repo和我們自己寫的repo,我們也可以到一些鏡像網站上去找,比如說阿里雲的:http://mirrors.aliyun.com/repo/ 等。

我在上述的網站上下載了一個yum源,我們來看一下它們都寫了什么:

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#
 
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#released updates 
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

 除了手動設置repo外,其實我們也可以進行自動設置,設置命令如下:

yum-config-manager --add-repo= 源地址

例如:

   yum-config-manager --add-repo=http://172.17.0.1/centos/6

[root@CT6 ~]# yum-config-manager --add-repo=http://172.17.0.1/centos/6
  aded plugins: fastestmirror, refresh-packagekit
adding repo from: http://172.17.0.1/centos/6

[172.17.0.1_centos_6]
name=added from: http://172.17.0.1/centos/6
baseurl=http://172.17.0.1/centos/6
enabled=1


[root@CT6 ~]# cd /etc/yum.
yum.conf     yum.repos.d/ 
[root@CT6 ~]# cd /etc/yum.repos.d/
[root@CT6 yum.repos.d]# ls
172.17.0.1_centos_6.repo  own.repo  tmp
[root@CT6 yum.repos.d]# vim 172.17.0.1_centos_6.repo 
  1 
  2 [172.17.0.1_centos_6]
  3 name=added from: http://172.17.0.1/centos/6
  4 baseurl=http://172.17.0.1/centos/6
  5 enabled=1
  6 
~    

從上面我們可以看出了,自動設置的話,文件名和repo里面的name也是自動設置的,感覺不是很好,但是也節省了一定的時間,我們也可是使用這個命令對repo倉庫進行開啟關閉:

yum-config-manager --disable “倉庫名" 禁用倉庫
yum-config-manager --enable “倉庫名啟用倉庫

 

還有一種情況就是我們將很多的軟件包搜集到一起來創建repo倉庫,這樣就有一個問題,倉庫軟件都有,但是不能解決依賴關系,因為依賴關系是記錄咋repodata中的,這是我們可以執行一天命令來創建依賴關系:

[root@CT6 ~]# createrepo /app/packages/ 
Spawning worker 0 with 120 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

 


 

yum命令的使用

yum查詢

查詢yum可用的rpm包
yum list[會列出所有]
yum list httpd [只會查找與httpd有關的]                  
yum list {available|installed|updates}

 

yum search 包名
[會查詢和查詢的RPM包相關的包(依賴)]

 

查看指定包所依賴的capabilities:
  yum deplist package1 [package2] [...]

[root@CT6 ~]# yum deplist httpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Finding dependencies: 
Loading mirror speeds from cached hostfile
package: httpd.x86_64 2.2.15-59.el6.centos
  dependency: httpd-tools = 2.2.15-59.el6.centos
   provider: httpd-tools.x86_64 2.2.15-59.el6.centos
   provider: httpd-tools.x86_64 2.2.15-59.el6.centos
  dependency: libc.so.6(GLIBC_2.4)(64bit)
   provider: glibc.x86_64 2.12-1.209.el6
   provider: glibc.x86_64 2.12-1.209.el6
  dependency: libz.so.1()(64bit)
   provider: zlib.x86_64 1.2.3-29.el6
   provider: zlib.x86_64 1.2.3-29.el6
  dependency: rtld(GNU_HASH)
   provider: glibc.x86_64 2.12-1.209.el6
   provider: glibc.i686 2.12-1.209.el6

查看yum事務歷史:
  yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
  yum history  查找yum最近的安裝歷史
  yum history info 6 查看安裝詳情
  yum history undo 6 反向卸載安裝軟件

[root@CT6 ~]# yum history
Loaded plugins: fastestmirror, refresh-packagekit, security
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    12 | root <root>              | 2017-08-15 08:29 | Install        |    1   
    11 | root <root>              | 2017-08-14 20:14 | Erase          |    1   
    10 | root <root>              | 2017-08-14 20:14 | Erase          |    1   
     9 | root <root>              | 2017-08-14 20:07 | Install        |    1   
     8 | root <root>              | 2017-08-14 20:05 | Install        |    1   
     7 | root <root>              | 2017-08-14 20:04 | Install        |    1 P<
     6 | root <root>              | 2017-08-13 19:36 | Install        |    3 ><
     5 | root <root>              | 2017-07-19 18:44 | Install        |    1 > 
     4 |  <Tom>                   | 2017-07-18 11:50 | Install        |    5  <
     3 | System <unset>           | 2017-07-12 05:37 | Install        |    1 > 
     2 | System <unset>           | 2017-07-11 23:45 | Install        |    1   
     1 | System <unset>           | 2017-07-11 15:55 | Install        | 1244   
history list
[root@CT6 ~]# yum history info 12
Loaded plugins: fastestmirror, refresh-packagekit, security
Transaction ID : 12
Begin time     : Tue Aug 15 08:29:53 2017
Begin rpmdb    : 1257:211112be8617ed0957f7b0a6ac8c58ddf512daef
End time       :            08:30:01 2017 (8 seconds)
End rpmdb      : 1258:d7b72327970bf0c2cff30b31a3cf6c87bea8c4b5
User           : root <root>
Return-Code    : Success
Command Line   : -y -q install httpd
Transaction performed with:
    Installed     rpm-4.8.0-55.el6.x86_64                       @anaconda-CentOS-201703281317.x86_64/6.9
    Installed     yum-3.2.29-81.el6.centos.noarch               @anaconda-CentOS-201703281317.x86_64/6.9
    Installed     yum-plugin-fastestmirror-1.1.30-40.el6.noarch @anaconda-CentOS-201703281317.x86_64/6.9
Packages Altered:
    Install httpd-2.2.15-59.el6.centos.x86_64 @172.17.0.1_centos_6
history info [root@CT6 ~]# yum history undo 12
Loaded plugins: fastestmirror, refresh-packagekit, security
Undoing transaction 12, from Tue Aug 15 08:29:53 2017
    Install httpd-2.2.15-59.el6.centos.x86_64 @172.17.0.1_centos_6
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.2.15-59.el6.centos will be erased
--> Processing Dependency: httpd-mmn = 20051115 for package: php-5.3.3-49.el6.x86_64
--> Processing Dependency: httpd >= 2.2.0 for package: gnome-user-share-2.28.2-3.el6.x86_64
--> Running transaction check
---> Package gnome-user-share.x86_64 0:2.28.2-3.el6 will be erased
---> Package php.x86_64 0:5.3.3-49.el6 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================
 Package         Arch   Version              Repository                                Size
============================================================================================
Removing:
 httpd           x86_64 2.2.15-59.el6.centos @172.17.0.1_centos_6                     3.0 M
Removing for dependencies:
 gnome-user-share
                 x86_64 2.28.2-3.el6         @anaconda-CentOS-201703281317.x86_64/6.9 1.1 M
 php             x86_64 5.3.3-49.el6         @base                                    3.5 M

Transaction Summary
============================================================================================
Remove        3 Package(s)

Installed size: 7.6 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing    : gnome-user-share-2.28.2-3.el6.x86_64                                     1/3 
  Erasing    : php-5.3.3-49.el6.x86_64                                                  2/3 
  Erasing    : httpd-2.2.15-59.el6.centos.x86_64                                        3/3 
  Verifying  : php-5.3.3-49.el6.x86_64                                                  1/3 
  Verifying  : gnome-user-share-2.28.2-3.el6.x86_64                                     2/3 
  Verifying  : httpd-2.2.15-59.el6.centos.x86_64                                        3/3 

Removed:
  httpd.x86_64 0:2.2.15-59.el6.centos                                                       

Dependency Removed:
  gnome-user-share.x86_64 0:2.28.2-3.el6              php.x86_64 0:5.3.3-49.el6             

Complete!

yum的安裝日志放在:/var/log/yum.log


 

yum安裝

yum -y install 包名如果不加參數y ,在安裝過程中會問你要不要繼續,但是加上y之后,就全部自動安裝
-q:靜默模式
--nogpgcheck:禁止進行gpg check
--disablerepo=repoidglob:臨時禁用此處指定的repo
--enablerepo=repoidglob:臨時啟用此處指定的repo
--noplugins:禁用所有插件
在一會要介紹的源碼安裝中,前提必須安裝gcc,因為源碼需要編譯,關於源碼安裝,一會再說,現在說的是,gcc的安裝需要很多依賴,所以最好使用yum網絡安裝。

yum升級

yum -y update 包名

檢查可用升級:
yum check-update

yum downgrade package  [降級] 

要是yum -y update后面沒有跟包名,那就意味着所有的東西都會升級,包括內核。可是有時候內核需要在本地進行一定的配置才能使用,如果在遠程執行這樣的命令,可能無論如何都鏈接不上,只能讓在本地的人配置后才能使用,這樣就非常的麻煩。

yum卸載

yum -y remove | erase  包名

按照安裝的順序進行卸載a>b>c
這樣卸載是連依賴包一起給卸載掉的,但是要注意,這些依賴包也許不光這個軟件本身依賴,還有可能系統也在依賴,所以,卸載后可能會造成系統崩潰,所以,安裝的軟件包,最好不要卸載。

查看yum信息

yum info [...]
查看指定的特性(可以是某文件)是由哪個程序包所提供:
  yum provides | whatprovides feature1 

[root@CT6 ~]# yum info httpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
Available Packages
Name        : httpd
Arch        : x86_64
Version     : 2.2.15
Release     : 59.el6.centos
Size        : 834 k
Repo        : 172.17.0.1_centos_6
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.

yum緩存

清理本地緩存:
清除/var/cache/yum/$basearch/$releasever緩存
yum clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]

我們使用最多的就是yum clean all

構建緩存

yum makecache 

由於緩存清空后一般會自動建立,所以我們很少會用到這個命令

安裝及升級本地程序包

有時候我們不是從yum倉庫安裝的軟件,而是在網上下載的軟件包,這時候我們可以采用下面的命令,可以很好的解決安裝本地程序包的依賴問題

  yum localinstall rpmfile1 [rpmfile2] [...]
    (install替代)
  yum localupdate rpmfile1 [rpmfile2] [...]
    (update替代)

軟件組的查詢安裝

yum中不僅有單個的RPM包可以安裝,還可以安裝軟件組,比如 語言,桌面,等等都是一組軟件,我們可以很方便的把一組軟件安裝上去,同時卸載的時候,也可以把這組軟件都給卸載掉

軟件組的查詢

yum grouplist
[可以查出所有可以安裝的軟件組]

軟件組安裝

yum groupinstall 軟件包組
在安裝的時候,如果軟件組名字之間有空格一定要用“”包起來

軟件包組更新

yum groupupdate group1 [group2] [...]

軟件包信息查詢

yum groupinfo group1 [...]

[root@CT6 ~]# yum groupinfo "Web Server"
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Group Process
Loading mirror speeds from cached hostfile

Group: Web Server
 Description: Allows the system to act as a web server, and run Perl and Python web applications.
 Mandatory Packages:
   httpd
 Default Packages:
   crypto-utils
   httpd-manual
   mod_perl
   mod_ssl
   mod_wsgi
   webalizer
 Optional Packages:
   certmonger
   libmemcached
   memcached
   mod_auth_kerb
   mod_auth_mellon
   mod_auth_mysql
   mod_auth_pgsql
   mod_authnz_pam
   mod_authz_ldap
   mod_intercept_form_submit
   mod_lookup_identity
   mod_nss
   mod_revocator
   perl-CGI
   perl-CGI-Session
   perl-Cache-Memcached
   python-memcached
   squid

軟件組刪除

yum groupremove 軟件包組

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM