Linux系統軟件包的管理

雖然使用源碼編譯安裝能夠具備提升速度個性化的定製等優勢,但對於 Linux發行商來講,則不容易管理軟件包,畢竟不是每一個人都會進行源碼編譯的,若是可以將軟件預先在相同的硬體與系統上面編譯好在發佈的話,不就可以讓相同的 Linux 發行版,同時擁有相投的版本了嗎,若是再加上簡易的安裝/移除/管理等機制的話,對於軟體控管就會更加簡單,大多數現代類 Unix 操做系統都提供了一個集中的軟件包管理機制,以幫助用戶搜索、安裝和管理軟件,而軟件一般以「包」的形式存儲在倉庫「repository」中,對軟件包的使用和管理被稱爲包管理,本章咱們將介紹 RedHat 系統中爲咱們提供的解決方案,RPM和YUM包管理機制.node

因爲自由軟件的蓬勃發展,加上大型 Unix-Like 主機的強大性能,讓不少軟件開發者將他們的軟件發佈出來,後來 Linux 發展起來後,由一些企業或社區打包成爲特定的發行版,RedHat就是這方面的龍頭老大,但後來發現這些發行版的軟件管理機制至關的混亂,沒有一種統一的管理方式,這時候各大廠商開始着力研究如何有效的管理這些文件,RedHat提出了rpm和Yum倉庫的解決方案,時至今日Yum已成爲服務器上使用最多的軟件管理工具.此外還有一種dpkg格式的軟件安裝包,是社區來維護的,下面咱們來具體介紹這兩種軟件包吧.python

目前在 Linux 界軟件安裝方式最多見的有兩種,分別是:數據庫

● DPKG 包
這個機制最先是由 Debian Linux 社區所開發出來的,經過 dpkg 的包管理, Debian 打包軟件就可以簡單的安裝,同時還能提供安裝後的軟件維護與更新,只要是衍生於 Debian 的其餘 Linux 發行版都 dpkg 這個機制來管理軟件的,包括 B2D,Ubuntu,Kali Linux 等.vim

● RPM 包
這個機制最先是由 Red Hat 這家公司開發出來的,後來實在很好用,所以不少 Linux 發行版,就使用這個機制來做爲軟件安裝的管理方式,包括 RedHat,Fedora,CentOS,SuSE等知名廠商都在使用它.centos

如前所述,不管是DPKG仍是RPM,這些軟件包或多或少都會有依賴關係問題,那麼各大 Linux 發行商是如何解決這個問題的呢 ?緩存

目前的 Linux 發行商,在dpkg管理機制上就開發出 APT 包管理工具, RPM 則依開發商的不一樣,有RedHat系統的YUM,以及SuSE系統的YOU,Mandriva系統的urpmi都在使用RPM下面咱們使用的是RedHat系統,因此說使用的管理機制爲 RPM 機制,因此咱們使用YUM,下面就讓咱們來談談 RPM 與 YUM 的關係吧.

bash

軟件管理之RPM

RPM 全名是 "RedHat Package Manager" 簡稱則爲 RPM 顧名思義,當初這個軟件管理的機制就是由 Red Hat 這家公司開發出來的 RPM 是以一種數據庫記錄的方式來將你所須要的軟件安裝到你的 Linux 系統的一套管理機制.服務器

RPM命令是RPM軟件包的管理工具,rpm本來是Red Hat Linux發行版專門用來管理Linux各項套件的程序,因爲它遵循GPL規則且功能強大方便,於是廣受歡迎,逐漸受到其餘發行版的採用,RPM套件管理方式的出現,讓Linux易於安裝,升級,間接提高了Linux的適用度.網絡

那麼 RPM 包的特色有哪些呢 ?app

⦁ 有專門的工具進行安裝、卸載、升級和管理軟件,管理起來更加方便.
⦁ 安裝簡潔、速度快,因爲使用RPM無需編譯因此安裝效率很是高.
⦁ RPM包因爲通過了封裝,因此咱們沒法直接獲取其源代碼.
⦁ 因爲通過了封裝,因此其功能選擇性差,功能定製不靈活.

RPM包的命名方式有哪些 ? i386,i586,i686,noarch,x86_64表明的含義是 ?

[root@localhost ~]# ls -lh
total 3.1M
-r--r--r--. 1 root root 1.8M Jan 17  2018 bind-9.9.4-61.el7.x86_64.rpm
-r--r--r--. 1 root root 1.2M Jan  8  2018 httpd-2.4.6-80.el7.x86_64.rpm

bind      .9.9.4    -61    .el7    .x86_64    .rpm
↑           ↑        ↑       ↑        ↑        ↑
①           ②        ③       ④        ⑤        ⑥

1.軟件名稱:本例軟件名爲bind
2.軟件版本:本例軟件版本爲9.9.4-61
3.發佈次數:本例修改了61次
4.編譯平臺:編譯平臺有(el8=RHEL8,el7=RHEL7,el6=RHEL6)
5.適合平臺:平臺有(i386,i586,i686,noarch,x86_64)
6.打包格式:這裏是rpm包,還有一種gpkg包.

好了,看了這麼多內容,下面咱們開始進入正題,分別來介紹這些命令的含義吧.

◆RPM 安裝軟件◆

由於安裝軟件是ROOT的工做,所以你得要是ROOT的身份纔可以使用RPM這個命令的,用RPM來安裝很簡單,下面咱們就來先看他的參數說明吧.

[root@localhost ~]# rpm --help

命令語法:[ rpm [選項] 包名稱 ]

        -i              #安裝一個新的rpm軟件包
        -v              #顯示安裝詳細過程
        -h              #以"#"號顯示安裝的進度

        --nodeps        #不檢測依賴安裝
        --force         #強制安裝,無論軟件是否存在,都強制從新安裝(修復軟件)
        --test          #測試安裝,不真正安裝,檢測軟件依賴關係
        --prefix        #指定安裝路徑,不按照默認路徑安裝
        --replacefiles  #以覆蓋寫入方式安裝
        --replacepkgs   #重複安裝軟件
        --justdb        #更新軟件在數據庫內的相關信息
        --nosignature   #忽略數字證書檢測
        --noscripts     #禁止軟件安裝過程當中執行某些命令

通常來講RPM的安裝選項與參數大約就是這些了,一般建議直接使用 -ivh 就行了,若是安裝的過程當中發現問題,一個一個去將問題找出來,儘可能不要使用 "暴力安裝" ,就是經過 --force 去強制安裝,由於可能會發生不少不可預期的問題,除非你很清楚的知道使用上面的參數後,安裝的結果是你預期的.

◆RPM 查詢信息◆

RPM在查詢的時候,其實查詢的地方是在 /var/lib/rpm/ 這個目錄下的數據文件,另外RPM也能夠查詢未安裝的RPM軟件資料,下面咱們先來看看可用的參數吧.

[root@localhost ~]# rpm --help

命令語法:[ rpm [選項] 包名稱 ]

[查詢已安裝軟件]

        -q 軟件名        #查看指定軟件是否安裝
        -qa              #查看系統中全部已安裝的軟件
        -qi 軟件名       #查看指定軟件的詳細信息
        -qc 軟件名       #列出軟件因此設置文件
        -qd 軟件名       #列出軟件因此幫助文件
        -ql 軟件名       #查看指定軟件安裝的目錄和文件列表
        -qR 軟件名       #查看指定軟件的依賴關係
        –qf 文件或目錄   #查詢文件或者目錄,是由哪一個軟件包安裝產生的

[查詢未安裝軟件]

        -qpi 包全名      #查看指定未安裝軟件的詳細信息
        -qpl 包全名      #查看指定未安裝軟件的默認安裝位置(預覽)
        -qpR 包全名      #查看指定未安裝軟件的依賴關係

實例1:使用rpm -qi查看一個軟件的詳細說明.

[root@localhost ~]# rpm -qi tree

Name        : tree
Version     : 1.6.0
Release     : 10.el7
Architecture: x86_64
Install Date: Thu 15 Nov 2018 07:18:16 AM EST
Group       : Applications/File
Size        : 89505
License     : GPLv2+
Signature   : RSA/SHA256, Wed 02 Apr 2014 05:33:48 PM EDT, Key ID 199e2f91fd431d51
Source RPM  : tree-1.6.0-10.el7.src.rpm
Build Date  : Mon 27 Jan 2014 12:29:58 PM EST
Build Host  : x86-020.build.eng.bos.redhat.com
Relocations : (not relocatable)
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor      : Red Hat, Inc.
URL         : http://mama.indstate.edu/users/ice/tree/
Summary     : File system tree viewer
Description :
The tree utility recursively displays the contents of directories in a
tree-like format.  Tree is basically a UNIX port of the DOS tree
utility.

實例2:使用rpm -ql查看軟件安裝釋放的目錄.

[root@localhost ~]# rpm -ql tree

/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz

實例3:使用rpm -qR查看軟件依賴關係.

[root@localhost ~]# rpm -qR tree

libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1

實例4:使用rpm -qf查看指定文件是由那個包安裝的.

[root@localhost ~]# rpm -qf /bin/bash
bash-4.2.46-30.el7.x86_64

[root@localhost ~]# rpm -qf /bin/ls
coreutils-8.22-21.el7.x86_64

實例5:使用rpm -qpi查看一個未安裝軟件詳細信息.

[root@localhost ~]# rpm -qpi bind-9.9.4-61.el7.x86_64.rpm

warning: bind-9.9.4-61.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Name        : bind
Epoch       : 32
Version     : 9.9.4
Release     : 61.el7
Architecture: x86_64
Install Date: (not installed)
Group       : System Environment/Daemons
Size        : 4556343
License     : ISC
Signature   : RSA/SHA256, Wed 17 Jan 2018 05:28:47 AM EST, Key ID 199e2f91fd431d51
Source RPM  : bind-9.9.4-61.el7.src.rpm
Build Date  : Wed 17 Jan 2018 04:15:44 AM EST
Build Host  : x86-034.build.eng.bos.redhat.com
Relocations : (not relocatable)
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor      : Red Hat, Inc.
URL         : http://www.isc.org/products/BIND/
Summary     : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server
Description :
BIND (Berkeley Internet Name Domain) is an implementation of the DNS
(Domain Name System) protocols. BIND includes a DNS server (named),
which resolves host names to IP addresses; a resolver library
(routines for applications to use when interfacing with DNS); and
tools for verifying that the DNS server is operating properly.

◆RPM 升級軟件◆

使用 RPM 來升級真是太簡單了,就以 -Uvh 或 -Fvh 來升級便可,而 -Uvh 與 -Fvh 能夠用的選項與參數,跟 install 是同樣的,不過 -U 與 -F 的意義仍是不太同樣的,下面咱們來開一下它的配置信息吧.

[root@localhost ~]# rpm --help

命令語法:[ rpm [選項] 包名稱 ]

        -v              #顯示安裝詳細過程
        -h              #以"#"號顯示安裝的進度
        -U              #升級安裝,若沒安裝,則直接安裝,若安裝有舊版本,則升級安裝
        -F              #升級安裝,若沒安裝,則不安裝,必須有舊版本,才進行升級安裝

由上面的說明來看,若是你想要大量的升級系統舊版本的軟件,使用 -Fvh 則是比較好的做法,由於沒有安裝的軟件不會安裝到你的系統,可是須要注意的是,若是你使用的是 -Fvh ,恰恰你的機器上沒有安裝該軟件,那麼該軟件並不會被安裝在你的 Linux 主機上面,因此請從新以 ivh 來安裝吧.

◆RPM 驗證證書◆

驗證(Verify)的功能主要在於提供系統管理員一個有用的管理機制,做用的方式是使用 "/var/lib/rpm" 下面的數據庫數據內容來比對目前 Linux 系統的環境下的全部軟件信息,也就是說當你有文件不當心遺失,或者由於你誤刪除掉了某軟件的文件,咱們就用這個簡單的方法來驗證一下本來的軟件系統吧,好讓你瞭解這一陣子究竟是修改到哪些文件,下面咱們先來看一下它的經常使用參數吧.

[root@localhost ~]# rpm --help

命令語法:[ rpm [選項] 包名稱 ]

        -V 軟件名        #驗證指定軟件安裝後的完整性,及文件的元數據是否發生變化
        -Va             #列出目前系統上全部被改動過的文件
        -Vf 文件名       #驗證指定文件是否被修改過
        -Vp 文件名       #列出該軟件內可能被改動過的文件

下面,咱們經過驗證一個文件,看其是否被修改過吧.

[root@localhost ~]# rpm -Vf /etc/profile

S.5....T.      c           /etc/profile
#↑ 驗證結果     ↑ 文件類型   ↑ 文件位置

你會發如今文件名 /etc/profile 以前有個 c 而後就是一堆奇怪的文字了,那個c表明的是配置文件,至於最前面的八個選項,咱們在下面說明一下吧:

驗證結果具體的信息:

s -------------> 文件大小是否改變
M -------------> 權限是否被改變
5 -------------> 文件的MD5校驗和是否改變(即文件內容)
D -------------> 主從設備號是否改變(/dev/)
L -------------> 文件路徑是否改變
U -------------> 文件的屬主是否改變
G -------------> 文件的屬組是否改變
T -------------> 文件的修改時間是否改變

文件類型具體分類:

c -------------> 配置文件
d -------------> 普通文件
g -------------> 鬼子文件,該文件不該在RPM包中
l -------------> 受權文件
r -------------> 描述文件

通過驗證的功能,你就能夠知道那個文件被更動過,那麼若是該文件的變動是預期中的,那麼就沒有什麼大問題,可是若是該文件是非預期的,那麼是否被入侵了了呢,因此說通常配置文件被改動比較正常,要是二進制文件被改動,多是被入侵了,咱們就要提升警戒了啊,畢竟對於一個運維人員來講,背黑鍋仍是很不爽的啊.

談完了程序的驗證後,不知道你有沒有發現一個問題,那就是,驗證只能驗證程序內的數據與 /var/lib/rpm/裏面的數據是否對應而已,若是該程序數據庫所提供的數據自己就有問題,那你使用驗證的手段也沒法肯定該軟件的正確性啊.下面就出現了數字證書的概念.

就像你本身的簽名同樣,咱們的軟件開發商原廠所推出的軟件也會有一個廠商本身的證書系統,只是這個證書被數字化了而已,廠商能夠生成一個專屬的數字證書,並將該證書的公鑰(public key) 放入其發行版中,當你要安裝一個RPM時,系統會執行如下流程:

⦁ 首先必須找到原廠的公鑰文件,而後進行安裝
⦁ 而後安裝RPM包時,會去提取RPM包中的證書信息,而後和本機安裝的原廠證書進行驗證
⦁ 若是驗證經過,則容許安裝;若是驗證不經過,則不容許安裝並警告

咱們 RedHat 使用的數字證書系統爲 GNU 計劃的 GnuPG (GNU Privacy Guard, GPG)能夠經過加密運算,算出獨一無二的專屬金鑰系統或者是數字證書系統,咱們也會知道首先必需要安裝原廠的GPG數位證書的公鑰才行,如下是數字證書的存放位置,其有兩份,操做系統中有一份,原廠光盤裏也有一份.

[root@localhost ~]# ls -lh /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

-rw-r--r--. 1 root root 3.2K Feb 28  2018 /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[root@localhost ~]# ls -lh /mnt/RPM-GPG-KEY-redhat-release

-r--r--r--. 1 root root 3.2K Feb 28  2018 /mnt/RPM-GPG-KEY-redhat-release

從上面的輸出結果,可知證書的位置,下面咱們開始安裝它.

[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

那安裝完成以後,那咱們先列出金鑰軟件名稱後,再以 -qi 的方式來查詢看一下軟件的信息吧.

[root@localhost ~]# rpm -qa |grep pubkey
gpg-pubkey-2fa658e0-45700c69
gpg-pubkey-fd431d51-4ae0493b

[root@localhost ~]# rpm -qi gpg-pubkey-2fa658e0-45700c69
Name        : gpg-pubkey
Version     : 2fa658e0
Release     : 45700c69
Architecture: (none)
Install Date: Thu 15 Nov 2018 09:39:17 AM EST
Group       : Public Keys
Size        : 0
License     : pubkey
Signature   : (none)
Source RPM  : (none)
Build Date  : Fri 01 Dec 2006 06:05:13 AM EST
Build Host  : localhost
Relocations : (not relocatable)
Packager    : Red Hat, Inc. (auxiliary key) <security@redhat.com>
Summary     : gpg(Red Hat, Inc. (auxiliary key) <security@redhat.com>)
Description :
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: rpm-4.11.3 (NSS-3)

mQGiBEVwDGkRBACwPhZIpvkjI8wV9sFTDoqyPLx1ub8Sd/w+YuI5Ovm49mvvEQVT
VLg8FgE5JlST59AbsLDyVtRa9CxIvN5syBVrWWWtHtDnnylFBcqG/A6J3bI4E9/A
UtSL5Zxbav0+utP6f3wOpxQrxc+WIDVgpurdBKAQ3dsobGBqypeX6FXZ5wCgou6C
=d/bm
-----END PGP PUBLIC KEY BLOCK-----

重點就是最後面出現的那一串亂碼啦,那但是做爲數字證書很是重要的一環,若是你忘記加上數字證書,極可能不少原版軟件就不能讓你安裝,除非你利用 rpm 時選擇略過證書.

◆RPM 卸載軟件◆

移除的選項很簡單,直接經過 -e 便可移除,不過常常發生因爲軟件依賴關係而沒法卸載的狀況,下面看一下他的參數吧

[root@localhost ~]# rpm --help

命令語法:[ rpm [選項] 包名稱 ]

        -e        #卸載軟件(注意卸載順序)
        --nodeps  #不檢測依賴卸載

因爲 RPM 軟件經常會安裝/移除/升級等,某些動做或許可能會致使 RPM 數據庫 /var/lib/rpm/ 內的數據損壞,果然如此的話,咱們可使用 --rebuilddb 這個選項來重建一下數據庫文件.

◆RPM 提取文件◆

例如提取tree目錄下的文件並恢復到指定文件

[root@localhost ~]# ls -l
total 48
-rw-rw-r-- 1 root root 47508 Jul  4  2014 tree-1.6.0-10.el7.x86_64.rpm

[root@localhost ~]# rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -idv     #提取tree包中的文件
./usr/bin/tree
./usr/share/doc/tree-1.6.0
./usr/share/doc/tree-1.6.0/LICENSE
./usr/share/doc/tree-1.6.0/README
./usr/share/man/man1/tree.1.gz
177 blocks

[root@localhost ~]# ll
total 48
-rw-rw-r-- 1 root root 47508 Jul  4  2014 tree-1.6.0-10.el7.x86_64.rpm
drwxr-xr-x 4 root root    30 Sep 20 05:17 usr


軟件管理之YUM

咱們在本章一開始開始的地方談到過 YUM 這個東西,這個 YUM 是經過分析 RPM 的標頭數據後,根據各軟件的相關性,製做出軟件依賴解決方案,而後能夠自動處理軟件的依賴屬性問題,以解決軟件安裝或移除與升級的問題,事實上RedHat在放出系統時,已經搭建好了提供給全球使用的軟件源,因此理論上,咱們不須要處理任何設定值,只要可以鏈接上Intelnet,就可使用Yum來更新數據了.

◆本地YUM源配置◆

雖然Yum工具,只須要你的主機鏈接互聯網,就能夠直接使用,可是有些時候咱們須要自定義Yum源實現加速,下面咱們將配置一個本地Yum源,來使用光盤中的軟件,其餘網絡配置操做步驟相同,只是會在baseurl參數後面會有所區別.

1.首先默認狀況下,咱們的系統是沒有給咱們配置Yum源的,在這裏咱們須要在指定配置文件中建立一個以.repo結尾的文件.

[root@localhost ~]# cat /etc/yum.repos.d/redhat.repo

[server]
name="redhat yum"
baseurl=file:///mnt
enabled=1
gpgcheck=0

>>[server]   ----------> 表明容器的名稱,能夠隨便寫
>>name       ----------> 給容器起的名字,可自定義
>>mirrorlist ----------> 列出容器可使用的鏡像站點,不用可屏蔽
>>baseurl    ----------> 默認鏡像地址,可寫本地地址,也可寫FTP地址
>>enabled=1  ----------> 就是讓容器啓動
>>gpgcheck=0 ----------> 關閉證書檢測
>>gpgkey     ----------> 證書保存位置

2.第一步配置完畢之後,接下來咱們來檢查一下配置是否生效,和生成緩存文件.

[root@localhost ~]# yum repolist all
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
repo id   repo name                                               status
Server   "rhel7"                                                  enabled: 5,099
repolist: 5,099

[root@localhost ~]# yum makecache
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Server                                                             | 4.3 kB  00:00:00
Metadata Cache Created

到此本地Yum倉庫就配置好啦,下面是一些拓展信息.

阿里雲Yum源倉庫地址
wget http://mirrors.aliyun.com/repo/Centos-6.repo
wget http://mirrors.aliyun.com/repo/Centos-7.repo

網易Yum源倉庫地址

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

經常使用RPM包查詢網站

curl https://centos.pkgs.org/
curl http://rpmfind.net/
curl https://dl.fedoraproject.org/pub/

◆網絡YUM源配置◆

因爲RedHat默認自帶的YUM源須要註冊才能更新,咱們想不花錢也能夠更新,須要將RedHat的YUM源替換成Centos的,若是你直接使用的是Centos的系統那麼這一步能夠跳過了,你能夠直接使用官方提供的YUM倉庫地址,下面咱們來看一下如何替換RHEL系統的YUM文件吧.

1.查看RHEL7裏面默認安裝的YUM包文件,強制刪除自帶的YUM包,再見.

[root@localhost ~]# rpm -qa |grep "yum"
yum-rhn-plugin-2.0.1-10.el7.noarch
yum-metadata-parser-1.1.4-10.el7.x86_64
yum-3.4.3-158.el7.noarch

[root@localhost ~]# rpm -qa |grep "yum" |xargs rpm -e --nodeps
[root@localhost ~]# rpm -qa |grep "python-urlgrabber" |xargs rpm -e --nodeps
[root@localhost ~]# rpm -qa |grep yum

3.下載好Centos的YUM包文件,並忽略依賴,強制安裝.

[root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
[root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-161.el7.centos.noarch.rpm
[root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
[root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-utils-1.1.31-50.el7.noarch.rpm
[root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/python-urlgrabber-3.10-9.el7.noarch.rpm

[root@localhost ~]# ls -lh
total 1.6M
-rw-r--r-- 1 root root 109K Nov 12 10:19 python-urlgrabber-3.10-9.el7.noarch.rpm
-rw-r--r-- 1 root root 1.3M Nov 12 10:27 yum-3.4.3-161.el7.centos.noarch.rpm
-rw-r--r-- 1 root root  28K Jul  4  2014 yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
-rw-r--r-- 1 root root  34K Nov 12 10:27 yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
-rw-r--r-- 1 root root 122K Nov 12 10:27 yum-utils-1.1.31-50.el7.noarch.rpm

[root@localhost ~]# rpm -ivh --nodeps *.rpm

4.更換YUM源地址,此處咱們使用阿里雲的源.

[root@localhost ~]# rm -fr /etc/yum.repos.d/*
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

5.修改CentOS-Base.repo文件中的$releasever所有替換爲版本號7,直接更新緩存便可.

[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Base.repo

:%s/$releasever/7/g

[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache

◆YUM 倉庫查詢◆

[root@localhost ~]# yum --help

命令語法:[ yum [選項] 包名稱 ]

        -y              #自動化安裝,無需應答
        installroot     #安裝時指定安裝位置
        search          #搜索指定包文件
        list            #顯示所有可用列表
        info            #顯示軟件相關信息
        grouplist       #查詢全部已安裝和可安裝的軟件組
        groupinfo       #列出軟件組中包含的軟件
        provides        #經過關鍵字查找安裝包

指定安裝位置: 使用installroot指定軟件安裝位置.

[root@localhost ~]# yum install -y --installroot=/tmp/ tree
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Server                                                                  | 4.3 kB  00:00:00
(1/2): Server/group_gz                                                  | 145 kB  00:00:00
(2/2): Server/primary_db                                                | 4.1 MB  00:00:00
Package tree-1.6.0-10.el7.x86_64 already installed and latest version
Nothing to do
[root@localhost ~]#

查軟件信息: 使用yum info命令查看軟件具體信息.

[root@localhost ~]# yum info tree
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Installed Packages
Name        : tree
Arch        : x86_64
Version     : 1.6.0
Release     : 10.el7
Size        : 87 k
Repo        : installed
From repo   : Server
Summary     : File system tree viewer
URL         : http://mama.indstate.edu/users/ice/tree/
License     : GPLv2+
Description : The tree utility recursively displays the contents of directories in a
            : tree-like format.  Tree is basically a UNIX port of the DOS tree
            : utility.

查包文件: 使用provides經過關鍵字查詢指定包,以下可知tree命令是由tree-1.6.0-10.el7.x86_64包安裝的.

[root@localhost ~]# yum provides tree
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
tree-1.6.0-10.el7.x86_64 : File system tree viewer
Repo        : Server

tree-1.6.0-10.el7.x86_64 : File system tree viewer
Repo        : @Server

◆YUM 清理緩存◆

[root@localhost ~]# yum clean packages       #清除緩存目錄下的軟件包
[root@localhost ~]# yum clean headers        #清除緩存目錄下的 headers
[root@localhost ~]# yum clean oldheaders     #清除緩存目錄下舊的 headers

[root@localhost ~]# yum clean all            #清除下載的臨時軟件包和緩存
[root@localhost ~]# yum makecache            #創建軟件包緩存,提升查詢速度
[root@localhost ~]# yum update               #更新全部須要更新的軟件&內核

◆yum安裝卸載◆

[root@localhost ~]# yum install [軟件名]              #所有安裝
[root@localhost ~]# yum groupinsall [軟件組名]        #安裝程序組

[root@localhost ~]# yum  remove [軟件名]              #刪除軟件
[root@localhost ~]# yum  groupremove [軟件組名]       #刪除軟件組

◆yum更新升級◆

[root@localhost ~]# yum update [軟件名]              #所有更新
[root@localhost ~]# yum check-update                #檢查可更新的程序
[root@localhost ~]# yum upgrade [軟件名]             #升級指定程序包
[root@localhost ~]# yum groupupdate [組軟件名]       #升級程序組

◆安裝圖形界面◆

[root@localhost ~]# yum -y install xorg*
[root@localhost ~]# yum -y groupinstall "X Window System"
[root@localhost ~]# yum -y groupinstall Desktop
[root@localhost ~]# yum -y groupinstall "Chinese Support"
[root@localhost ~]# startx


軟件管理之DPKG

"dpkg"是"Debian Packager"的簡寫,爲"Debian"專門開發的軟件管理系統,方便軟件的安裝、更新及移除.全部源自"Debian"的"Linux "發行版都使用"dpkg",這個機制最先是由 Debian Linux 社區所開發出來的,經過 dpkg 的包管理, Debian 打包軟件就可以簡單的安裝,同時還能提供安裝後的軟件維護與更新,只要是衍生於 Debian 的其餘 Linux 發行版都 dpkg 這個機制來管理軟件的,dpkg自己是一個底層的工具.上層的工具,如APT,被用於從遠程獲取軟件包以及處理複雜的軟件包關係,包括 B2D,Ubuntu,Kali Linux 等.

root@kali:~# dpkg --help

命令語法:[ dpkg [選項] 包名稱 ]

        -i              #安裝軟件包
        -r              #刪除軟件包
        -P              #刪除軟件包的同時刪除其配置文件
        -L              #顯示軟件包文件列表
        -l              #顯示已安裝軟件包列表
        -c              #顯示軟件包內文件列表
        -s              #顯示指定軟件包的詳細狀態
        --unpack        #解開軟件包
        --confiugre     #配置軟件包

安裝軟件: 經過使用-i選項安裝pack.deb軟件.

root@kali:~# dpkg -i pack.deb
root@kali:~# dpkg --install pack.deb

刪除軟件: 經過使用-rP選項刪除pack.deb軟件(包括配置文件).

root@kali:~# dpkg -rP pack.deb
root@kali:~# dpkg --remove pack.deb

列出軟件包: 經過使用-l選項列出系統已安裝的軟件包.

root@kali:~# dpkg -l

詳細信息: 經過使用-s顯示指定軟件詳細信息.

root@kali:~# dpkg -s bash
root@kali:~# dpkg -I bash


軟件管理之APT

Advanced Package Tool又名apt-get,是一款適用於Unix和Linux系統的應用程序管理器.最初於1998年發佈,用於檢索應用程序並將其加載到Debian Linux系統.Apt-get成名的緣由之一在於其出色的解決軟件依賴關係的能力.其一般使用.deb-formatted文件,但通過修改後可使用apt-rpm處理紅帽的Package Manager(RPM)文件,Apt-get在Linux社區獲得普遍使用,成爲用來管理桌面、筆記本和網絡的重要工具.隨着Linux在企業中的普及,Windows和Mac用戶瞭解如何使用apt-get加載應用程序有必定的好處.

root@kali:~# apt --help

命令語法:[ apt [選項] 包名稱 ]

        -i              #安裝軟件包
        list            #根據名稱列出軟件包
        search          #搜索軟件包描述
        show            #顯示軟件包細節
        install         #安裝軟件包
        remove          #移除軟件包
        autoremove      #卸載全部自動安裝且再也不使用的軟件包
        update          #更新可用軟件包列表
        upgrade         #經過安裝/升級軟件來更新系統

apt-get安裝:

root@kali:~# sudo apt-get install package             #安裝包
root@kali:~# sudo apt-get install package --reinstall #從新安裝包
root@kali:~# sudo apt-get -f install                  #修復安裝
root@kali:~# sudo apt-get bulid-dep package           #安裝相關的編譯環境

apt-get刪除:

root@kali:~# sudo apt-get remove package              #刪除包
root@kali:~# sudo apt-get remove package --purge      #徹底刪除包
root@kali:~# sudo apt-get -f autoremove               #把軟件附加項也刪掉
root@kali:~# sudo apt-get autoremove --purge software #刪除的更完全些

apt-get更新:

root@kali:~# sudo apt-get update                       #更新源
root@kali:~# sudo apt-get upgrade                      #更新已安裝的包
root@kali:~# sudo apt-get dist-upgrade                 #升級系統

apt-get修復:

root@kali:~# sudo apt-get source package                  #下載該包的源代碼
root@kali:~# sudo apt-get clean && sudo apt-get autoclean #清楚無用的包
root@kali:~# sudo apt-get check                           #檢查是否有損壞的依賴
root@kali:~# sudo dpkg -i package                         #安裝後綴是deb的

apt-get搜索:

root@kali:~# sudo apt-cache search package                #搜索軟件包
root@kali:~# sudo apt-cache show package                  #獲取軟件包信息
root@kali:~# sudo apt-cache depends package               #瞭解使用該包依賴哪些包
root@kali:~# sudo apt-cache redepends package             #查看該包被哪些包依賴

參考文獻:Linux鳥哥私房菜,Linux運維之道

相關文章
相關標籤/搜索