第2章 軟件包管理簡介
一、源碼包 //腳本安裝包;
?源碼包優(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ò)新手很難解決;
?腳本安裝包:
所謂的腳本安裝包,就是把復(fù)雜的軟件包安裝過程寫成了程序腳本,初學(xué)者可以執(zhí)行腳本實(shí)現(xiàn)一鍵安裝。但實(shí)際安裝的還是源碼包和二進(jìn)制包
①優(yōu)點(diǎn):安裝簡單、快捷;
②缺點(diǎn):完全喪失了自定義性;
二、二進(jìn)制包(RPM包) //
?二進(jìn)制包的優(yōu)點(diǎn):
①包管理系統(tǒng)簡單,只通過幾個(gè)命令就可以實(shí)現(xiàn)包的安裝、升級(jí)、查詢和卸載;
②安裝速度比源碼包安裝快的多;
?二進(jìn)制包的缺點(diǎn):
①經(jīng)過編譯,不再可以看到源代碼;
②功能選擇不如源碼包靈活;
③依賴性;
第3章 rpm命令管理
RPM命令管理:RPM包命名規(guī)則
1、RPM包的來源:所有RPM包都在系統(tǒng)光盤的Packages目錄中
2、RPM包命名規(guī)則:軟件包名-軟件版本-軟件發(fā)布的次數(shù)-適合的Linux平臺(tái)-適合的硬件平臺(tái)-包擴(kuò)展名
3、RPM包依賴性:
a、樹形依賴:a->b->c 解決方法:從后往前安裝
b、環(huán)形依賴:a->b->c->a 解決方法:放在一條命令中安裝即可
c、模塊依賴:庫文件依賴,庫也叫模塊,就是linux當(dāng)中的函數(shù),它有一個(gè)典型的特征,就是以【.so.數(shù)字】結(jié)尾,它依賴的其實(shí)是一個(gè)文件,而不是軟件包。該文件藏身在某一個(gè)軟件包當(dāng)中。我們只要將該文件所在的軟件包安裝上,該文件也就安裝了。解決方法:登錄www.rpmfind.net網(wǎng)站,輸入庫文件名稱查詢到對(duì)應(yīng)的rpm包,然后安裝即可。
4、yum在線安裝:可以方便的解決依賴文件,一條命令就可以幫用戶從網(wǎng)上(本地也可以)找到安裝包進(jìn)行安裝。
包全名:系統(tǒng)中沒有安裝過,使用包全名,注意路徑-安裝,升級(jí)
包名:系統(tǒng)中已經(jīng)安裝過軟件包時(shí),使用包名 -卸載,查詢
是搜索/var/lib/rpm 中的數(shù)據(jù)庫
1.安裝命令:rpm -ivh 包全名
選項(xiàng):-i install
-v verbose 顯示詳細(xì)信息
-U 升級(jí)
-h hash 顯示進(jìn)度
--nodeps 不檢測依賴性(絕少使用)
2、升級(jí)命令
rpm -Uvh 包全名(要升級(jí)到的軟件版本),如果沒有安裝這個(gè)軟件的任何版本,這個(gè)命令可以代替rpm -ivh。
3、卸載命令
rpm -e 包名(比如Httpd,不需要包全名),這個(gè)命令不同于安裝和升級(jí),它可以在任何目錄運(yùn)行,原理是去/var/lib/rpm目錄中的數(shù)據(jù)庫(如__db0)中查找對(duì)應(yīng)的軟件包(已經(jīng)安裝過的rpm包都在這些數(shù)據(jù)庫中),然后卸載。
4、--nodeps這個(gè)選項(xiàng)不管是在安裝和卸載的時(shí)候,最好都不要使用。
5、rpm安裝包安裝的位置是由軟件包開發(fā)者決定的,安裝后的位置會(huì)非常凌亂,所以最好是使用rpm -e命令卸載。
相對(duì)于二進(jìn)制安裝,源碼安裝是指定安裝目錄了,卸載的時(shí)候只需要?jiǎng)h除對(duì)應(yīng)的目錄就可以完全的卸載,不留一點(diǎn)殘余。
1.查詢是否安裝:rpm -q 包名 (查詢包是否安裝,query) rpm -qa (查詢所有已經(jīng)安裝的rpm包,all)
2.查詢軟件包詳細(xì)信息:rpm -qi 包名 (查詢軟件信息,information) rpm -qip 包名 (查詢未安裝包信息,package)
3.查詢包中文件安裝位置:rpm -ql 包名 (l , list,列表) rpm -qlp 包名 (查詢未安裝包信息,package)
4.查詢系統(tǒng)文件屬于哪個(gè)RPM包:rpm -qf 系統(tǒng)文件名 (查詢系統(tǒng)文件屬于哪個(gè)軟件包,file)
5.查詢軟件包的依賴性:rpm -qR 包名 (-R 查詢軟件包的依賴性 ,requires ) rpm -qRp 包名 (-p 查詢未安裝包信息 ,package)
RPM命令管理:RPM包中文件提取
rpm2cpio 包全名 | cpio -idv .文件絕對(duì)路徑 --> 前面的【.】代表當(dāng)前路徑,不能省略。【文件絕對(duì)路徑】和包里文件的絕對(duì)路徑對(duì)應(yīng),也就是告訴了cpio要去包里提取哪個(gè)文件。
注:cpio只知道提取文件,并不知道要從什么地方提取文件,因此我們通常要使用【|】管道符或【<】輸入重定向告訴cpio我們應(yīng)該從什么設(shè)備去取出文件。
使用輸入重定向的cpio命令格式:
cpio 選項(xiàng) < [文件|設(shè)備]
選項(xiàng):
-i:copy-in模式,還原
-d:還原時(shí)自動(dòng)新建目錄
-v:顯示還原過程
第4章 yum在線安裝
Yum在線安裝:yum源文件
1、yum的優(yōu)點(diǎn):將所有軟件包放到官方服務(wù)器上,當(dāng)進(jìn)行yum在線安裝時(shí),可以自動(dòng)解決依賴性問題。(rpm缺點(diǎn):安裝過程中,rpm包依賴性太強(qiáng))
2、redhat的yum在線安裝需要付費(fèi),centOS不需要。
3、在【/etc/yum.repos.d/】目錄中,默認(rèn)有4個(gè)yum源文件,其中【CentOS-Base.repo】是基本yum源文件,如果我們能上網(wǎng),那它是默認(rèn)生效的,而其他的都是默認(rèn)不生效的。
4、[base]:名字可以隨便起。
5、name:名字也是隨便起。
6、mirrorlist和baseurl一個(gè)是主站點(diǎn),一個(gè)是輔助站點(diǎn),這兩個(gè)有一個(gè)就行。可以找一個(gè)163或清華大學(xué)的yum源更換。
7、enabled:默認(rèn)最后一個(gè)容器不生效,其他容器都生效。
8、gpgcheck:一般都要開啟,開啟后安裝時(shí)會(huì)驗(yàn)證rpm包是否是官方的,以保證系統(tǒng)安全。
9、gpgkey:默認(rèn)系統(tǒng)安裝后,在目錄【/etc/pki/rpm-gpg】下都會(huì)存在數(shù)字證書。注:前面的【file://】表示文件協(xié)議,后面的【/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6】是數(shù)字證書的位置。
[root@CentOS6 ~]# cd /etc/pki/rpm-gpg
[root@CentOS6 rpm-gpg]# ll
光盤yum源搭建:
1、掛載光盤
mkdir /media或mnt/cdrom:建立掛載點(diǎn);
mount /dev/cdrom /media或mnt/cdrom:掛載光盤;
2、使網(wǎng)絡(luò)yum源失效:
cd/etc/yum.repos.d/:進(jìn)入yum源目錄;
mv CentOS-Base.repo CentOS-Base.repo.bak:修改Yum源文件后綴名,使其失效;(判斷yum源是根據(jù)后綴名repo來實(shí)現(xiàn)的,修改后綴名則可以使該yum源失效)
3、使光盤yum源生效:
vim CentOS-Media.repo
baseurl=file:///mnt或media/cdrom:地址為光盤掛載地址,如果有多余的光盤掛載點(diǎn),需要注釋掉不存在或不需要使用的光盤掛在地址;
enabled=1:把enabled=0改為enabled=1,使該yum源配置生效;
4、命令:yum list:該命令可驗(yàn)證目前使用的yum源有哪些可用的rpm包;
常用yum命令:
查詢:
①yum list:查詢目前使用的yum源中所有可用軟件包列表;
②yum search 關(guān)鍵字:搜索服務(wù)器上所有和關(guān)鍵字相關(guān)的包;
安裝:
①yum -y install 包名
⑴-install:安裝;
⑵-y:自動(dòng)回答yes;
②例如:yum -y install httpd
升級(jí):
①yum -y update 包名
⑴-update:升級(jí);
⑵-y:自動(dòng)回答yes;
卸載:
②yum -y remove 包名
⑴-remove:卸載;
⑵-y:自動(dòng)回答yes;
!!!服務(wù)器使用最小化安裝,用什么軟件安裝什么,盡量不要卸載!!!
2、yum軟件組管理命令
yum grouplist:列出所有可用的軟件列表;
yum groupinstall 軟件組名:安裝指定軟件組,組名可以由grouplist查詢出來;
yum gourpremove 軟件組名:卸載指定軟件組;
①LANG=en_US:切換至英文;(臨時(shí)生效)①
②LANG=zh_CN.utf8:切換至中文;(臨時(shí)生效)②
第5章 源碼包安裝
源碼包和RPM包的區(qū)別:4、安裝位置不同帶來的影響
1、源碼包是不能使用【service】命令來啟動(dòng)服務(wù),因?yàn)樵创a包的安裝位置由用戶指定,放在哪并不統(tǒng)一。而rpm包安裝后,通常都是放在【/etc/rc.d/init.d】目錄中的,而【service】命令執(zhí)行時(shí),會(huì)自動(dòng)搜索該目錄,所以rpm包安裝的服務(wù)可以使用【service】命令。
2、綜上所述,安裝位置不同,啟動(dòng)方法是有區(qū)別的。
3、使用絕對(duì)路徑啟動(dòng)程序的方法是通用的,通常軟件包中會(huì)寫上啟動(dòng)程序的方法的。
4、如果將源碼包安裝后的啟動(dòng)程序復(fù)制到【/etc/rc.d/init.d】目錄中,則也是可以使用【service】命令執(zhí)行的。
netstat -tlun
查找網(wǎng)絡(luò)連接信息和系統(tǒng)開啟的端口號(hào)
使用 -t 選項(xiàng)列出 TCP 協(xié)議的連接
使用 -l 選項(xiàng)列出正在監(jiān)聽的套接字
使用 -u 選項(xiàng)列出 UDP 協(xié)議的連接
使用 -n 選項(xiàng)禁用域名解析功能
源碼包安裝:3、源碼包安裝過程(源碼包的安裝過程和安裝順序是固定的)
下面以安裝apache2為例,解壓縮后的目錄為【httpd-2.2.31】:
1、安裝時(shí)必須進(jìn)入到解壓縮后的目錄【httpd-2.2.31】中;
2、執(zhí)行【./configure】命令,該命令用于軟件配置與檢查(基本上每個(gè)源碼包都會(huì)有該命令,即使個(gè)別的沒有該命令,也會(huì)提供相關(guān)替代命令),它有以下幾點(diǎn)功能:
a、定義需要的功能選項(xiàng);
b、檢測系統(tǒng)環(huán)境是否符合安裝要求;
c、把a(bǔ)中定義好的功能選項(xiàng)和b中檢測系統(tǒng)環(huán)境的信息都寫入Makefile文件,用于后續(xù)的編輯。(后續(xù)的【make】和【make install】命令都會(huì)依賴該文件)
執(zhí)行命令【./configure --prefix=/usr/local/apache2】,該命令用于指定安裝位置為:【/usr/local/apache2】(其中的【apache2】目錄不需要提前創(chuàng)建,【make install】命令執(zhí)行時(shí)會(huì)自動(dòng)創(chuàng)建)。
命令執(zhí)行后,會(huì)在當(dāng)前目錄生成Makefile文件。
3、執(zhí)行【make】命令,編譯源碼(這一步通常比較耗時(shí));
4、執(zhí)行【make install】命令,安裝程序,此時(shí)會(huì)創(chuàng)建【/usr/local/apache2】目錄。
注:
如果命令執(zhí)行過程中發(fā)生終止,并且出現(xiàn)error、warn或no提示,則表明出錯(cuò),否則,一切正常。
若執(zhí)行【./configure】或【make】命令時(shí)出現(xiàn)錯(cuò)誤,是不需要?jiǎng)h除【/usr/local/apache2】目錄的,因?yàn)槌绦蜻€沒有真正安裝。只需要執(zhí)行【make clean】命令即可,該命令用于清除緩存、臨時(shí)文件等,使安裝環(huán)境恢復(fù)到未安裝狀態(tài)。
若執(zhí)行【make install】命令時(shí)報(bào)錯(cuò),則需要?jiǎng)h除【/usr/local/apache2】目錄,并且執(zhí)行【make clean】命令才行。
第6章 腳本安裝包
腳本安裝包:準(zhǔn)備工作
1、本節(jié)以安裝LNMP1.0(http://lnmp.org/download.html)為例,所以需要先停止之前安裝的apache和mysql服務(wù)(最好也將源碼包安裝的apache【/usr/local/apache2】刪除)
2、保證yum源正常:可以使用【yum list】命令測試。(若是光盤yum源,記得掛載光盤)
3、關(guān)閉SELinux和防火墻:
a、永久關(guān)閉SELinux的方法:編輯文件【/etc/selinux/config】,將【SELINUX=enforcing】改為【SELINUX=disabled】,然后重啟系統(tǒng)即可。
b、永久關(guān)閉防火墻的方法:【chkconfig iptables off】,開啟為:【chkconfig iptables on】;臨時(shí)關(guān)閉防火墻的方法:【service iptables stop】,開啟為:【service iptables start】。
4、腳本安裝過程中,會(huì)將系統(tǒng)中已有的apache、mysql、php等卸載掉。下面是安裝腳本【centOS.sh】的部分內(nèi)容:
......部分內(nèi)容省略......
yum install -y ntp
ntpdate -u pool.ntp.org
date
rpm -qa|grep httpd
rpm -e httpd
rpm -qa|grep mysql
rpm -e mysql
rpm -qa|grep php
rpm -e php
yum -y remove httpd*
yum -y remove php*
yum -y remove mysql-server mysql
yum -y remove php-mysql
......部分內(nèi)容省略......
注:安裝后,如果安裝卡在了【php-fpm】那里,通常表示已安裝成功,只是【php-fpm】那里卡住了(物理機(jī)少見,但虛擬機(jī)比較常見),解決的方法就是:使用命令【pkill -9 php-fpm】殺掉【php-fpm】進(jìn)程,然后重新啟動(dòng)該進(jìn)程【/etc/rc.d/init.d/php-fpm start】即可