2.5 軟件管理
2.5.1 Linux常用軟件包類型
目前比較流行的軟件包格式有:可直接執行的RPM與DEB、源代碼形式的gzip與bzip2壓縮包。
2.5.2 RPM軟件包管理
RPM是RedHat Package Manager的簡寫,即紅帽軟件包工具。RPM格式的軟件包最早在1997年被用在紅帽的操作系統上,RPM設計的思路是提供一種可升級、具有強大查詢功能、支持安全驗證的通用型Linux軟件包管理工具。現在RPM軟件包已經被應用到很多GNU/Linux發行版本中,包括Red Hat Enterprise Linux、Fedora、Novell SUSE Linux Enterprise、openSUSE、Centos、Mandriva Linux等。Centos 6.3光盤中的所有軟件包均採用RPM格式。
1. 安裝與卸載RPM包
對於RPM軟件包的安裝,我們可以使用<rpm -i 軟件包名稱>這樣的方式進行安裝,但該命令默認選項爲靜默安裝,如果需要了解安裝過程信息,則需要使用-v來顯示詳細的信息,-h顯示安裝進度。
[root@instructor Packages]# rpm -ivh bind-9.8.2-0.10.rc1.el6.x86_64.rpm Preparing... ########################################### [100%] 1:bind ########################################### [100%]
對於RPM格式軟件包的卸載,可以使用<rpm -e 軟件包名稱>這樣的格式完成。
[root@instructor Packages]# rpm -e ftp卸載,具體版本號可以不寫
RPM還提供了升級功能,使用<rpm -U 軟件名稱>這種方式,rpm會刪除舊版本軟件(僅保留配置文件),再安裝新的軟件版本。
2. 軟件包信息查詢
RPM命令工具提供了強大的軟件的軟件查詢功能,使用<rpm -q>這樣的格式可以進行大量的查詢工作,查詢時可以使用很多選項,具體描述如下。
-q查詢指定軟件包是否已經安裝,如果已經安裝則顯示詳細名稱,否則顯示package xxx is not installed
-qa查詢系統中已經安裝的所有軟件
-qi查詢指定安裝軟件包的詳細信息
-ql查詢指定軟件的安裝路徑與文件列表
-qc查詢指定軟件的配置文件
-qf查詢指定文件爲哪個軟件所安裝
使用rpm -q格式進行的查詢僅針對已經安裝的軟件,如果希望知道某個尚未安裝的軟件包的詳細信息,則可以使用rpm -qp進行查詢,如rpm -qpi ftp-0.17-51.1.el6.x86_64
3. 安裝驗證
RPM提供的驗證功能可以隨時追蹤軟件的狀態,當軟件被嗯篡改時,使用rpm -V命令就會提示該軟件的哪些狀態被修改,未篡改的軟件使用該命令將無任何提示。
[root@instructor Packages]# rpm -V dhcp S.5....T. c /etc/dhcp/dhcpd.conf .....UG.. c /var/lib/dhcpd/dhcpd.leases
S file Size differs文件大小已經改變
M Mode differs (includes permissions and file type)包括權限與類型在內的模式已經改變
5 digest (formerly MD5 sum) differsMD5值已經改變
D Device major/minor number mismatch設備改變
L readLink(2) path mismatch鏈接文件的源已經改變
U User ownership differs用戶發生改變
G Group ownership differs組發生改變
T mTime differs文件最後修改時間已經改變
P caPabilities differ功能發生改變
?不可讀的文件
2.5.3 使用YUM安裝軟件包
YUM是Yellow dog Update Modified的簡寫。YUM是改進版的RPM軟件管理器,YUM很好地解決了RPM所面臨的軟件包依賴問題,大量的軟件依賴會讓RPM成爲惡魔。YUM可以從很多源中搜索軟件以及它們的依賴包,並自動安裝相應的依賴軟件。使用YUM安裝軟件時至少需要一個YUM源,YUM源就是存放有很多RPM軟件的文件夾,用戶可以使用HTTP、FTP或本地文件夾的方式訪問YUM源。
1. 設置YUM源
Centos 6.3默認的YUM源定義文件存放在/etc/yum.repos.d/目錄下,用戶可以自行定義任意可以使用的YUM源,但文件名的擴展名必須是repo,其文件格式如表2-7所示。
表2-7
選項 | 功能描述 |
[ ] | [ ]中填寫YUM源唯一的ID,可以爲任意字符串 |
name | 指定YUM源名稱,可以爲任意字符串 |
baseurl | 指定YUM源的URL地址(可以是HTTP、FTP或本地路徑) |
mirrorlist | 指定鏡像站點目錄 |
enabled | 是否激活該YUM源(0代表禁用,1代表激活,默認爲激活) |
gpgcheck | 安裝軟件時是否檢查簽名(0代表禁用,1代表激活) |
gpgkey | 檢查簽名的密鑰文件 |
[root@instructor ~]# vim /etc/yum.repos.d/CentOS-Base.repo [1] name=CentOS-$releasever - Base1 #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os baseurl=file:///123 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 gpgcheck=0
2. YUM命令
描述:交互式,基於RPM的包管理工具
用法:yum [選項] [指令] [軟件包...]
選項:-y執行非交互式安裝,假定安裝過程中出現的所有回答爲yes
指令:
* install package1 [package2] [...]使用YUM源安裝軟件包
* update [package1] [package2] [...]使用YUM源升級軟件包
* check-update檢查YUM源中所有可用的升級
* remove | erase package1 [package2] [...]卸載軟件包
* list [...]列出系統中已經安裝的以及yum源中所有可用的軟件包
* info [...]查看軟件包信息
* clean all清空所有的緩存信息
* groupinstall group1 [group2] [...]使用YUM源安裝組包
* grouplist 列出系統中已經安裝的以及yum源中所有可用的組包
* groupremove group1 [group2] [...]卸載組包
* search string1 [string2] [...]根據關鍵詞查找軟件
* localinstall rpmfile1 [rpmfile2] [...]通過本地rpm文件安裝軟件
* history查看歷史記錄
2.5.4 YUM使用技巧
1. 創建YUM源
首先,需要安裝createrepo
其次,將所有的軟件包保存在某個目錄下,如/mysoft/
最後,運行createrepo /mysoft即可。
2. YUM變量
有時你會在一個yum文件中看到類似$basearch這樣的變量,以下給出了可以使用或參考的yum命令和yum配置文件內置的變量說明。
$releasever代表系統發行版本號
$archCPU架構
$basearch系統架構
$YUM-09使用shell對應的0~9個同名變量替換
2.5.5 源碼編譯安裝軟件
(1)我們所獲得的軟件源碼一般都會被打包並壓縮,常見的格式有.tar.gz或.tar.bz2格式。
(2)運行configure腳本,通過特定的選項修改軟件設置與功能,該腳本一般可以用來指定安裝路徑、開啓關閉軟件的特定功能等。腳本選項可以通過閱讀安裝說明或./configure --help查看軟件支持的功能選項。而有些軟件沒有提供configure腳本,則可以直接執行make編譯步驟。
(3)運行make命令將軟件源代碼編譯爲計算機可以直接識別的機器語言。由於需要相應的編譯軟件纔可以將源代碼編譯爲機器語言,所以在執行configure腳本時就會檢查對應的開發工具是否已安裝,常用的開發工具有:gcc、python、perl、make、automake等,如果沒有安裝,則會提示error錯誤。
(4)通過make install根據配置階段指定的路徑和功能將軟件以特定的方式安裝到指定的位置。
接下來從網絡上下載Apache軟件作爲演示案例。Apache是當今最流行的Web服務器軟件,由於Apache需要依賴APR庫等軟件,所以我們連同相關依賴包一起安裝。
[root@instructor httpd-2.2.27]# yum -y install gcc pcre pcre-devel libtool [root@instructor ~]# wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.27.tar.bz2 [root@instructor ~]# tar -xjf httpd-2.2.27.tar.bz2 -C /usr/src/ [root@instructor ~]# wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.5.3.tar.gz [root@instructor ~]# wget http://mirror.bit.edu.cn/apache/apr/apr-1.5.1.tar.gz [root@instructor ~]# tar -xzf apr-1.5.1.tar.gz -C /usr/src/ [root@instructor ~]# tar -xzf apr-util-1.5.3.tar.gz -C /usr/src/ [root@instructor ~]# cd /usr/src/apr-1.5.1/ [root@instructor apr-1.5.1]# ./configure && make && make install [root@instructor ~]# cd /usr/src/apr-util-1.5.3/ [root@instructor apr-util-1.5.3]# ./configure --with-apr=/usr/src/apr-1.5.1/ [root@instructor apr-util-1.5.3]# make && make install [root@instructor ~]# cd /usr/src/httpd-2.2.27/ [root@instructor httpd-2.2.27]# ./configure && make && make install [root@instructor httpd-2.2.27]# /usr/local/apache2/bin/apachectl start開啓Web服務
Configure的具體選項可以通過./configure --help瞭解詳情。
2.5.6 常見問題分析
1. 軟件包依賴問題
使用--nodeps選項忽略依賴關係
2. RPM數據庫損壞
RPM軟件包的相關數據庫存放在/var/lib/rpm/目錄下,如果數據庫出現損壞,可以用rpm --rebuilddb修復數據庫資料
3. 軟件安裝的時間問題
在安裝軟件時,系統有時會提示“warning:clock skew detected.”錯誤,這說明系統時間發生了嚴重的錯誤,可以通過date -s “2014-08-14 16:18:04”這種命令格式修改系統時間,並通過命令hwclock -w更新寫入CMOS時間。
4. YUM繁忙問題
當我們使用yum進行安裝、查詢時,系統有時會提示如下信息:
[root@instructor Desktop]# yum -y install ftp lftp Loaded plugins: fastestmirror, refresh-packagekit, security Existing lock /var/run/yum.pid: another copy is running as pid 30558. Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum Memory : 42 M RSS (336 MB VSZ) Started: Thu Aug 14 16:29:09 2014 - 00:04 ago State : Running, pid: 30558
該提示說明有另外一個程序在使用YUM而導致YUM被鎖。可以使用kill命令殺死提示信息中的pid號。
2.5.7 服務管理
1. 通過主程序管理服務
絕大多數通過源碼安裝的軟件都需要我們手動指定路徑啓動服務。
2. 通過service管理服務
如果是通過RPM或者YUM安裝,則應用程序一般會在/etc/init.d/目錄下創建對應的啓動腳本,我們可以通過系統提供的service命令來管理這些服務。
[root@instructor ~]# service sshd start開啓服務 [root@instructor ~]# service sshd stop關閉服務 [root@instructor ~]# service sshd status查看服務當前狀態 [root@instructor ~]# service sshd reload不關閉服務使新的配置生效 [root@instructor ~]# service sshd condrestart測試新的設置是否正確,沒問題纔會重啓,否則不會使用新的配置來重啓服務
3. 開機啓動服務
Linux操作系統正常情況下可以在六種模式(4暫時未使用)下啓動並分別用數字表示:0代表關機、1代表單用戶模式、2代表無NFS網絡的字符界面模式、3代表全功能的字符界面模式、4暫時未定義使用、5代表圖形模式、6代表重啓模式。在系統中,通過runlevel命令查看當前所處的運行級別,也可以通過init n來改變當前的運行級別。
chkconfig
描述:更新與查詢系統服務的運行級別信息
用法:chkconfig [服務名稱] [on|off]
指令:--list查詢系統服務運行級別信息
--level指定操作的運行級別,不指定級別默認爲2345級別
[root@instructor ~]# chkconfig --list sshd查看sshd服務所有的運行級別信息 [root@instructor ~]# chkconfig --list 查看所有系統服務的運行級別信息 [root@instructor ~]# chkconfig --level 15 sshd on設置在15級別開機啓動 [root@instructor ~]# chkconfig sshd on設置在2345級別開機啓動