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