Linux軟件安裝概括

1 Linux中軟件安裝方式

1.1 軟件包安裝

Linux中的軟件包(即二進制包),主要分爲兩類node

  • RPM包:是由Red Hat 公司所開發的包管理系統。功能強大,安裝、升級、查詢和卸載都很是簡單和方便,目前不少Linux發行版都在使用這種包管理機制,包括Fedora、CentOS、SuSE等。軟件包文件後綴是 ".rpm"。
  • DPKG包:是由Debian Linux 所開發出來的包管理機制,主要應用在Debian和Unbuntu中。軟件包文件後綴是 ".deb"。

不管是RPM仍是DPKG機制,都存在軟件包依賴問題,好比軟件包A依賴軟件包B,軟件包B又依賴軟件包C,即依賴關係是 "A -> B -> C",那麼就必須先安裝C,在安裝B,最後A才能安裝成功。爲了解決這種依賴問題,Linux開發商都提供了在線安裝機制,經過這種機制能夠自動解決依賴關係,安裝A時會自動安裝B和C,就不須要手動去一步步安裝B和C了。基於RPM包管理機制開發出了YUM在線安裝機制,基於DPKG包管理機制開發出了APT在線安裝機制mysql

發行版表明 軟件包管理機制 相關指令 在線安裝機制(指令)
Red Hat/CentOS RPM rpm, rpmbuild YUM(yum))
Debian/Ubuntu DPKG dpkg APT(apt-get)

軟件包安裝優缺點linux

  • 優勢:web

    • 包管理系統簡單,只經過幾個命令就能夠實現包的安裝、升級、查詢和卸載
    • 安裝速度比源碼包安裝快的多
  • 缺點:正則表達式

    • 通過編譯,再也不能夠看到源代碼
    • 功能選擇不如源碼包靈活
    • 安裝過程須要依賴關係。不過有在線安裝機制能夠彌補這個缺點

1.2 源碼包安裝

所謂源碼包通常就是指C語言開發的源代碼文件的一個壓縮包(.tar.gz.tar.bz2)。源碼包的編譯用到了linux系統裏的編譯器 gcc,利用它就能夠把C語言變成可執行的二進制文件,因此若是要使用源碼包安裝必須先安裝 gcc 編譯器(可使用 yum install -y gcc 完成安裝)。sql

源碼包安裝優缺點shell

  • 優勢數據庫

    • 開源,若是有足夠的能力,能夠修改源代碼
    • 能夠自由選擇所需的功能
    • 軟件是編譯安裝,因此更加適合本身的系統,更加穩定、效率更高
    • 卸載方便。直接刪除安裝目錄便可
  • 缺點apache

    • 安裝過程步驟較多,尤爲安裝較大的軟件集合時(如LAMP環境搭建),容易出現拼寫錯誤
    • 編譯過程時間較長,安裝比二進制包安裝時間長
    • 由於是編譯安裝,安裝過程當中一旦報錯新手很難解決

2 RPM 管理軟件包

RPM 軟件包的命名規則爲軟件包名-版本-發佈次數-Linux平臺-硬件平臺.rpm
以Apache軟件包的包全名爲例:"httpd-2.2.15-69.el6.centos.x86_64.rpm"
一、httpd:軟件包名
二、2.2.15:軟件版本
三、69:軟件發佈的次數
四、el6.centos:適合的Linux平臺
五、x86_64:適合的硬件平臺,這裏表示64位
六、rpm:rpm包的擴展名,注意Linux是沒有擴展名的概念,這裏是爲了方便管理員識別segmentfault

RPM 包來源:

  • 第一種方式,官網下載須要安裝的RPM包
  • 第二種方式,經過掛載安裝光盤,光盤中包含全部的RPM包。以 Centos6 爲例:

    1. 給系統添加光盤,若是是虛擬機則直接在設置裏找到虛擬光驅添加光盤映像文件(*.iso)便可。Centos6有兩個盤,通常第一張光盤就包含了大部分經常使用的RPM包,也能夠同時兩張都掛載。若是兩盤都添加的話,對應的設配文件分別爲,/dev/cdrom/dev/cdrom1
    2. 建立兩個目錄做爲光盤掛載點,mkdir /mnt/cd1/ /mnt/cd2/
    3. 掛載光盤,mount /dev/cdrom /mnt/cd1/mount /dev/cdrom1 /mnt/cd2/。掛載完成後,可在/mnt/cd1/Packages//mnt/cd2/Packages/目錄下看到全部的RPM包

RPM 包的默認安裝位置以下:

路徑 說明
/etc/ 配置文件的安裝目錄
/usr/bin/ 可執行的命令安裝目錄
/usr/lib/ 程序所使用的函數庫保存位置
/usr/share/doc/ 基本的軟件使用手冊保存位置
/usr/share/man/ 幫助文件保存位置

2.1 RPM 命令

RPM軟件包的管理工具是 rpm 命令,命令格式:rpm 選項 [軟件包名]

  • 選項(在下面對應的場景會具體說明)
  • 軟件包名:指定要操作的rpm軟件包。若是操做的是未安裝過的軟件包,要使用包全名,並且要注意絕對路徑;若是操做的是已安裝過的軟件包,能夠在任意目錄下直接使用包名,由於若是軟件安裝完畢,該軟件的相關信息會被寫入/var/lib/rpm/ 目錄下的數據庫文件中(這個目錄下的數據庫文件很重要,後續軟件升級和卸載就就依賴於這個數據庫)

2.2 RPM 安裝

安裝命令:rpm -ivh 包全名

  • 選項

    • -i:安裝(install)
    • -v:顯示詳細信息
    • -h:打印#顯示安裝進度
    • --nodeps:不檢測依賴性安裝。軟件安裝時會檢測依賴性,若是所依賴的軟件還未安裝則會報錯,加上這個選項則不檢測依賴強制安裝,但這樣安裝的軟件通常不能使用,建議不要這樣作。
    • --replacefiles:替換文件安裝。若是安裝的軟件包中的部分文件已經存在,則會安裝報錯,使用該選項就會覆蓋現有文件繼續安裝
    • --replacepkgs:替換軟件安裝。若是軟件包已經安裝,使用該選項可把軟件包從新安裝一遍
    • --force:強制安裝。無論是否已經安裝,都從新安裝,至關於 "--replacefiles" 和 "--replacepkgs" 的綜合
    • --test:測試安裝。不會實際安裝,只是檢測一下依賴
    • --prefix=安裝路徑:指定安裝路徑。爲安裝的軟件指定安裝路徑,而不是使用默認安裝路徑。注意:若是指定了安裝路徑,軟件沒有安裝到默認路徑中的話,系統會找不到這些安裝的軟件,而須要進行手工配置才能被系統識別,因此RPM包通常建議採用默認路徑安裝

2.3 RPM 升級

升級命令:rpm -Uvh 包全名rpm -Fvh 包全名

  • 選項

    • -U:升級安裝。若是沒有安裝過,系統直接安裝,若是已安裝的版本較舊,則升級到新版本
    • -F:升級安裝。若是沒有安裝過,則不會安裝,必須安裝有較舊版本才能升級

2.4 RPM 卸載

卸載命令:rpm -e 包名

  • 選項

    • -e:卸載軟件包
    • --nodeps:卸載時不檢查依賴性。若是卸載的軟件被其餘軟件依賴,卸載失敗,加上此選項可強制卸載

注意:卸載已安裝的軟件使用包名便可,不須要使用包全名

2.5 RPM 查詢

1. 查詢軟件包是否安裝rpm -q 包名

  • 選項:

    • -q:查詢(query)

2. 查詢系統中全部安裝的軟件包rpm -qa

  • 選項:

    • -a:全部(all)

3. 查詢軟件包的詳細信息
已安裝:rpm -qi 包名
未安裝:rpm -qip 包全名

  • 選項:

    • -i:查詢軟件信息(information)
    • -p:查詢沒有安裝的軟件包(package)

4. 查詢軟件包的文件列表和安裝目錄
已安裝:rpm -ql 包名
未安裝:rpm -qlp 包全名

  • 選項:

    • -l:列出軟件包中全部文件和軟件所安裝的目錄(list)

5. 查詢系統文件屬於哪一個軟件包rpm -qf 系統文件

  • 選項:

    • -f:查詢擁有指定文件的軟件包(file)

6. 查詢軟件包所依賴的其餘軟件包
已安裝:rpm -qR 包名
未安裝:rpm -qRp 包全名

  • 選項:

    • -R:查詢軟件包的依賴性(required)

2.6 RPM 驗證

1. 校驗指定的已安裝RPM包rpm -V 包名

  • 選項:

    • -V:校驗指定的RPM包中的文件(verify)

若是執行命令後無任何提示,代表沒有作任何修改,若是執行命令後有內容輸出,則軟件包中的文件被修改過。下面假設已安裝的Apache配置文件 "/etc/httpd/conf/httpd.conf" 被修改過爲例,來講明一下校驗輸出的內容:

[root@localhost ~]# rpm -V httpd
S.5....T.  c /etc/httpd/conf/httpd.conf
  • 第一列("S.5....T.")是驗證的內容,具體字母含義以下:

    • S: 文件大小是否改變
    • M: 文件的類型或文件的權限( rwx )是否被改變
    • 5: 文件MD5 校驗和是否改變( 能夠當作文件內容是否改變 )
    • D: 設備的主從代碼是否改變
    • L: 文件路徑是否改變
    • U: 文件的屬主( 全部者 ) 是否改變
    • G: 文件的屬組是否改變
    • T: 文件的修改時間是否改變
  • 第二列("c")是被修改的文件類型,有如下幾種:

    • c: 配置文件(config file)
    • d: 普通文檔(documentation)
    • g: "鬼"文件, 不多見, 就是該文件不該該被這個RPM包包含(ghost file)
    • L: 受權文件(license file)
    • r: 描述文件(read me)
  • 第三列("/etc/httpd/conf/httpd.conf")被修改的具體文件

2. 校驗本機全部已安裝RPM包rpm -Va

3. 校驗某個系統文件是否被修改rpm -Vf 系統文件

3 YUM 管理軟件包

3.1 YUM 源文件介紹

yum 源指的就是獲取 rpm 包的位置(默認就是官網服務器,包含全部的軟件包)。yum源配置文件保存在 /etc/yum.repos.d/ 目錄下,一共有5個擴展名爲 ".repo" 的文件 CentOS-Base.repoCentOS-fasttrack.repoCentOS-Vault.repoCentOS-Debuginfo.repoCentOS-Media.repo。默認狀況下只有 CentOS-Base.repo 文件是生效,文件內容以下:

[root@localhost yum.repos.d]# cat CentOS-Base.repo 
# 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
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates 
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

在 CentOS-Base.repo 文件中有5個 yum 源容器,這裏主要解釋一下 [base] 容器(其餘容器相似):

  • [base]:容器名稱,必定要放在 [ ] 中
  • name:容器說明,能夠本身隨便寫
  • mirrorlist:鏡像站點,這個能夠註釋掉
  • baseurl:yum源服務器的地址。mirrorlist是由yum程序自行去找鏡像站點,baseurl則是指定固定的一個地址
  • enabled:此容器是否生效,若是不寫或者enabled=1則表示此容器生效,寫成enabled=0則表示次容器不生效
  • gpgcheck:若是爲1表示RPM的數字證書生效;若是爲0表示RPM的數字證書不生效
  • gpgkey:數字證書的公鑰文件保存位置

搭建本地光盤爲yum源
若是在沒有網的狀況下,能夠把掛載的光盤做爲yum源。

第一步,首先掛載光盤。這裏假設已經掛載了兩張光盤,掛載點分別爲/mnt/cd1//mnt/cd2/
第二步,修改 CentOS-Media.repo 文件。修改baseurl爲兩個光盤的掛載點,修改enabled=1。以下:

[c6-media]
name=CentOS-$releasever - Media
# 地址爲本地光盤的掛載點
baseurl=file:///mnt/cd1/
        file:///mnt/cd2/
gpgcheck=1
# 把 enabled 改成1讓這個容器生效
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

第三步,爲了CentOS-Media.repo文件真正的生效,須要使其餘的yum源配置文件失效。由於只有擴展名爲 "*.repo" 的文件才能做爲yum源配置文件,能夠修改其餘yum源配置爲備份文件,如 mv CentOS-Base.repo CentOS-Base.repo.bak

3.2 YUM 命令

yum命令是在Fedora和RedHat以及SUSE中基於 rpm 的軟件包管理器,可以從指定的服務器自動下載RPM包而且安裝,能夠自動處理依賴性關係,而且一次安裝全部依賴的軟體包,無須繁瑣地一次次下載、安裝。

yum 命令格式:yum [選項] COMMAND [軟件包]

  • 選項:

    • -y:自動回答"yes",再也不詢問。若是不加該選項,安裝過程當中每一個涉及的包安裝都要手工回答 "yes" or "no"
    • -q:靜默模式。不顯示安裝過程
    • -C:徹底從緩存中運行,而不去下載或者更新任何頭文件
  • COMMAND (要進行的操做)

    • install:執行安裝操做
    • update:執行升級操做
    • remove:執行卸載操做
    • list:顯示可用軟件包列表
    • search:根據關鍵字匹配軟件包
    • info:顯示軟件包信息
  • 軟件包:若是爲包名,則默認爲軟件包的最新版本;若是要指定軟件包版本,則須要使用包全名

3.3 YUM 安裝

安裝指定軟件包:yum -y install 包名
安裝所有軟件包:yum -y isntall (不經常使用)

3.4 YUM 升級

升級指定軟件包:yum -y update 包名
升級所有軟件包:yum -y update (不經常使用)

3.5 YUM 卸載

卸載指定軟件包:yum remove 包名

3.6 YUM 查詢

1. 查詢軟件包列表
查詢yum源服務器上全部可安裝的軟件包列表:yum list
查詢yum源服務器上是否存在某個軟件包:yum list 包名

2. 查詢關鍵字屬於哪一個軟件包
命令格式:yum search 關鍵字
通常用於查找 某個指令 是由哪一個軟件包提供的。好比,要使用 "ifconfig" 指令,須要先安裝 "net-tools" 包

[root@localhost yum.repos.d]# yum search ifconfig
已加載插件:fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.huaweicloud.com
=================================================== Matched: ifconfig ===================================================
net-tools.x86_64 : Basic networking tools

3. 查詢指定軟件包信息yum info 軟件包

3.6 YUM 緩存

默認狀況下,經過 yum 成功安裝軟件後,會把下載的軟件包刪除。若是要保留下載的軟件包,能夠編輯配置文件 /etc/yum.conf,把裏面 "keepcache" 參數改成 1 (默認 keepcache=0 ),這樣每次經過 yum 安裝軟件時,會把下載的軟件包緩存在 /var/cache/yum/ 目錄下,下次再安裝相同的軟件時,能夠從緩存中獲取軟件包,即便在沒有網絡的狀況下也可正常安裝。

1. 清除緩存yum clean packages|headers|oldheaders|all
packages:清除緩存目下的軟件包
headers:清除緩存目錄下的 headers
oldheaders:清除緩存目錄下舊的 headers
all:清除所有

2. 從新創建新的緩存yum makecache

3. 只從緩存中查找軟件包並安裝yum -C install 包名

3.7 YUM 軟件組管理

軟件組指的是一組相關的軟件包(注意,這裏指的不是依賴關係),經過 yum 命令能夠對組內軟件包批量管理。

1. 列出全部可用軟件組yum grouplist

[root@localhost yum.repos.d]# yum grouplist
已加載插件:fastestmirror, security
設置組進程
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.huaweicloud.com
已安裝的組:
   Java 平臺
   NFS 文件服務器
   ...省略...
Installed Language Groups:
   中文支持 [zh]
   亞美尼亞語支持 [hy]
   ...省略...
有效的組:
   MySQL 數據庫服務器
   萬維網服務器
   ...省略...
Available Language Groups:
   上索布語支持 [hsb]
   不丹語支持 [dz]
   ...省略...
完成

2. 查詢組內包含哪些軟件yum groupinfo "軟件組名"

[root@localhost yum.repos.d]# yum groupinfo "萬維網服務器"
已加載插件:fastestmirror, security
設置組進程
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.huaweicloud.com

組:萬維網服務器
 描述:容許將系統做爲 web 服務器使用,並運行 Perl 和 Python web 應用程序。
 必要的軟件包:
   httpd
 默認的軟件包:
   crypto-utils
   httpd-manual
   mod_perl
   mod_ssl
   mod_wsgi
   webalizer
 可選的軟件包:
   certmonger
   libmemcached
   memcached
   mod_auth_kerb
   ...省略...

注意:使用本地終端查出的組名都是英文的,命令中的軟件組名也須要使用英文;遠程終端(如Xshell)若是支持中文,查出的軟件組名是中文的,因此命令中的軟件組名既可使用中文,也可使用英文,yum groupinfo "萬維網服務器"yum groupinfo "Web Server" 是等效的

3. 安裝軟件組內全部軟件yum groupinstall "軟件組名"
4. 卸載軟件組內多有軟件yum groupremove "軟件組名"

4 DPKG 管理軟件包

DPKG 軟件包的命名規則爲軟件包名_版本號-修訂號_平臺.deb
例如:openssh-server_8.2p1-4_amd64.deb

4.1 DPKG 命令

DPKG 包的管理工具是 dpkg 命令,命令格式:dpkg 選項 [軟件包名]

  • 選項(在下面對應的場景會具體說明)
  • 軟件包名:指定要操作的dpkg軟件包。若是操做的是未安裝過的軟件包,要使用包全名,並且要注意絕對路徑;若是操做的是已安裝過的軟件包,能夠在任意目錄下直接使用包名,由於和RPM相似,DPKG包管理也存在文件數據庫來維護已安裝的軟件信息, 若是軟件安裝完畢,該軟件的相關信息會被寫入/var/lib/dpkg/目錄下的數據庫文件中,通常"/var/lib/dpkg/status" 文件中存儲軟件狀態和控制信息,"/var/lib/dpkg/info/xxx.list"文件中記錄了軟件安裝文件清單

4.2 DPKG 安裝

安裝命令:dpkg -i 包全名

  • 選項

    • -i:安裝
    • --unpack:解開軟件包
    • --configure:配置軟件包
-i 選項所作操做包含解開軟件包和配置軟件包,至關於這兩步操做:
dpkg --unpack 包全名
dpkg --configure 包名

4.3 DPKG 卸載

卸載命令:dpkg -r|-P 包名

  • 選項

    • -r:刪除已安裝的軟件包,但保留配置文件
    • -P:刪除已安裝軟件包,徹底清除包(含配置文件)

4.4 DPKG 查詢

1. 查詢已安裝軟件包列表,命令:dpkg -l [包名]

  • 選項

    • -l:查詢已安裝軟件包列表,包含狀態、版本信息
    • 包名:查詢指定的軟件包,若是省略查詢所有已安裝軟件包。包名可以使用通配符

示例:
image.png
圖中,第一列表示軟件包狀態標識,狀態標識共三位字符表示,
第一位,指望狀態:
u(Unknown): 狀態未知,這意味着軟件包未安裝,而且用戶也未發出安裝請求
i(Install): 用戶請求安裝軟件包
r(Remove): 用戶請求卸載軟件包
p(Purge): 用戶請求清除軟件包
h(Hold): 用戶請求保持軟件包版本鎖定

第二位,當前狀態:
n(Not):軟件包未安裝
i(Inst):軟件包安裝並完成配置
c(Conf-files):軟件包之前安裝過,如今刪除了,可是它的配置文件還留在系統中
U(Unpacked):軟件包僅被解包,還未配置
F(halF-conf):試圖配置軟件包,可是失敗了
H(Half-inst):軟件包安裝,可是可是沒有成功
W(trig-aWait):觸發器等待
T(Trig-pend):觸發器未決

第三位,錯誤狀態:
h:軟件包被強制保持,由於有其它軟件包依賴需求,沒法升級
R:Reinst-required,軟件包被破壞,可能須要從新安裝才能正常使用(包括刪除)
x:軟包件被破壞,而且被強制保持

2. 列出軟件包關聯文件,命令:dpkg -L 包名dpkg -L 包全名

  • 選項

    • -L:列出已安裝軟件包關聯文件列表
    • -c:列出未安裝軟件包關聯文件列表

也能夠經過該命令查看軟件包文件安裝目錄位置

3. 顯示軟件包的詳細狀態,命令:dpkg -s 包名

  • 選項

    • -s--status:顯示軟件包的詳細狀態

4. 搜索含有指定文件的軟件包,命令:dpkg -S 文件名

  • 選項

    • -S--search:搜索含有指定文件的軟件包。文件名可以使用通配符

示例:

taicw@taicw-PC:~/Downloads$ dpkg -S apache2.conf
apache2: /etc/apache2/apache2.conf

5 APT 管理軟件包

5.1 APT 源文件介紹

APTYUM 相似,都是從遠程軟件倉庫獲取軟件包進行安裝。其中相關文件說明以下:
/etc/apt/sources.list:記錄了軟件源的地址
var/lib/dpkg/available:文件的內容是軟件包的描述信息,該文件包括當前系統所使用的安裝源中的全部軟件包,其中包括當前系統中已安裝的和未安裝的軟件包信息
/var/lib/apt/lists/:使用 "apt-get update" 命令掃會描軟件源服務器,併爲源服務器全部軟件資源創建索引文件保存至本地目錄"/var/lib/apt/lists/"下,提升系統查詢效率
/var/cache/apt/archives/:經過 "apt-get" 安裝下載的軟件包都緩存在這裏。

5.2 APT 命令

APT 管理軟件包,主要由如下幾個命令組成:
apt-get:主要用來安裝、升級和卸載軟件,智能解決依賴關係(新版可用 apt 命令代替,去掉了"-get")
apt-cache:查詢軟件包緩存文件
apt-file:軟件包查找工具,能夠查到軟件包所含的文件和安裝的位置

5.3 刷新源

命令:apt-get update
該命令掃描源服務器,更新軟件包列表。最好按期運行這一命令以確保軟件包列表是最新的,或者在安裝和升級軟件以前執行該命令

5.4 APT 安裝

安裝命令:apt-get install 包名

5.5 APT 升級

升級命令:

  • apt-get upgrade

    • 更新全部已安裝軟件。只是簡單的更新包,無論這些依賴,它不能添加新的軟件包,或是刪除軟件包,而且不更改相應軟件的配置文件
  • apt-get dist-upgrade

    • 能夠根據依賴關係的變化,添加軟件包,刪除軟件包,而且更改相應軟件的配置文件,包括升級系統版本

5.6 APT 卸載

卸載命令:

  • apt-get remove 包名

    • 刪除指定軟件,可是保留配置文件
  • apt-get --purge remove 包名

    • 刪除指定軟件,同時刪除配置文件
  • apt-get autoremove

    • 刪除系統內部不須要的依賴軟件(通常指安裝其餘軟件包時經過依賴安裝的軟件包)。該操做可能存在誤刪,無特殊需求儘可能不要執行該命令

5.7 APT 緩存清理

使用 apt-get 安裝軟件時,會自動到軟件源服務器下載須要的軟件包(xxx.deb 文件),這些文件緩存在 "/var/cache/apt/archives" 目錄下,若是不須要這些文件能夠執行以下命令將其清除,節約磁盤空間。

緩存清理命令:

  • apt-get clean

    • 刪除/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/目錄下全部".deb" 文件
  • apt-get autoclean

    • 僅刪除/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/目錄下舊版本的軟件包和無用的軟件包文件,保留已安裝軟件包的 ".deb" 文件

5.8 APT 檢查

檢查軟件包是否有損壞的依賴:apt-get check 包名

5.9 APT 查詢

apt-cache
apt-cache 能夠查詢和顯示已安裝和可安裝軟件包的可用信息,它專門工做在本地的數據緩存上,不依賴於軟件源的可用性(即離線查詢),而這些緩存能夠經過好比 apt-get update 命令來更新。若是距離上一次更新的時間過久,那麼它顯示的信息可能就會過期。經常使用命令以下:

  • apt-cache stats:顯示統計信息
  • apt-cache show 包名:以便於閱讀的格式介紹該軟件包
  • apt-cache showpkg 包名:顯示軟件包常規信息,依賴關係等
  • apt-cache policy 包名:顯示軟件包的安裝設置狀態
  • apt-cache depends 包名:顯示指定軟件包所依賴的軟件包
  • apt-cache rdepends 包名:顯示軟件包的反向依賴關係,即被哪些軟件包依賴
  • apt-cache search 字符串:根據正則表達式搜索軟件包列表

apt-file
apt-file 軟件包查找工具,能夠查找某個文件屬於哪一個軟件包。apt-file 個獨立的軟件包,使用以前須要先安裝(apt-get install apt-file)。經常使用命令以下:

  • apt-file update:更新軟件包的文件庫,第一次使用或執行apt-get update後都需執行一次
  • apt-file search 文件名:查找包含指定文件名的軟件包,包括未安裝的
  • apt-file list 包名:顯示指定軟件包的文件

6 源碼包安裝

6.1 注意事項

  • 什麼狀況下選擇源碼包安裝?
    若是軟件包是給大量客戶提供訪問的,建議源碼包安裝,由於源碼包效率更高,如LAMP環境搭建;若是軟件包是給Linux底層使用或者少許客戶訪問,建議使用rmp包安裝,由於rmp包簡單,不容易出錯
  • 源碼包從哪裏來?
    rpm 包是光盤中直接包含的或者yum源服務器提供,通常不須要單獨下載;而源碼包是經過官方網站下載的,使用時須要單獨下載。
  • 同一個軟件是否能夠用軟件包方式安裝後,同時又用源碼包再安裝一遍?
    答案是能夠的,由於兩種方式的軟件安裝位置不一樣,因此安裝時相互不會有影響,可是須要注意,兩個同時啓動時須要修改端口,不然會端口衝突。通常狀況下不會同一個軟件安裝兩邊,多裝一個只會浪費資源

6.2 安裝步驟

  1. 下載源碼包

    • 源碼包格式通常爲 xxx.tar.gzxxx.tar.bz2。linux下載工具參考:wget 與 curl 命令詳解
    • 示例: wget https://archive.apache.org/dist/httpd/httpd-2.2.15.tar.gz
  2. 解壓縮

    • 通常習慣把下載的源碼包解壓縮到 /usr/local/src/ 目錄下。解壓縮命令參考: Linux經常使用命令
    • 示例:tar -zxvf httpd-2.2.15.tar.gz -C /usr/local/src/
  3. 進入解壓目錄

    • 示例:cd /usr/local/src/httpd-2.2.15/
  4. 編譯前準備,命令./configure --prefix=安裝目錄

    • --prefix=安裝目錄:指定安裝目錄。若是不指定,默認狀況下會安裝在 /usr/local/包名/bin, /usr/local/包名/lib 等目錄下,安裝文件比較分散不利於刪除
    • configure 指令是每一個源碼包都自帶的腳本程序(即解壓目錄下一個名爲"configure"的腳本文件),非系統指令執行時必須指明路徑,即"./"代表是當前路徑下。執行該指令主要有以下做用:

      • 安裝以前檢測系統環境是否符合安裝要求
      • 定義須要的功能選項。如經過 "--prefix=安裝目錄" 指定安裝目錄,其餘更多功能選項能夠經過 "./configure --help" 來查看
      • 建立 Makefile 文件並把系統環境檢測結果和定義的功能選項寫入該文件,後續的編譯和安裝都須要依賴這個文件的內容
    • 示例:./configure --prefix=/usr/local/apache2
  5. 編譯,命令make

    • make 會調用 gcc 編譯器,並讀取 Makefile 文件中的信息進行系統軟件編譯。編譯的目的就是把源碼程序轉變爲能被 Linux 識別的可執行文件,這些可執行文件保存在當前目錄下。編譯過程較爲消耗時間,須要耐心等待
  6. 報錯清空編譯內容(非必須步驟),命令make clean

    • 若是在執行 "./configure" 或者 "make" 命令時報錯,解決報錯問題後,須要從新執行命令時必定要先執行一下 "make clean" 命令,它會清空 Makefile 文件和編譯產生的 ".o" 頭文件
  7. 安裝,命令make install

    • 這個纔是真正的安裝,通常會輸出程序的安裝位置。若是忘記指安裝目錄,則能夠把這個命令的執行過程保存下來,以備未來刪除軟件使用
注意:
1.執行 ./configure 命令時可能會提示缺乏 gcc 等依賴程序,因此須要使用 yum 等方式先安裝依賴程序便可

2.並非全部的源碼包安裝必定是執行 "./configure"、"make"、"make install" 這三個命令,只有極少數源碼包安裝命令可能有些不一樣,好比 mysql 版本 5.5 之後的源碼包安裝時,使用 "cmake" 命令替代了 "./configure"。通常源碼包解壓後都有安裝的說明文檔,安裝以前能夠先閱讀如下說明文檔

3.通常去第三方官網下載源碼包時,也會提供已經編譯好的二進制包,這種二進制包裏面包括了已經通過編譯能夠立刻運行的程序,因此解壓後直接進入 "xxx/bin/" 目錄找到相關命令直接運行便可

6.3 卸載

經過源碼包安裝時若是指定了安裝目錄,好比 "./configure --prefix=/usr/local/apache2",卸載時只須要刪除整個安裝目錄就能夠了 "rm -rf /usr/local/apache2",並且是100%卸載,不會像windows那樣常常會殘留那多註冊表之類的垃圾。

若是源碼包安裝時沒有指定安裝目錄,那麼安裝軟件生成的文件會分別存儲在 /usr/local/ 下的 bin、lib、etc 等目錄下,刪除起來就比較麻煩一點了。因此建議源碼包安裝必定要指定安裝目錄,方便卸載。

相關文章
相關標籤/搜索