Linux   rpm包、rpm源碼包及tar源碼包的安裝詳解

      在使用linux系統的過程中,軟件包的安裝是避免不了的,在linux下,軟件安裝程序的種類很多,安裝方法也格式各樣,論安裝的舒適肯定比不上windowswindows安裝軟件基本就是用鼠標點擊下一步,如果學習linux的軟件包安裝,還像windows那樣點擊鼠標下一步安裝,那就太對不起linuxshell了,linuxshelllinux的圖形化界面要強大太多了。好了廢話不多說了,安裝軟件包,首先要了解軟件包的組成

      軟件包由二進制文件、庫文件、配置文件、幫助文件、頭文件等這重要的部分組成。他們分別存放在系統的那些路徑裏面?

二進制文件:/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),yumRPM的前端工具,是基於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默認爲11表示啓用此倉庫,0表示不啓,

     6)gpgcheck默認也是爲11表示檢查公鑰,當檢查公鑰時要指定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倉庫(sohuyum倉庫)的方法

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包可以在下面兩個網站去搜索

http://rpm.phone.net

http://www.rpmfind.net

http://pkgs.org/



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源碼包安裝的訪問已經能夠成功了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章