天天看點

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

     在使用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

有沖突強制更新

忽略包依賴性關系

解除安裝

-e

rpm  -e  包名

查詢

-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

<a target="_blank" href="http://blog.51cto.com/attachment/201307/094646713.png"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201307/094717497.png"></a>

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的位址,如果是本地CD光牒搭建yum倉庫,則可以設定gpgcheck=0

     7)當gpgcheck=1時,gpgkey指向包含RPM-GPG-KEY-CentOS-6這個檔案的路徑

     8)cost是表示花費代價,cost預設是2000,越小越先通路

用CD光牒搭建本地yum倉庫的方法:

1

2

3

4

5

6

7

8

<code>mount</code><code>/dev/cdrom</code>   <code>/media</code>

<code>cat</code><code>&gt;&gt; </code><code>/etc/yum</code><code>.repos.d</code><code>/iso</code><code>.repo&lt;&lt;EOF</code>

<code>[iso]</code>

<code>name=centos6.4-x86_64</code>

<code>baseurl=</code><code>file</code><code>:</code><code>///media/</code>

<code>gpgcheck=0</code>

<code>enable</code><code>=1</code>

<code>EOF</code>

搭建外網的yum倉庫(sohu的yum倉庫)的方法

<code>cat</code><code>&gt;&gt; </code><code>/etc/yum</code><code>.repos.d</code><code>/sohu</code><code>.repo&lt;&lt;EOF</code>

<code>[sohu]</code>

<code>name=Internet-centos</code>

<code>baseurl=http:</code><code>//mirrors</code><code>.sohu.com</code><code>/centos/</code><code>$releasever</code><code>/os/</code><code>$basearch</code>

<code>gpgcheck=1</code>

<code>gpgkey=http:</code><code>//mirrors</code><code>.sohu.com</code><code>/centos/RPM-GPG-KEY-CentOS-6</code>

$releasever:表示你的系統的版本,變量會自動的檢測你的版本

$basearch:表示CPU的架構,是x86_64,還是i386系列

如果自己在網上下載下傳了很多rpm軟體包,也想搭建一個yum倉庫,則使用createrepo

createrepo會生成一個repodata的軟體資訊倉庫檔案,然後搭建該目錄的yum倉庫

rpm包可以在下面兩個網站去搜尋

<a href="http://rpm.phone.net/">http://rpm.phone.net</a>

<a href="http://www.rpmfind.net/">http://www.rpmfind.net</a>

<a href="http://pkgs.org/">http://pkgs.org/</a>

<a target="_blank" href="http://blog.51cto.com/attachment/201307/103521896.png"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201307/103641463.png"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201307/103553135.png"></a>

<code>cat</code><code>&gt;&gt; </code><code>/etc/yum</code><code>.repos.d</code><code>/xen</code><code>.repo &lt;&lt; EOF</code>

<code>[xen]</code>

<code>name=centos-xen</code>

<code>baseurl=</code><code>file</code><code>:</code><code>///root/xen-4</code><code>.1  </code><code>#存放軟體的路徑且路徑中有repodata這個檔案</code>

搭建完xen的yum後,可以用yum安裝xen了

<a target="_blank" href="http://blog.51cto.com/attachment/201307/104159653.png"></a>

yum常用的指令:

操作指令

指令解釋

清單

yum list  &lt;package_name&gt;

列出指定安裝軟體的清單

yum list installed

列出所有已安裝的軟體包

yum list extras

列出所有已安裝但不在 Yum  倉庫內的軟體包

yum grouplist

列出所有的組

yum grouplist "Group1"

列出指定組的軟體包清單

yum -y install  &lt;package_name&gt;

安裝指定的軟體

yum  -y groupinstall   "Group1"  "Group2"  

安裝指定的組

yum -y localinstall &lt;package_name&gt;

用yum安裝下載下傳到本地的rpm包

更新

yum check-update

列出所有可更新的軟體清單

yum update

安裝所有更新軟體

yum update  &lt;package_name&gt;

更新指定的軟體

資訊

yum  info

顯示所有包的資訊

yum  info &lt;package_name&gt;

顯示指定包的資訊

yum  groupinfo "Group1"   "Group2"

顯示指定組的資訊

清除

yum clean all

清除所有yum所儲存的資訊

yum clean metadata

隻清空儲存的資料資訊

其它操作

yum  repolist [all|enable|disable]

檢視yum倉庫的個數,預設顯示啟用的

yum   makecache

手動生成緩存

yum search  &lt;package_name&gt;

查詢rpm包

yum reinstall  &lt;package_name&gt;

重新安裝一遍

yum provides  &lt;package_name&gt;

列出軟體包提供哪些檔案

用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     編譯安裝

<a href="http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.25.tar.bz2">http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.25.tar.bz2</a>

下載下傳apache的tar源碼包位址

9

10

11

<code>#安裝tar源碼包可以先安裝開發工具,可以減少安裝相關的依賴性包</code>

<code>[root@Redhat6 ~]</code><code># yum  -y groupinstall   "DesktopPlatform Development"     "Development tools"  "Server Platform Development"</code>

<code>[root@Redhat6 ~]</code><code>#tar xf httpd-2.2.25.tar.bz2    #先解壓</code>

<code>[root@Redhat6 ~]</code><code># cd httpd-2.2.25  #進入到解壓後的目錄</code>

<code>[root@Redhat6 httpd-2.2.25]</code><code># ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite   #檢查編譯環境</code>

<code>[root@Redhat6 httpd-2.2.25]</code><code># make  #編譯</code>

<code>[root@Redhat6 httpd-2.2.25]</code><code># make install  #編譯安裝</code>

<code>[root@Redhat6 httpd-2.2.25]</code><code># cd /usr/local/apache  #進入到安裝的目錄下面</code>

<code>[root@Redhat6 apache]</code><code># ls    #檢視安裝生成了那些檔案</code>

<code>bin    cgi-bin  error   icons    lib   </code><code>man</code>     <code>modules</code>

<code>build  conf     htdocs  include  logs  manual</code>

用tar安裝包後需要修改幾個地方,使得tar安裝包後能與系統識别的路徑相關聯

1)、改PATH環境變量

寫到/etc/profile.d/*.sh------&gt;source /etc/profile 裡面寫安裝軟體後bin的路徑

<code>echo</code><code>"PTAH=/usr/local/apache/bin:$PATH"</code><code>&gt;&gt;</code><code>/etc/profile</code><code>.d</code><code>/apache</code><code>.sh</code>

<code>source</code><code>/etc/profile</code>

或者直接 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    

<code>echo</code><code>"/usr/local/apache/lib"</code><code>&gt;&gt;</code><code>/etc/ld</code><code>.so.conf.d</code><code>/apache</code><code>.conf</code>

<code>ldconfig -</code><code>v</code><code>| grepapache</code>

3)、幫助文檔的使用  /etc/man.conf    MANPATH

在/etc/man.config寫 man手冊的路徑

<code>echo</code><code>"MANPATH /usr/local/apache/man "</code><code>&gt;&gt;</code><code>/etc/man</code><code>.config</code>

然後就可以直接使用man httpd等指令了,不在配置檔案中指定路徑可以直接

man -M /usr/local/apache/man httpd

4)、關聯系統所識别的頭檔案

把頭檔案的路徑連結到系統頭檔案中, ln  -sv 源  目的  /usr/include

<code>ln</code><code>-sv </code><code>/usr/local/apache/include//usr/include/apache</code>

做完這些操作後源碼包安裝的軟體的使用方法可以和rpm安裝的使用方法相似了

[root@Redhat6 ~]# apachectl start    #開啟服務

<a target="_blank" href="http://blog.51cto.com/attachment/201307/114007712.png"></a>

4、軟體包安裝之rpm源碼包src安裝

1)先用rpm安裝rpm源碼包生成spec檔案,這個檔案在使用者家目錄的rpmbuild目錄下的SPECS裡面

      2)在用rpmbuild編譯spec檔案生成rpm檔案

      3)然後用rpm或者yum安裝生成的rpm包

下載下傳nginx的rpm源碼包,通過此包來安裝nginx,所需包的下載下傳位址

<a href="http://mirrors.sohu.com/fedora-epel/6Server/SRPMS/nginx-1.0.15-5.el6.src.rpm">http://mirrors.sohu.com/fedora-epel/6Server/SRPMS/nginx-1.0.15-5.el6.src.rpm</a>

<a href="http://ftp//195.220.108.108/linux/epel/4/x86_64/GeoIP-devel-1.4.8-1.el4.x86_64.rpm">ftp://195.220.108.108/linux/epel/6/x86_64/GeoIP-devel-1.4.8-1.el6.x86_64.rpm</a>

<a href="http://ftp//195.220.108.108/linux/epel/6/x86_64/GeoIP-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</a>

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

<code>[root@Redhat6 opt]</code><code>#yum -y install rpm-build</code>

<code>[root@Redhat6 opt]</code><code>#useradd -r mockbuild  #先添加一個用于安裝src包的系統使用者</code>

<code>[root@Redhat6 opt]</code><code>#rpm -ivh nginx-1.0.15-5.el6.src.rpm  #在安裝src包,安裝完成後會再使用者的家目錄生成一個rpmbuild的檔案</code>

<code>[root@Redhat6 ~]</code><code># cd ~/rpmbuild/</code>

<code>[root@Redhat6 rpmbuild]</code><code># ls</code>

<code>SOURCES  SPECS</code>

<code>[root@Redhat6 rpmbuild]</code><code># cd SPECS/</code>

<code>[root@Redhat6 SPECS]</code><code># ls</code>

<code>nginx.spec</code>

<code>[root@Redhat6 SPECS]</code><code># rpmbuild -ba nginx.spec  #編譯rpm源碼包</code>

<code>error: Failed build dependencies:  </code><code>#需要解決依賴性包,GeoIP-devel包可以在網上下載下傳</code>

<code>    </code><code>GeoIP-devel is needed by nginx-1.0.15-5.el6.x86_64</code>

<code>    </code><code>gd-devel is needed by nginx-1.0.15-5.el6.x86_64</code>

<code>    </code><code>libxslt-devel is needed by nginx-1.0.15-5.el6.x86_64</code>

<code>    </code><code>pcre-devel is needed by nginx-1.0.15-5.el6.x86_64</code>

<code>#在網上下載下傳這些包了之後用yum安裝解決依賴性</code>

<code>[root@Redhat6 opt]</code><code>#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</code>

<code>[root@Redhat6 SPECS]</code><code># rpmbuild -ba nginx.spec   #編譯生成rpm包</code>

<code>[root@Redhat6 SPECS]</code><code># cd /root/rpmbuild/</code>

<code>BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS</code>

<code>[root@Redhat6 rpmbuild]</code><code># cd RPMS/</code>

<code>[root@Redhat6 RPMS]</code><code># ls</code>

<code>x86_64</code>

<code>[root@Redhat6 RPMS]</code><code># cd x86_64/</code>

<code>[root@Redhat6 x86_64]</code><code># ls</code>

<code>nginx-1.0.15-5.el6.x86_64.rpm  nginx-debuginfo-1.0.15-5.el6.x86_64.rpm</code>

<code>[root@Redhat6 x86_64]</code><code># rpm -ivh nginx-1.0.15-5.el6.x86_64.rpm</code>

<code>Preparing...                </code><code>########################################### [100%]</code>

<code>   </code><code>1:nginx                  </code><code>########################################### [100%]</code>

<code>[root@Redhat6 x86_64]</code><code># service nginx start</code>

<code>Starting nginx:                                            [  OK  ]</code>

<a target="_blank" href="http://blog.51cto.com/attachment/201307/121821871.png"></a>

通過rpm源碼包安裝的通路已經能夠成功了。

本文轉自 jie783213507 51CTO部落格,原文連結:http://blog.51cto.com/litaotao/1258450,如需轉載請自行聯系原作者