6 软件的安装
6 軟件包管理
6.1 簡(jiǎn)介
軟件包分類:
源碼包 源代碼(大多數(shù)是C語(yǔ)言) 安裝時(shí)慢,容易報(bào)錯(cuò)
? ? >腳本安裝包 對(duì)源碼包進(jìn)行改裝,使安裝更簡(jiǎn)單,不多。
rpm包 ?二進(jìn)制包 Ubuntu系列的二進(jìn)制包不是rpm,這是根本不同
?
源碼包優(yōu)點(diǎn):
開(kāi)源,如果有足夠的能力,可以修改源代碼
可以自由選擇所需的功能
軟件是編譯安裝,所以更加適合自己的系統(tǒng),更加穩(wěn)定也效率更高(比rpm高5%)
卸載方便(直接把安裝目錄刪掉)
?
源碼包缺點(diǎn):
安裝過(guò)程步驟較多,尤其安裝較大的軟件集合(如LAMP環(huán)境搭建),容易出現(xiàn)拼寫(xiě)錯(cuò)誤
編譯過(guò)程時(shí)間較長(zhǎng),安裝比二進(jìn)制安裝時(shí)間長(zhǎng)
因?yàn)槭蔷幾g安裝,安裝過(guò)程中一旦報(bào)錯(cuò)新手很難解決
用源碼包安裝一個(gè)Linux大概用3天(老手)
?
?
二進(jìn)制包優(yōu)點(diǎn):
包管理系統(tǒng)簡(jiǎn)單,只通過(guò)幾個(gè)命令就可以實(shí)現(xiàn)包的安裝、升級(jí)、查詢、卸載
安裝速度比源碼包安裝快得多
?
二進(jìn)制包缺點(diǎn):
經(jīng)過(guò)編譯,不再可以看到源代碼
功能選擇不如源碼包靈活
依賴性
?
6.2 包命名與依賴性
httpd-2.2.15-15.e16.centos.1.i686.rmp
httpd 包名
2.2.15 版本
15 發(fā)布次數(shù)
e16.centos 適合的Linux平臺(tái)
i686 適合的硬件平臺(tái) ?noarch 表示任何Linux版本都可以安裝
rpm rpm包擴(kuò)展名
包全名:操作的包是沒(méi)有安裝的軟件包時(shí),使用包全名。而且要注意路徑。安裝、升級(jí)操作
包名:操作已經(jīng)安裝的軟件包時(shí),使用包名。是搜索/var/lib/rpm/中的數(shù)據(jù)庫(kù)。查詢、卸載操作
?
樹(shù)形依賴 a -> b -> c
環(huán)形依賴 a -> b -> c -> a ?解決辦法:a b c 同時(shí)安裝
?
RPM包庫(kù)依賴 ?以?.so.2?結(jié)尾,不是獨(dú)立的,是某個(gè)軟件包中的文件
模塊依賴 查詢網(wǎng)站 www.rpmfind.net,輸入xxx.so.2可以查看屬于哪個(gè)包。
只要把包含此文件的軟件安裝上即可。
6.3 安裝與升級(jí)
安裝
rpm -ivh 包全名
-i ?install
-v ?verbose
-h ?hash ?顯示
實(shí)驗(yàn)步驟:
1、先將光盤(pán)掛載:mount -t iso9660 /dev/sr0 /media
2、cd /media/Packages
3、此時(shí)就可用 ?rpm -ivh 包全名 命令進(jìn)行安裝了
?
升級(jí)
rpm -Uvh 包全名
-U upgrade 升級(jí)
?
卸載
rmp -e 包名
-e erase 卸載
????--nodeps 不檢查依賴性
?
6.4 查詢
查詢功能非常常用
?
查詢是否安裝
rpm -q 包名
rpm -qa
-q query 查詢
???? -a all 所有
rpm -qa| grep httpd ??此命令查詢所有和httpd相關(guān)的包安裝信息 ???|管道符
?
查詢軟件包詳細(xì)信息
rpm -qi 包名 #查詢已安裝的包信息
rpm -qip 包全名 #查詢未安裝包的信息,這些信息已經(jīng)在包中寫(xiě)好
-i information?查詢軟件信息
???? -p package?查詢未安裝包信息
?
查詢包中文件安裝位置 包的安裝位置都是默認(rèn)的
rpm -ql 包名
rpm -qlp 包全名 查詢未安裝包打算的位置,已在包中設(shè)置好
-l list?列表
?
查詢系統(tǒng)文件屬于哪個(gè)RPM包
rpm -qf 系統(tǒng)文件名
-f file?查詢系統(tǒng)文件屬于哪個(gè)軟件包 ?????etc目錄下都是系統(tǒng)的配置文件
查詢軟件包的依賴性
rpm -qR 包名
rpm -qRp 包全名 查詢未安裝包的依賴性
-R requires?查詢軟件包的依賴性
?
6.5 校驗(yàn)
RPM包校驗(yàn) 判斷系統(tǒng)文件是否被更改
?
rpm -V 已安裝包名
-V verify 校驗(yàn)指定RPM包中的文件
?
例:rpm -V httpd
如果出現(xiàn)任何信息,則表示沒(méi)有任何修改。
如果有修改,會(huì)顯示“修改標(biāo)志位 文件名”
?
修改標(biāo)志位有8位信息 ? 點(diǎn)(.)代表未被修改
S 文件大小是否修改
M 文件類型 或者 文件權(quán)限(rwx)是否修改
5 文件MD5校驗(yàn)(文件內(nèi)容是否修改) MD5 -- 一種加密方式
D 設(shè)備中,從代碼是否改變
L 文件路徑是否修改
U 文件所有者是否修改
G 文件所屬組是否修改
T 文件修改時(shí)間是否修改
?
文件類型(對(duì)應(yīng)上面的M)
c config file 配置文件
d documentation 普通文檔
g ghost file 鬼文件 很少見(jiàn) 就是該文件不應(yīng)該被這個(gè)RPM包包含
l license file 授權(quán)文件
r read me 描述文件
?
6.6 文件提取
目的:從rpm包中提取指定文件,用于恢復(fù)某些文件。
?
rpm2cpio 包全名 | cpio -idv . 文件絕對(duì)路徑
#rpm2cpio命令可將rpm包轉(zhuǎn)換為cpio處理格式
#cpio 是一個(gè)標(biāo)準(zhǔn)工具,用于創(chuàng)建軟件檔案文件和從檔案文件中提取文件
?
cpio 選項(xiàng) < [文件|設(shè)備]
-i copy-in模式,還原
-d 還原時(shí)自動(dòng)新建目錄
-v 顯示還原過(guò)程
?
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.e16.i686.rpm | cpio -idv . /bin/ls
提取RPM包中ls命令到當(dāng)前目錄的/bin/ls下
?
6.7 yum在線管理
yum在線管理 ?redhat收費(fèi) centos免費(fèi)
?
內(nèi)網(wǎng):需配置ip 子網(wǎng)掩碼
公網(wǎng):還需配置 網(wǎng)關(guān) DNS
?
IP地址配置:
方法一
setup ??redhat系列專有命令
service network restart
?
方法二
vi /etc/sysconfig/network-scripts/ifcfg-eth0
把 ONBOOT="no"改為 ONBOOT="yes" #啟動(dòng)網(wǎng)卡
如果文件中沒(méi)有設(shè)置DNS,則添加DNS1=1114.114.114.114
service network restart
?
網(wǎng)絡(luò)yum源: ?
(.repo都是合法的yum源 默認(rèn)是CentOS-Base.repo生效)
配置文件為/etc/yum.repos.d/CentOS-Base.repo
這個(gè)文件默認(rèn)已經(jīng)配置好了,不需要更改
?
[base] 容器名稱,一定要放在[]中
name ??容器說(shuō)明,可以自己隨便寫(xiě)
mirrorlist ?鏡像站點(diǎn)
baseurl ?yum源服務(wù)器的地址。默認(rèn)是CentOS官方yum源服務(wù)器,如果覺(jué)得慢,可以改成別的yum源地址
enabled ?此容器是否生效,不寫(xiě)默認(rèn)為1,代表生效
gpgcheck ??RPM數(shù)字證書(shū)是否生效,如果是1,則生效
gpgkey ?數(shù)字證書(shū)公鑰文件保存位置,不用修改
?
查詢:
yum list ?#查詢所有可用軟件包列表
yum search 關(guān)鍵字 ?#搜索服務(wù)器上所有和關(guān)鍵字相關(guān)的包 ??yum全用包名 RPM則有包名和包全名之分
?
安裝:
yum -y install 包名
-y 自動(dòng)回答yes ??
例:yum -y install gcc
?
升級(jí):
yum -y update 包名
例:yum -y update ?//此命令升級(jí)所有軟件包,包括內(nèi)核,慎用!
?
卸載:
yum -y remove 包名
#不要用yum卸載軟件包!!!
會(huì)將其依賴的包卸載,出現(xiàn)別的問(wèn)題。
?
服務(wù)器使用的原則:
1.最小化安裝
2.使用什么軟件,安裝什么軟件
3.盡量不卸載軟件
?
yum軟件組管理命令:
yum grouplist ?#列出所有可用的軟件組列表
yum groupinstall 軟件組名 ?#安裝指定軟件組,組名可用grouplist查詢,如果組名有空格,用雙引號(hào)引起來(lái)
yum groupremove 軟件組名 ??#卸載指定軟件組
?
6.8 yum光盤(pán)管理
?
1> 掛載光盤(pán) ?mount -t iso9660 /dev/sr0 /media
?
2> 讓網(wǎng)絡(luò)yum源文件失效
方法一:將所有選項(xiàng)都置成enable=0;
方法二:yum源檢測(cè)的是.repo后綴名 ?所以改名即可
?
????mv CentOS-Base.repo CentOS-Base.repo.bak
????mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
????mv CentOS-Vault.repo CentOS-Vault.repo.bak
?
3> 修改光盤(pán)yum源
???vim CentOS-Media.repo
修改兩處:
???baseurl=file:///mnt/cdrom/ ??#地址為自己的光盤(pán)掛載點(diǎn),并把其他地址注釋掉
???enabled=1 ?#讓此yum源生效
?
yum list | more ?分屏顯示
?
注釋有嚴(yán)格格式,最好單行頂格寫(xiě)注釋
?
6.9 源碼包與RPM包的區(qū)別
安裝之前:概念上的區(qū)別
安裝之后:安裝位置不同
?
RPM包 系統(tǒng)指定的默認(rèn)位置,不要人為手工修改安裝目錄
/etc/ ???配置文件
/usr/bin/ ?可執(zhí)行命令
/usr/lib/ ?函數(shù)庫(kù)
/usr/share/doc/ ?使用手冊(cè)
/usr/share/man/ ?幫助文件
源碼包 人為手工指定安裝位置
一般是 /usr/local/軟件名/
?
安裝位置不同帶來(lái)的影響:
RPM包安裝的服務(wù)可以使用系統(tǒng)服務(wù)管理命令(service)來(lái)管理,--啟動(dòng)、重啟、關(guān)閉
例如RPM包安裝的Apache的啟動(dòng)方法是:
?? /etc/rc.d/init.d/httpd start ???#/etc/rc.d/init.d/是所有服務(wù)的安裝路徑 ?或者
?? service httpd start ?redhat系列專有命令,工作原理:去/etc/rc.d/init.d/目錄下去找httpd服務(wù)
源碼包安裝的服務(wù)只能通過(guò)絕對(duì)路徑進(jìn)行管理:
?? /urs/local/apache2/bin/apachectl start
?
6.10 源碼包的安裝過(guò)程
源碼包安裝注意事項(xiàng):
源碼包保存位置 ?/usr/local/src/
軟件安裝位置 ???/usr/local
如何確定安裝過(guò)程報(bào)錯(cuò)?安裝過(guò)程停止并出現(xiàn)error、warning、no的提示
?
安裝Apache源碼包過(guò)程:
1、下載源碼包到/usr/local/src/
2、解壓縮下載的源碼包
3、(可選)du -sh 文件名/目錄 ?查看文件夾大小 ?disk usage
???? summarize
???? human
4、進(jìn)入解壓縮目錄
兩個(gè)重要文件:INSTALL(安裝說(shuō)明文件)、README(使用說(shuō)明文件)
5、查看INSTALL文件內(nèi)容
INSTALL關(guān)鍵內(nèi)容
$ ./configure --prefix=PREFIX
$ make
$ make install
$ PREFIX/bin/apachectl start
?
./configure ?軟件配置與檢查,有三個(gè)作用
>定義需要的功能選項(xiàng)
>檢測(cè)系統(tǒng)環(huán)境是否符合安裝要求
>把定義好的功能選項(xiàng)和檢測(cè)系統(tǒng)環(huán)境的信息都寫(xiě)入Makefile文件,用于后續(xù)的編輯
?
6、./configure --prefix=/usr/local/apache2 ? ?#跟安裝路徑,此命令完成后,出現(xiàn)Makefile文件
7、make ? ?#編譯;如果出錯(cuò),make clean 命令來(lái)清空產(chǎn)生的臨時(shí)文件
8、make install ? ?#編譯安裝,此步真正向安裝目錄寫(xiě)入文件
9、安裝完成后,/usr/local/apache2/bin/apachectl start
?
源碼包的卸載:
不需要卸載命令,直接刪除安裝目錄即可
不會(huì)遺留任何垃圾文件
?
?
源碼包 和 RPM包 如何選擇?
用途
對(duì)外訪問(wèn)(如httpd),則采用源碼包安裝
本地應(yīng)用(如gcc),則采用RPM包
?
6.11 腳本安裝包
>腳本安裝包并不是獨(dú)立的軟件包類型,常見(jiàn)安裝的是源碼包
>是人為把安裝過(guò)程寫(xiě)成了自動(dòng)安裝的腳本,只要執(zhí)行腳本,定義簡(jiǎn)單的參數(shù),就可以完成安裝
>非常類似于Windows下軟件的安裝方式
?
常見(jiàn)的腳本安裝包是硬件的驅(qū)動(dòng)
?
./setup.sh
?
1 下載軟件
2 解壓縮,并進(jìn)入解壓縮目錄
3 執(zhí)行安裝腳本
?
?
?
?
總結(jié)