在使用linux系統的過程中,軟件包的安裝是避免不了的,在linux下,軟件安裝程序的種類很多,安裝方法也格式各樣,論安裝的舒適肯定比不上windows,windows安裝軟件基本就是用鼠標點擊下一步,如果學習linux的軟件包安裝,還像windows那樣點擊鼠標下一步安裝,那就太對不起linux的shell了,linux的shell比linux的圖形化界面要強大太多了。好了廢話不多說了,安裝軟件包,首先要了解軟件包的組成。
軟件包由二進制文件、庫文件、配置文件、幫助文件、頭文件等這重要的部分組成。他們分別存放在系統的那些路徑裏面?
二進制文件:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
庫文件:/lib, /usr/lib, /usr/local/lib
配置文件:/etc
幫助文件:/usr/share/man, /usr/local/share/man, {像README, INSTALL文件主 要存放在 /usr/share/doc}
頭文件:/usr/include/
1、軟件包的安裝方法之rpm安裝的相關操作
rpm包的組成:name-version-release.arch.rpm
name:表示包的名稱,包括主包名和分包名
version:表示包的版本信息
release:用於標識rpm包本身的發行號,可還包含適應的操作系統
arch:表示主機平臺,noarch表示此包能安裝到所以平臺上面
gd-devel-2.0.35-11.el6.x86_64.rpm
gd是這個包的主包名,devel是這個包的分包名,
2.0.35是表示版本信息,2爲主版本,0爲此版本,35爲修訂號,
11.el6中的11是表示發行號,el6表示是RHEL6,
x86_64是表示包適合的平臺,如果是noarch這表示與平臺無關
option | 參數解釋 | Example | |
安裝 | -i | 安裝 | |
-v|-vv|-vvv | 顯示詳細信息 | ||
-h | 以#顯示安裝進度一個#表示2%的進度 | rpm -ivh zsh-4.3.10-5.el6.x86_64.rpm | |
--nodeps | 忽略依賴關係 | ||
--test | 測試安裝 | ||
--replacepkgs | 重新安裝(安裝的包已經安裝了) | ||
升級 | -U -Uvh | 升級+安裝 | |
-F -Fvh | 升級(此包已經安裝了) | ||
--force | 有衝突強制升級 | ||
--nodeps | 忽略包依賴性關係 | ||
卸載 | -e | 卸載 | rpm -e 包名 |
--nodeps | 忽略包依賴性關係 | ||
查詢 | -q |--query | rpm -q|--query 包名 | |
-qa | 查看所有已經安裝的包 | rpm -qa 查看所有包名 rpm -qa | grep 包名查看某個包名 | |
-qi | 查看包的摘要信息 | ||
-qf | 查看文件是有那個包安裝的 | rpm -qf /path/to/file | |
-ql | 查看包安裝生成的文件清單 | ||
-qc | 查看包安裝生成的配置文件 | ||
-qd | 查看包安裝生成的幫助文檔 | ||
-q --scripts | 查看相關的腳本 | rpm -q--script 包名 | |
-qp[i|l|d|c] | 查看尚未安裝包的詳細信息 | rpm -qpi /path/to/rpm_file | |
校驗 | -V | rpm -V 包名 | |
數據庫管理 | --initdb | 新建 | rpm --initdb |
--rebuilddb | 重建 | rpm --rebuilddb |
2、軟件包的安裝方法之yum安裝的相關操作
yum(Yellowdog Update Manager),yum是RPM的前端工具,是基於RPM的一個管理工具,他能自動的解決安裝rpm包產生的依賴關係。
yum的配置文件 /etc/yum.conf
yum repository倉庫的配置文件/etc/yum.repos.d/*.repo
yum倉庫的搭建是使用yum安裝的前提,如何搭建一個好的yum倉庫?
1)首先要在yum倉庫的文件(/etc/yum.repos.d/)中建立一個以.repo結尾的文件;
2)[ ]方括號裏面是寫倉庫的ID(repository_ID),名稱可以隨便取,但必須唯一;
3)name是yum的名稱也可以隨便取,也必須唯一;
4)baseurl指定你可以能通過本機、http或者ftp訪問到那些rpm包的所在路徑,該路徑下必須有一個
repodata的文件,比如/media下面有那個repodata的文件,那你的baseurl指向/media/,如果
是/media/Server下面有那個repodata的文件,那你的baseurl指向 /media/Server/目錄;
5)enabled默認爲1,1表示啓用此倉庫,0表示不啓,
6)gpgcheck默認也是爲1,1表示檢查公鑰,當檢查公鑰時要指定gpgkey的地址,0表示不檢查,不
檢查公鑰就不用指gpgkey的地址,如果是本地光盤搭建yum倉庫,則可以設置gpgcheck=0
7)當gpgcheck=1時,gpgkey指向包含RPM-GPG-KEY-CentOS-6這個文件的路徑
8)cost是表示花費代價,cost默認是2000,越小越先訪問
用光盤搭建本地yum倉庫的方法:
mount/dev/cdrom /media cat>> /etc/yum.repos.d/iso.repo<<EOF [iso] name=centos6.4-x86_64 baseurl=file:///media/ gpgcheck=0 enable=1 EOF
搭建外網的yum倉庫(sohu的yum倉庫)的方法
cat>> /etc/yum.repos.d/sohu.repo<<EOF [sohu] name=Internet-centos baseurl=http://mirrors.sohu.com/centos/$releasever/os/$basearch gpgcheck=1 enable=1 gpgkey=http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-6 EOF
$releasever:表示你的系統的版本,變量會自動的檢測你的版本
$basearch:表示CPU的架構,是x86_64,還是i386系列
如果自己在網上下載了很多rpm軟件包,也想搭建一個yum倉庫,則使用createrepo
createrepo會生成一個repodata的軟件信息倉庫文件,然後搭建該目錄的yum倉庫
rpm包可以在下面兩個網站去搜索
cat>> /etc/yum.repos.d/xen.repo << EOF [xen] name=centos-xen baseurl=file:///root/xen-4.1 #存放軟件的路徑且路徑中有repodata這個文件 gpgcheck=0 EOF
搭建完xen的yum後,可以用yum安裝xen了
yum常用的命令:
操作命令 | 命令解釋 | |
列表 | yum list <package_name> | 列出指定安裝軟件的清單 |
yum list installed | 列出所有已安裝的軟件包 | |
yum list extras | 列出所有已安裝但不在 Yum 倉庫內的軟件包 | |
yum grouplist | 列出所有的組 | |
yum grouplist "Group1" | 列出指定組的軟件包列表 | |
安裝 | yum -y install <package_name> | 安裝指定的軟件 |
yum -y groupinstall "Group1" "Group2" | 安裝指定的組 | |
yum -y localinstall <package_name> | 用yum安裝下載到本地的rpm包 | |
更新 | yum check-update | 列出所有可更新的軟件清單 |
yum update | 安裝所有更新軟件 | |
yum update <package_name> | 更新指定的軟件 | |
信息 | yum info | 顯示所有包的信息 |
yum info <package_name> | 顯示指定包的信息 | |
yum groupinfo "Group1" "Group2" | 顯示指定組的信息 | |
清除 | yum clean all | 清除所有yum所保存的信息 |
yum clean metadata | 只清空保存的數據信息 | |
其它操作 | yum repolist [all|enable|disable] | 查看yum倉庫的個數,默認顯示啓用的 |
yum makecache | 手動生成緩存 | |
yum search <package_name> | 查詢rpm包 | |
yum reinstall <package_name> | 重新安裝一遍 | |
yum provides <package_name> | 列出軟件包提供哪些文件 |
用yum安裝開發組
(RHEL6.x)
yum -y groupinstall "DesktopPlatform Development" "Development tools" "Server Platform Development"
(RHEL5.x)
yum -y groupinstall "Development tools " "Development Libraries"
3、軟件包安裝之tar源碼包編譯安裝
tar編譯安裝的三部曲:
在安裝三部曲之前,建議先看看解壓之後目錄裏面的包含README, INSTALL文件,這裏面的文件會告訴你詳細安裝步驟。
1)configure 檢測編譯環境
2)make 進行編譯
3)make install 編譯安裝
http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.25.tar.bz2
下載apache的tar源碼包地址
#安裝tar源碼包可以先安裝開發工具,可以減少安裝相關的依賴性包 [root@Redhat6 ~]# yum -y groupinstall "DesktopPlatform Development" "Development tools" "Server Platform Development" [root@Redhat6 ~]#tar xf httpd-2.2.25.tar.bz2 #先解壓 [root@Redhat6 ~]# cd httpd-2.2.25 #進入到解壓後的目錄 [root@Redhat6 httpd-2.2.25]# ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite #檢查編譯環境 [root@Redhat6 httpd-2.2.25]# make #編譯 [root@Redhat6 httpd-2.2.25]# make install #編譯安裝 [root@Redhat6 httpd-2.2.25]# cd /usr/local/apache #進入到安裝的目錄下面 [root@Redhat6 apache]# ls #查看安裝生成了那些文件 bin cgi-bin error icons lib man modules build conf htdocs include logs manual
用tar安裝包後需要修改幾個地方,使得tar安裝包後能與系統識別的路徑相關聯
1)、改PATH環境變量
寫到/etc/profile.d/*.sh------>source /etc/profile 裏面寫安裝軟件後bin的路徑
echo"PTAH=/usr/local/apache/bin:$PATH">>/etc/profile.d/apache.sh source/etc/profile
或者直接 export PATH=/usr/local/apache/bin:$PATH
2)、添加庫文件的搜索 /etc/ld.so.conf/ etc/ld.so.conf.d/*.conf
在/etc/ld.so.conf.d/*.conf 寫 lib的路徑 ldconfig -v
echo"/usr/local/apache/lib">>/etc/ld.so.conf.d/apache.conf ldconfig -v| grepapache
3)、幫助文檔的使用 /etc/man.conf MANPATH
在/etc/man.config寫 man手冊的路徑
echo"MANPATH /usr/local/apache/man ">>/etc/man.config
然後就可以直接使用man httpd等命令了,不在配置文件中指定路徑可以直接
man -M /usr/local/apache/man httpd
4)、關聯繫統所識別的頭文件
把頭文件的路徑鏈接到系統頭文件中, ln -sv 源 目的 /usr/include
ln-sv /usr/local/apache/include//usr/include/apache
做完這些操作後源碼包安裝的軟件的使用方法可以和rpm安裝的使用方法相似了
[root@Redhat6 ~]# apachectl start #開啓服務
4、軟件包安裝之rpm源碼包src安裝
1)先用rpm安裝rpm源碼包生成spec文件,這個文件在用戶家目錄的rpmbuild目錄下的SPECS裏面
2)在用rpmbuild編譯spec文件生成rpm文件
3)然後用rpm或者yum安裝生成的rpm包
下載nginx的rpm源碼包,通過此包來安裝nginx,所需包的下載地址
http://mirrors.sohu.com/fedora-epel/6Server/SRPMS/nginx-1.0.15-5.el6.src.rpm
ftp://195.220.108.108/linux/epel/6/x86_64/GeoIP-devel-1.4.8-1.el6.x86_64.rpm
ftp://195.220.108.108/linux/epel/6/x86_64/GeoIP-1.4.8-1.el6.x86_64.rpm
[root@Redhat6 opt]#yum -y install rpm-build [root@Redhat6 opt]#useradd -r mockbuild #先添加一個用於安裝src包的系統用戶 [root@Redhat6 opt]#rpm -ivh nginx-1.0.15-5.el6.src.rpm #在安裝src包,安裝完成後會再用戶的家目錄生成一個rpmbuild的文件 [root@Redhat6 ~]# cd ~/rpmbuild/ [root@Redhat6 rpmbuild]# ls SOURCES SPECS [root@Redhat6 rpmbuild]# cd SPECS/ [root@Redhat6 SPECS]# ls nginx.spec [root@Redhat6 SPECS]# rpmbuild -ba nginx.spec #編譯rpm源碼包 error: Failed build dependencies: #需要解決依賴性包,GeoIP-devel包可以在網上下載 GeoIP-devel is needed by nginx-1.0.15-5.el6.x86_64 gd-devel is needed by nginx-1.0.15-5.el6.x86_64 libxslt-devel is needed by nginx-1.0.15-5.el6.x86_64 pcre-devel is needed by nginx-1.0.15-5.el6.x86_64 #在網上下載這些包了之後用yum安裝解決依賴性 [root@Redhat6 opt]#yum -y install GeoIP-1.4.8-1.el6.x86_64.rpm GeoIP-devel-1.4.8-1.el6.x86_64.rpm libxslt-devel pcre-devel gd-devel [root@Redhat6 rpmbuild]# cd SPECS/ [root@Redhat6 SPECS]# rpmbuild -ba nginx.spec #編譯生成rpm包 [root@Redhat6 SPECS]# cd /root/rpmbuild/ [root@Redhat6 rpmbuild]# ls BUILD BUILDROOT RPMS SOURCES SPECS SRPMS [root@Redhat6 rpmbuild]# cd RPMS/ [root@Redhat6 RPMS]# ls x86_64 [root@Redhat6 RPMS]# cd x86_64/ [root@Redhat6 x86_64]# ls nginx-1.0.15-5.el6.x86_64.rpm nginx-debuginfo-1.0.15-5.el6.x86_64.rpm [root@Redhat6 x86_64]# rpm -ivh nginx-1.0.15-5.el6.x86_64.rpm Preparing... ########################################### [100%] 1:nginx ########################################### [100%] [root@Redhat6 x86_64]# service nginx start Starting nginx: [ OK ]
通過rpm源碼包安裝的訪問已經能夠成功了。