Linux之软件包安装——06
一、軟件包分類
- 源碼包
- 二進(jìn)制包
(腳本安裝包)
2.1 源碼包什么樣
[root@localhost ~]# vim hello.c#include <stdio.h>int main (void){printf("hello world\n");} [root@localhost ~]# rpm -ivh /mnt/cdrom/Packages/gcc-4.4.6-4.e16.i686.rpm [root@localhost ~]# gcc -c hello.c #-c 生成“.o”頭文件。這里會(huì)生成hello.o頭文件,但是不會(huì)生成執(zhí)行文件 [root@localhost ~]# gcc -o hello hello.o #-o 生成執(zhí)行文件,并制定執(zhí)行文件名。這里生成的 hello 就是可執(zhí)行文件 [root@localhost ~]# ./hello hello world #執(zhí)行 hello 文件2.2 源碼包特點(diǎn)
源碼包的優(yōu)點(diǎn):
- 開源,如果有足夠的能力,可以修改源代碼
- 可以自由選擇所需的功能
- 軟件是編譯安裝,所以更加適合自己的系統(tǒng),更加穩(wěn)定也效率更高
- 卸載方便
源碼包的缺點(diǎn):
- 安裝過程步驟較多,尤其安裝較大的軟件集合時(shí)(如 LAMP 環(huán)境搭建),容易出現(xiàn)拼寫錯(cuò)誤
- 編譯過程時(shí)間較長,安裝比二進(jìn)制安裝時(shí)間長
- 因?yàn)槭蔷幾g安裝,安裝過程中一旦報(bào)錯(cuò)新手很難解決
3.1 二進(jìn)制包分類
- DPKG 包:是由 Debian Linux 所開發(fā)出來的包管理機(jī)制,通過 DPKG 包,Debian Linux就可以進(jìn)行軟件包管理。主要應(yīng)用在 Debian 和 unbuntu 中
- RPM 包:是由 Red Hat 公司所開發(fā)的包管理系統(tǒng)。功能強(qiáng)大,安裝、升級(jí)、查詢和卸載都非常簡單和方便。目前很多 Linux 都在使用這種包管理方式,包括 Fedora、CentOS、SuSE 等。我們學(xué)習(xí)的都是 CentOS 6.3,所以我們將要學(xué)習(xí) RPM 包管理系統(tǒng)
3.2 特點(diǎn)
RPM 包的優(yōu)點(diǎn):
- 包管理系統(tǒng)簡單,只通過幾個(gè)命令就可以實(shí)現(xiàn)包的安裝、升級(jí)、查詢和卸載
- 安裝速度比源碼包安裝快的多
RPM 包的缺點(diǎn):
- 經(jīng)過編譯,不再可以看到源代碼
- 功能選擇不如源代碼包靈活
- 依賴性。有時(shí)我們會(huì)發(fā)現(xiàn)需要安裝軟件包 a 時(shí)需要先安裝 b 和 c,而安裝 b 時(shí)需要安裝 d 和 e。這是需要先安裝 d 和 e,再安裝 b 和 c ,最后才能安裝 a 包。比如說,我買了個(gè)漂亮的燈具,打算安裝到我們家客廳,可是在安裝燈具之前我們家客廳總要有頂棚吧,頂棚總要是做好了防水和刷好油漆了吧。這個(gè)裝修和安裝軟件其實(shí)類似總要有一定的順序的。可是有時(shí)依賴性會(huì)非常繁瑣
軟件包選擇建議:
源碼包:如果服務(wù)是給大量客戶端提供訪問的,建議使用源碼包,源碼包效率更高(LAMP)
RPM包:如果程序是給少量用戶訪問,或者本地使用的,建議RPM包,因?yàn)镽PM管理方便
3.3 RPM 包依賴
1)樹形依賴 a----->b----->c
2)環(huán)形依賴 a----->b----->c----->a
3)模塊依賴
什么是模塊依賴?我們舉一個(gè)例子,嘗試安裝以下文件:
[root@localhost Packages]# rpm -ivh mysql-connector-odbc-5.2.5-7.e17.x86_64.rpm 錯(cuò)誤:依賴檢測失敗libodbc.so.2()(64bit) 被 mysql-connector-odbc-5.2.5-7.e17.x86_64.rpm 需要libodbcinst.so.2()(64bit) 被 mysql-connector-odbc-5.2.5-7.e17.x86_64.rpm 需要發(fā)現(xiàn)報(bào)錯(cuò),需要安裝“l(fā)ibodbc.so.2”函數(shù)庫文件,這時(shí)會(huì)發(fā)現(xiàn)在光盤中根本找不到這個(gè)文件。那是因?yàn)楹瘮?shù)庫沒有單獨(dú)成包,是包含在某一個(gè)軟件包中的。而如果要知道在哪個(gè)軟件包中,需要查詢網(wǎng)站 www.rpmfind.net,如圖:
二、rpm 安裝
| 2.2.15 | 軟件版本 |
| 15 | 軟件 |
| e16 | 軟件發(fā)行商,e16是RedHat 公司發(fā)布,適合 RHEL6.x(Red Hat Enterprise Linux)和 CentOS6.x下使用 |
| i686 | 適合的硬件平臺(tái)。RPM包可以在不同的硬件平臺(tái)安裝,選擇適合不同CPU的軟件版本,可以最大化的發(fā)揮CPU性能,所以出現(xiàn)了所謂的i386(386以上計(jì)算機(jī)都可以安裝)、i586(586以上的計(jì)算機(jī)都可以安裝)、i686(奔騰 II 以上計(jì)算機(jī)都可以安裝,目前所有的CPU都是奔騰II以上,所以這個(gè)軟件版本居多)、x86_64(64位CPU可以安裝)和noarch(沒有硬件限制)等文件名了 |
| rpm | rpm包的擴(kuò)展名。我們說過 Linux 下文件不是靠擴(kuò)展名區(qū)分文件類型,也就是Linux中擴(kuò)展名沒有任何含義。可是這里怎么又出現(xiàn)了擴(kuò)展名呢?原因很簡單,如果我不把RPM的擴(kuò)展名叫做“.rpm”,管理員很難知道這是一個(gè)RPM包,當(dāng)然也就無法正確安裝了。也就是說如果RPM包不用“.rpm”作為擴(kuò)展名,系統(tǒng)可以正確識(shí)別沒有問題,可是管理員很難識(shí)別這是個(gè)什么樣的軟件。 |
使用包全名和包名安裝:
包全名:如果操作的是未安裝軟件包,則使用包全名,而且需要注意絕對(duì)路徑
包名:如果操作的是已經(jīng)安裝的軟件包,則使用包名即可,系統(tǒng)會(huì)產(chǎn)生 RPM 包的數(shù)據(jù)庫(/var/lib/rpm/)
上述已講
3.1 默認(rèn)安裝位置
RPM 包默認(rèn)安裝路徑
| /usr/bin/ | 可執(zhí)行的命令安裝目錄 |
| /usr/lib/ | 程序所使用的函數(shù)庫保存位置 |
| /usr/share/doc/ | 基本的軟件使用手冊(cè)保存位置 |
| /usr/share/man/ | 幫助文件保存位置 |
3.2 RPM 包安裝
1)安裝命令
rpm -ivh 包全名 #注意一定是包全名,如果跟包全名的命令要注意路徑,因?yàn)檐浖诠獗P當(dāng)中 選項(xiàng):-i install 安裝(install)-v 顯示更詳細(xì)的信息(verbose)-h 打印#顯示安裝進(jìn)度(hash)- ——nodeps 不檢測依賴性安裝。軟件是會(huì)檢測依賴性,確定所需的底層軟件是否安裝。如果沒有安裝則會(huì)報(bào)錯(cuò)。如果我不管依賴性,想強(qiáng)行安裝,可以使用這個(gè)選項(xiàng)。注意:這樣不檢測依賴性安裝的軟件基本是不能使用的,所以不建議這樣做
- ——replacefiles 替換文件安裝。如果安裝軟件包,可是包中部分文件已經(jīng)存在,那么正常安裝時(shí)候,會(huì)報(bào)錯(cuò)“某個(gè)文件已經(jīng)存在”從而導(dǎo)致軟件無法安裝,使用這個(gè)選項(xiàng)可以忽視這個(gè)報(bào)錯(cuò),而覆蓋安裝
- ——replacepkgs 替換軟件包安裝。如果軟件包已經(jīng)安裝,此選項(xiàng)可以把軟件包重復(fù)安裝一遍
- ——force 強(qiáng)制安裝。不管是否已經(jīng)安裝,都重新安裝。就是——replacefiles 和——replacepkgs 的綜合
- ——test 測試安裝。不會(huì)實(shí)際安裝,只是檢測一下依賴性
- ——prefix 指定安裝路徑。為安裝軟件指定安裝路徑,而不是用默認(rèn)安裝路徑。注意:如果指定了安裝路徑,軟件沒有安裝到系統(tǒng)默認(rèn)路徑中的話,系統(tǒng)會(huì)找不到這些安裝的軟件,需要進(jìn)行手工配置才能被系統(tǒng)識(shí)別。所以rpm包我們一般都采用默認(rèn)路徑安裝
2)服務(wù)啟動(dòng)
[root@localhost ~]# service 服務(wù)名 strat|stop|restart|status 參數(shù):start:啟動(dòng)服務(wù)stop:停止服務(wù)restart:重啟服務(wù)status:查看服務(wù)狀態(tài) [root@localhost ~]# systemctl restart httpd #這個(gè)命令也行RPM 包安裝的 Apache:
啟動(dòng):
1)service httpd restart
2)/etc/rc.d/init.d/httpd restart/start/stop
網(wǎng)頁位置:
/var/www/html
配置文件
/etc/httpd/conf/httpd.conf
RPM 包建議安裝在默認(rèn)路徑中(作者決定的):
1)默認(rèn)安裝位置是系統(tǒng)的習(xí)慣位置
2)RPM 包管理系統(tǒng)是有卸載命令的(數(shù)據(jù)庫記錄安裝位置)
3.3 RPM 包升級(jí)
[root@localhost ~]# rpm -Uvh 包全名 選項(xiàng):-U(大寫) 升級(jí)安裝,如果沒有安裝過,系統(tǒng)直接安裝。如果安裝過的版本較舊,則升級(jí)到新版本(upgrade) [root@localhost ~]# rpm -Fvh 包全名 選項(xiàng): -F(大寫) 升級(jí)安裝,如果沒有安裝過,則不會(huì)安裝。必須安裝有較舊版本,才能升級(jí)(freshen)3.4 卸載
[root@localhost ~]# rpm -e 全名 選項(xiàng):--nodeps 不檢測依賴性-e 卸載3.5 查詢
1)查詢軟件包是否安裝
可以查詢軟件包是否安裝,命令格式如下:
2)查詢系統(tǒng)中的所有安裝軟件包
可以查詢Linux 系統(tǒng)中所有已經(jīng)安裝的軟件包,命令格式如下:
[root@localhost ~]# rpm -qa 選項(xiàng):-a:所有(all)當(dāng)然,可以用管道符來查看所需的內(nèi)容,比如:
[root@localhost ~]# rpm -qa | grep httpd你會(huì)發(fā)現(xiàn),使用“rpm -q 包名”只能查看這個(gè)包是否安裝,但是使用“rpm -qa | grep 包名”會(huì)把包含包名稱的所有包都列出來
3)查詢軟件包的詳細(xì)信息
可以查詢已經(jīng)安裝的某個(gè)軟件包的詳細(xì)信息,命令格式如下:
[root@localhost ~]# rpm -qi 包名 選項(xiàng):-i:查詢軟件信息(information)也可以查詢還沒有安裝的軟件包的詳細(xì)信息,命令格式如下:
[root@localhost ~]# rpm -qip 包全名 選項(xiàng):-p:查詢沒有安裝的軟件包(package)4)查詢軟件包中的文件列表
可以查詢已經(jīng)安裝的軟件包中的文件列表和安裝的完整目錄,命令格式如下:
[root@localhost ~]# rpm -ql 包名 選項(xiàng):-l:列出軟件包中所有的文件列表和軟件所安裝的目錄(list)那么,可以查詢還沒有安裝的軟件包中的文件列表和打算安裝的位置嗎?答案是可以,命令格式如下:
[root@localhost ~]# rpm -qlp 包全名 選項(xiàng):-p:查詢沒有安裝的軟件包信息(package)5)查詢系統(tǒng)文件屬于哪個(gè)RPM包
既然可以指導(dǎo)每個(gè)RPM包中的文件的安裝位置,那么可以查詢系統(tǒng)文件屬于哪個(gè)RPM包嗎?當(dāng)然可以,不過需要注意的是,手工建立的文件是不能查詢的,因?yàn)檫@些文件不是通過RPM包安裝的,當(dāng)然不能反向查詢它屬于哪個(gè)RPM包。命令格式如下:
[root@localhost ~]# rpm -qf 系統(tǒng)文件名 選項(xiàng):-f:查詢系統(tǒng)文件屬于哪個(gè)軟件包(file)6)查詢軟件包所依賴的軟件包
查詢系統(tǒng)中和已經(jīng)安裝的軟件包有依賴關(guān)系的軟件包,命令格式如下:
[root@localhost ~]# rpm -qR 包名 選項(xiàng):-R:查詢軟件包的依賴性(requires)可以查詢沒有安裝的軟件包的依賴性嗎?加“-p”選項(xiàng)即可。例如,查看一下還沒有安裝的bind軟件包的依賴包,可以執(zhí)行如下命令:
[root@localhost ~]# rpm -qRp /mnt/cdrom/Packages/bind-9.8.2-0.10.rcl.e16.i686.rpm3.6 驗(yàn)證
1)基本命令
[root@localhost ~]# rpm -Va 選項(xiàng):-Va 校驗(yàn)本機(jī)已經(jīng)安裝的所有軟件包[root@localhost ~]# rpm -V 已經(jīng)安裝的包名 選項(xiàng):-V 校驗(yàn)指定RPM包中的文件(verify)[root@localhost ~]# rpm -Vf 系統(tǒng)文件名 選項(xiàng):-Vf 校驗(yàn)?zāi)硞€(gè)系統(tǒng)文件是否被修改2)驗(yàn)證舉例
[root@localhost ~]# rpm -V httpd S.5....T. c /etc/httpd/conf/httpd.conf 驗(yàn)證內(nèi)容 文件類型 文件名出現(xiàn)了提示信息,我們來解釋下最前面共有8個(gè)信息內(nèi)容,是表示驗(yàn)證內(nèi)容的。文件名前面的c是表示這是個(gè)配置文件(configuration)。最后是文件名。那么驗(yàn)證內(nèi)容中的8個(gè)信息的具體內(nèi)容如下:
- S 文件大小是否改變
- M 文件的類型或文件的權(quán)限(rwx)是否被改變
- 5 文件MD5校驗(yàn)和是否改變(可以看成文件內(nèi)容是否改變)
- D 設(shè)備的主從代碼是否改變
- L 文件路徑是否改變
- U 文件的屬主(所有者)是否改變
- G 文件的屬組是否改變
- T 文件的修改時(shí)間是否改變
apache 配置文件的文件類型是c ,那么還有哪些文件類型呢? - c 配置文件(config file)
- d 普通文檔(documentation)
- g “鬼”文件(ghost file),很少見,就是該文件不應(yīng)該被這個(gè) RPM 包包含
- l 授權(quán)文件(license file)
- r 描述文件(read me)
3.7 數(shù)字證書
剛剛的校驗(yàn)方法只能對(duì)已經(jīng)安裝的RPM包中的文件進(jìn)行校驗(yàn),但是如果RPM包本身就被動(dòng)過手腳,那么校驗(yàn)就不能解決問題了。我們就必須使用數(shù)字證書驗(yàn)證了。
數(shù)字證書有如下特點(diǎn):
- 首先必須找到原廠的公鑰文件,然后進(jìn)行安裝
- 再安裝RPM包是,會(huì)去提取RPM包中的證書信息,然后和本機(jī)安裝的原廠證書進(jìn)行驗(yàn)證
- 如果驗(yàn)證通過,則允許安裝;如果驗(yàn)證不通過,則不允許安裝并警告
1)數(shù)字證書位置
那么數(shù)字證書在哪里呢?其實(shí)在CentOS 7.4的第一張光盤中就有,當(dāng)然它默認(rèn)也會(huì)放在系統(tǒng)中。
2)數(shù)字證書導(dǎo)入
[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 選項(xiàng):--import 導(dǎo)入數(shù)字證書我們?nèi)绾尾樵兿到y(tǒng)安裝好的數(shù)字證書呢?命令如下:
[root@localhost ~]# rpm -qa |grep gpg-pubkey gpg-pubkey-f4a80eb5-53a7ff4b3.8 RPM包中文件的提取
1)cpio命令
cpio命令主要有三種基本模式:“-o”模式指的是copy-out 模式,就是把數(shù)據(jù)備份到文件庫中;“-i”模式指的是copy-in模式,就是把數(shù)據(jù)從文件庫中恢復(fù);“-p”模式指的是復(fù)制模式,就是不把數(shù)據(jù)備份到cpio庫中,而是直接復(fù)制為其他文件。命令如下:
舉幾個(gè)例子,看看使用cpio備份數(shù)據(jù)的方法,命令如下:
例子:利用 find 命令找到文件,備份 [root@localhost ~]# find /etc -print | cpio -ocvB > /root/etc.cpio #利用 find 指定要備份/etc/目錄,使用>導(dǎo)出到etc.cpio 文件 [root@localhost ~]# ll -h etc.cpio -rw-r--r--. 1 root root 30M Sep 9 00:48 etc.cpio #etc.cpio 文件生效再來看看如何恢復(fù) cpio 的備份數(shù)據(jù),命令如下:
[root@localhost ~]# cpio -idvcu < /root/etc.cpio #還原etc的備份 #但是如果大家查看下當(dāng)前目錄/root,會(huì)發(fā)現(xiàn)沒有生成etc目錄。這是因?yàn)閭浞菔?etc目錄使用的是絕對(duì)路徑,所以恢復(fù)的數(shù)據(jù)直接恢復(fù)到了/etc系統(tǒng)目錄中,而沒有生成在/root/etc中在CentOS5.x的版本中,是可以利用上面的命令備份與恢復(fù)指定的文件。但是到CentOS6.x當(dāng)中,需要更加嚴(yán)謹(jǐn)。如果備份時(shí)使用絕對(duì)路徑,則恢復(fù)的數(shù)據(jù)會(huì)直接到絕對(duì)路徑指定的路徑中,如果需要把數(shù)據(jù)恢復(fù)到當(dāng)前目錄中,則需要使用相對(duì)路徑,例如:
備份: [root@localhost ~]# cd /etc #進(jìn)入/etc 目錄 [root@localhost ~]# find . -print | cpio -ocvB > /root/etc.cpio #利用 find 指定要備份/etc/目錄,使用>導(dǎo)出到etc.cpio 文件恢復(fù): [root@localhost ~]# cd /root #回到/root 目錄中 [root@localhost ~]# mkdir etc_test #建立恢復(fù)測試目錄 [root@localhost ~]# cd etc_test #進(jìn)入測試目錄,數(shù)據(jù)恢復(fù)到此 [root@localhost ~]# cpio -idvcu < /root/etc.cpio #還原/etc 目錄的數(shù)據(jù),因?yàn)閭浞輹r(shí)使用的是相對(duì)路徑,則會(huì)還原到/root/etc_test/ 目錄下最后來演示一下cpio命令的“-p”復(fù)制模式,命令如下:
[root@localhost ~]# cd /tmp/ #進(jìn)入/tmp目錄 [root@localhost ~]# rm -rf * #刪除/tmp目錄中所有數(shù)據(jù) [root@localhost ~]# mkdir test #建立備份目錄 [root@localhost ~]# find /boot/ -print | cpio -p /tmp/test #備份/boot/目錄到/tmp/test/目錄中 [root@localhost ~]# ls test/ boot #在/tmp/test/目錄中備份出了boot目錄2)提取RPM包中文件
[root@localhost ~]# rpm2cpio 包全名 | cpio -idv . 文件絕對(duì)路徑rpm2cpio <-將rpm包轉(zhuǎn)換為cpio格式的命令cpio <-是一個(gè)標(biāo)準(zhǔn)工具,它用于創(chuàng)建軟件檔案文件和從檔案文件中提取文件舉個(gè)例子,現(xiàn)在我假設(shè)把系統(tǒng)中的/bin/ls 命令不小心誤刪除了,那么我可以修復(fù)會(huì)來嗎?這時(shí)有兩中方法修復(fù),要不就是使用——force 選項(xiàng)覆蓋安裝一遍 coreutils-8.22-18.el7.x86_64包,要不就可以使用cpio 命令提取出/bin/ls 命令文件,再把它拷貝到對(duì)應(yīng)位置就可以了。不過我是怎么指導(dǎo)/bin/ls命令是屬于 coreutils-8.22-18.el7.x86_64 這個(gè)軟件包的呢?還記得-qf選項(xiàng)嗎?命令如下:
[root@localhost ~]# rpm -f /bin/ls coreutils-8.22-18.el7.x86_64 #查看ls 文件屬于哪個(gè)軟件包那么我們?cè)谥v RPM 包中文件提取,所以我們使用第二章方法,cpio 命令提取出ls 命令文件,然后拷貝到對(duì)應(yīng)位置,命令如下:
[root@localhost ~]# mv /bin/ls /root/ #/bin/ls 命令移動(dòng)到/root 目錄下,造成誤刪除的假象[root@localhost ~]# ls -bash: ls: command not found #這時(shí)執(zhí)行 ls 命令,系統(tǒng)會(huì)報(bào)錯(cuò)“命令沒有找到”[root@localhost ~]# rpm2cpio /mnt/cdrom/Packages/coreutils-8.22-18.el7.x86_64.rpm | cpio -idv ./bin/ls # 將rpm包中的ls文件提取至./bin/ls4.1 yum 源文件解析
yum 源配置文件保存在/etc/yum.repos.d 目錄中,文件的擴(kuò)展名一定是“*.repo” 。 也就是說,yum源配置文件只要擴(kuò)展名是 “*.repo”就會(huì)生效。
[root@localhost ~]# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo這個(gè)目錄中有5個(gè)yum源配置文件,默認(rèn)情況下 CentOS-Base.repo 文件生效。我們打開這個(gè)文件看看,命令如下:
[root@localhost yum.repos.d]# vim /etc/yum.repos.d/CentOS-Base.repo[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-7#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 ...省略部分輸出...在CentOS-Base.repo 文件中有5個(gè)yum元容器,這里只列出了base容器,其他容器和base容器類似。我們解釋一下base這個(gè)容器
- [base]:容器名稱,一定要放在[]中
- name:容器說明,可以自己隨便寫
- mirrorlist:鏡像站點(diǎn),這個(gè)可以注釋掉
- baseurl:我們的yum源服務(wù)器的地址。默認(rèn)是CentOS官方的yum源服務(wù)器,是可以使用的。如果你覺得慢,則可以改成你喜歡的yum原地址。
- enabled:此容器是否生效,如果不寫或?qū)懗?enabled=1 則表示此容器生效,攜程 enabled=0則表示此容器不生效
- gpgcheck:如果為1則表示RPM的數(shù)字證書生效;如果為0則表示RPM的數(shù)字證書不生效
- gpgkey:數(shù)字證書的公鑰文件保存位置。不用修改
4.2 搭建本地光盤yum源
第一步:放入CentOS安裝光盤,并掛載光盤到指定位置。命令如下:
第二步:修改其他幾個(gè)yum源配置文件的擴(kuò)展名,讓它們失效,因?yàn)橹挥袛U(kuò)展名是“*.repo”的文件才能作為yum源配置文件。當(dāng)然也可以刪除其他幾個(gè)yum原配置文件,但是如果刪除了,當(dāng)你又想用網(wǎng)絡(luò)作為yum源時(shí),就沒有了參考文件,所以最好還是修改擴(kuò)展名。命令如下:
[root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak [root@localhost yum.repos.d]# mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak [root@localhost yum.repos.d]# mv CentOS-Vault.repo CentOS-Vault.repo.bak第三步:修改光盤 yum 源配置文件 CentOS-Media.repo,參照以下方法修改:
[root@localhost yum.repos.d]# vim CentOS-Media.repo [c7-media] name=CentOS-$releasever - Media baseurl=file:///mnt/cdrom #地址為你自己的光盤掛載地址 # file:///media/cdrom/ # file:///media/cdrecorder/ gpgcheck=1 enabled=1 #把 enabled=0 改為 enabled=1,讓這個(gè)yum 源配置文件生效 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-74.3 yum 命令
1)查詢
- 查詢yum 源服務(wù)器上所有可安裝的軟件包列表
- 查詢yum源服務(wù)器中是否包含某個(gè)軟件包
- 搜索 yum 源服務(wù)器上所有和關(guān)鍵字相關(guān)的軟件包
yum search 搜索可以用于確定某個(gè)軟件在哪個(gè)相關(guān)包當(dāng)中。此例子可以確定“ifconfig”命令需要安裝“net-tools”包
- 查詢指定軟件包的信息
2)安裝
[root@localhost yum.repos.d]# yum -y install 包名 選項(xiàng):install 安裝-y 自動(dòng)回答yes。如果不加-y,那么每個(gè)安裝的軟件都需要手工回答yes 例如: [root@localhost yum.repos.d]# yum -y install gcc #使用 yum 自動(dòng)安裝 gcc3)升級(jí)
[root@localhost yum.repos.d]# yum -y update 包名 #升級(jí)指定的軟件包 選項(xiàng):update: 升級(jí)-y: 自動(dòng)回答 yes注意: 在進(jìn)行升級(jí)操作時(shí),yum源服務(wù)器中軟件包的版本要比本機(jī)安裝的軟件包的版本高
[root@localhost yum.repos.d]# yum -y update #升級(jí)本機(jī)所有軟件包這條命令會(huì)升級(jí)系統(tǒng)中所有的軟件包。不過我們的生產(chǎn)服務(wù)器是穩(wěn)定優(yōu)先的,所以這種全系統(tǒng)升級(jí)的情況并不多見
4)卸載
再次強(qiáng)調(diào)一下,除非你確定卸載的軟件的依賴包不會(huì)對(duì)系統(tǒng)產(chǎn)生影響,否則不要執(zhí)行 yum 的卸載,因?yàn)楹苡锌赡茉谛遁d軟件包的同時(shí)卸載的依賴包也是重要的系統(tǒng)文件,這就有可能導(dǎo)致系統(tǒng)奔潰。卸載命令如下:
[root@localhost yum.repos.d]# yum remove 包名 #卸載指定的軟件包 例如: [root@localhost yum.repos.d]# yum remove samba #卸載 samba 軟件包4.4 yum組管理命令
- 查詢可以安裝的軟件組
- 查詢軟件組內(nèi)包含的軟件
- 安裝軟件組
- 卸載軟件組
三、源碼包安裝
1.1 應(yīng)該選擇哪種軟件包
- 如果軟件包是給大量客戶提供訪問,建議使用源碼包安裝,如LAMP環(huán)境搭建,因?yàn)樵创a包效率更高
- 如果軟件包是給Linux底層使用,或只給少量客戶訪問,建議使用rpm包安裝,因?yàn)閞pm包簡單
1.2 源碼包是從哪里來的
rpm包是光盤中直接包含的,所以不需要用戶單獨(dú)下載。而源碼包是通過官方網(wǎng)站下載的,如果需要使用,是需要單獨(dú)下載的
1.3 是否可以在系統(tǒng)中即安裝rpm包的Apache,又安裝源碼包的Apache?
答案是可以,因?yàn)閮煞N安裝方法安裝的Apache,安裝位置是不一樣的,例如:
1.4 生產(chǎn)服務(wù)器上,是否會(huì)同時(shí)安裝兩種Apache?
當(dāng)然不會(huì)啊,因?yàn)橄到y(tǒng)中只有一個(gè)80端口,所以你只能啟動(dòng)一個(gè)Apache,裝多個(gè)只能浪費(fèi)資源。我們建議安裝源碼包的Apache
安裝過程
我們來解釋一下源碼包安裝的具體步驟
(1)下載軟件包
(2)解壓縮
(3)進(jìn)入解壓目錄
(4)./configure 編譯前準(zhǔn)備
需要注意的是,configure 不是系統(tǒng)命令,而是源碼包軟件自帶的一個(gè)腳本程序,所以必須采用“./configure”方式執(zhí)行(“./”代表在當(dāng)前目錄下)
源碼包報(bào)錯(cuò):
1)安裝過程必須停止
2)是否出現(xiàn) no、warning、error關(guān)鍵字
(5)make 編譯
make 會(huì)調(diào)用 gcc 編譯器,并讀取 Makefile 文件中的信息進(jìn)行系統(tǒng)軟件編譯。編譯的目的就是把源碼程序轉(zhuǎn)變?yōu)槟鼙籐inux 識(shí)別的可執(zhí)行文件,這些可執(zhí)行文件保存在當(dāng)前目錄下。編譯過程較為耗時(shí),需要有足夠的耐心
(6)make clean:清空編譯內(nèi)容(非必需步驟)
如果在“./configure”或“make”編譯中報(bào)錯(cuò),那么我們?cè)谥匦聢?zhí)行命令前一定要記得執(zhí)行 make clean 命令,它會(huì)清空 Makefile 文件或編譯產(chǎn)生的“.o”頭文件
(7)make install: 編譯安裝
這才是真正的安裝過程,一般會(huì)寫清楚程序的安裝位置。如果忘記指定安裝目錄,則可以把這個(gè)命令的執(zhí)行過程保存下來,以備將來刪除使用
刪除
源碼包沒有刪除命令,如果需要?jiǎng)h除,直接刪除安裝目錄即可
4.1 補(bǔ)丁的生成
[root@localhost ~]# diff 選項(xiàng) old new #比較 old 和 new 文件的不同 選項(xiàng):-a 將任何文檔當(dāng)做文本文檔處理-b 忽略空格造成的不同-B 忽略空白行造成的不同-I 忽略大小寫造成的不同-N 當(dāng)比較兩個(gè)目錄時(shí),如果某個(gè)文件只在一個(gè)目錄中,則在另一個(gè)目錄中視作空文件-r 當(dāng)比較目錄時(shí),遞歸比較子目錄-u 使用同一的輸出格式舉例
[root@localhost ~]# mkdir test #建立測試目錄 [root@localhost ~]# cd test #進(jìn)入測試目錄 [root@localhost test]# vi old.txt our school is atguigu #文件 old.txt,為了一會(huì)輸出便于比較,每行分開 [root@localhost test]# vi new.txt our school is atguigu in Beijing #文件 new.txt比較下兩個(gè)文件的不同,并生成補(bǔ)丁文件“txt.path”,命令如下:
[root@localhost test]# diff -Naur /root/test/old.test /root/test/new.txt > txt.patch #比較兩個(gè)文件的不同,同時(shí)生成txt.patch補(bǔ)丁文件[root@localhost test]# vi txt.patch #查看下這個(gè)文件 --- /root/test/old.txt 2020-09-10 08:01:23.546407573 -0700 #前一個(gè)文件 +++ /root/test/new.txt 2020-09-10 08:02:13.140552831 -0700 #后一個(gè)文件 @@ -6,3 +6,4 @@gwef+1111111111111111 #后一個(gè)文件比前一個(gè)文件多兩行(+表示)4.2 打入補(bǔ)丁
[root@localhost test]# patch -pn < 補(bǔ)丁文件 #按照補(bǔ)丁文件進(jìn)行更新 選項(xiàng):-pn n為數(shù)字。代表按照補(bǔ)丁文件中的路徑,指定更新文件的位置“-pn” 不好理解,我們說明下。補(bǔ)丁文件時(shí)要打入舊文件的,但是你當(dāng)前所在的目錄和補(bǔ)丁文件中的記錄的目錄不一定匹配的,所以就需要“-pn”來同步兩個(gè)目錄。
比如我當(dāng)前是在“/root/test”目錄中(我要打補(bǔ)丁的舊文件就在當(dāng)前目錄下),補(bǔ)丁文件中記錄的文件目錄為“/root/test/old.txt”,這時(shí)如果寫入“-p1”(在補(bǔ)丁文件目錄中取消一級(jí)目錄)那么補(bǔ)丁文件就會(huì)打入“/root/test/root/test/old.txt”文件中,這顯然不對(duì)的。那如果寫入的是“-p2”(在補(bǔ)丁文件目錄中取消二級(jí)目錄)那么補(bǔ)丁文件打入的就是“/root/test/test/old.txt”,這顯然也不對(duì)。如果寫入“-p3”(在補(bǔ)丁文件目錄中取消三級(jí)目錄)那么補(bǔ)丁文件就是打入的“/root/test/old.txt”,我們的old.txt文件就在這個(gè)目錄下,所以就應(yīng)該是“-p3”。
那我們更新下“old.txt”文件,命令如下:
四、腳本安裝程序
腳本程序包并不多見,所以在軟件包分類中并沒有把它列為一類。它更加類似于Windows下的程序安裝,有一個(gè)可執(zhí)行的安裝程序,只要運(yùn)行安裝程序,然后進(jìn)行簡單的功能指定選擇(比如指定安裝目錄),就可以安裝成功,只不過是在字符界面下完成的。
目前常見的腳本程序以各類硬件的驅(qū)動(dòng)居多,我們需要學(xué)習(xí)一下這類軟件的安裝方式,以備將來不時(shí)之需
2.1 簡介
我們來看看腳本程序如何安裝和使用。安裝一個(gè)叫作 Webmin 的工具軟件, Webmin 是一個(gè)基于 Web 的系統(tǒng)管理界面。借助任何支持表格和表單的瀏覽器(和 File Manager 模塊所需要的 Java),你就可以設(shè)置用戶賬號(hào)、apache、DNS、文件共享等。Webmin 包括一個(gè)簡單的 Web 服務(wù)器和許多 CGI 程序,這些程序可以直接修改系統(tǒng)文件,比如/etc/inetd.conf 和 /etc/passwd。Web服務(wù)器和所有的CGI程序都是用 Perl 5編寫的,沒有使用任何非標(biāo)準(zhǔn) Perl 模塊。也就是說,Webmin 是一個(gè)用 Perl 語言寫的、可以通過瀏覽器管理Linux的軟件
2.2 安裝步驟
首先下載 Webmin 軟件,地址為 http://sourceforge.net/projects/webadmin/files/webmin/,這里下載的是 webmin-1.610.tar.gz
接下來解壓縮軟件,命令如下:
進(jìn)入解壓目錄,命令如下:
[root@localhost ~]# cd webmin-1.610執(zhí)行安裝程序 setup.sh,并指定功能選項(xiàng),命令如下:
[root@localhost webmin-1.610]# ./setup.sh *********************************************************************** * Welcome to the Usermin setup script, version 1.510 * *********************************************************************** Usermin is a web-based interface that allows Unix-like operating systems and common Unix services to be easily administered.Installing Usermin in /root/usermin-webmail-1.510 ...*********************************************************************** Usermin uses separate directories for configuration files and log files. Unless you want to run multiple versions of Usermin at the same time you can just accept the defaults.Config file directory [/etc/usermin]: #選擇安裝位置,默認(rèn)安裝在/etc/usermin 目錄下。如果安裝到默認(rèn)位置,則直接回車 Log file directory [/var/usermin]: #日志文件保存位置,直接回車,選擇默認(rèn)位置*********************************************************************** Usermin is written entirely in Perl. Please enter the full path to the Perl 5 interpreter on your system.Full path to perl (default /usr/bin/perl): #指定Perl語言的安裝位置,直接回車,選擇默認(rèn)位置,Perl默認(rèn)就安裝在這里 Testing Perl ... Perl seems to be installed ok*********************************************************************** Operating system name: CentOS Linux Operating system version: 7.4.1708*********************************************************************** Usermin uses its own password protected web server to provide access to the administration programs. The setup script needs to know :- What port to run the web server on. There must not be anotherweb server already using this port.- If the webserver should use SSL (if your system supports it).Web server port (default 20000): #指定Webmin監(jiān)聽的端口,直接回車,默認(rèn)選定20000 Login name (default admin):admin #輸入登錄webmin的用戶名 Login password: Password again: #輸入登錄密碼 The Perl SSLeay library is not installed. SSL not available. #apache默認(rèn)沒有啟動(dòng)SSL功能,所以SSL沒有被激活 *********************************************************************** Creating web server config files.. ..doneCreating access control file.. ..doneInserting path to perl into scripts.. ..doneCreating start and stop scripts.. ..doneCopying config files.. at changepass chfn commands cron cshrc fetchmail file filter forward gnupg htaccess-htpasswd htaccess language mailbox mailcap man mysql plan postgresql proc procmail quota schedule shell spam ssh telnet theme tunnel updown usermount ..doneCreating uninstall script /etc/usermin/uninstall.sh .. ..doneChanging ownership and permissions .. ..doneAttempting to start Usermin mini web server.. Starting Usermin server in /root/usermin-webmail-1.510 Pre-loaded WebminCore ..done*********************************************************************** Usermin has been installed and started successfully. Use your web browser to go tohttp://localhost.localdomain:20000/and login as any Unix user on your system.總結(jié)
以上是生活随笔為你收集整理的Linux之软件包安装——06的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 九大数据分析方法-单指标分析方法与多指标
- 下一篇: Luat Inside | 多功能YAP