天天看點

rpm包管理及yum指令以及建立yum倉庫

本文章為原創,如有轉載,請注明出處

1. yum指令

yum 指令:用于添加/删除/更新RPM包,自動解決包的依賴問題以及系統更新更新

參數

-e [error level], --errorlevel=[error level] 錯誤輸出級别
-q, --quiet 安靜的操作
-t 忽略錯誤
-R[分鐘] 設定等待時間
-y 自動應答yes
--skip-broken 忽略依賴問題
--nogpgcheck 忽略GPG驗證

check-update 檢查可更新的包
clean all 清除全部
clean packages 清除臨時封包件(/var/cache/yum 下檔案)
clean headers 清除rpm頭檔案
clean oldheaders 清除舊的rpm頭檔案
deplist 列出包的依賴
list 可安裝和可更新的RPM包
list installed 已安裝的包
list extras 已安裝且不在資源庫的包
info 可安裝和可更新的RPM包 資訊
info installed 已安裝包的資訊(-qa 參數相似)
install[RPM包] 安裝包
localinstall 安裝本地的 RPM包
update[RPM包] 更新包
upgrade 更新系統
search[關鍵詞] 搜尋包
provides[關鍵詞] 搜尋特定封包件名
reinstall[RPM包] 重新安裝包
repolist 顯示資源庫的配置
resolvedep 指定依賴
remove[RPM包] 解除安裝包           
  1. 例子

1,安裝

[root@localhost ~]# yum install php53        #安裝php5.3

[root@localhost ~]# yum groupinstall "MySQL Server"    #安裝mysql資料庫組           

2,更新和更新

[root@localhost ~]# yum update              #全部更新

[root@localhost ~]# yum update  php53       #更新php

[root@localhost ~]# yum check-update        #檢查可更新的程式

[root@localhost ~]# yum upgrade php53       #更新php53

[root@localhost ~]# yum groupupdate "MySQL Server"    #更新mysql服務組           

3,查找和顯示

[root@localhost ~]# yum info php53          #檢視php53的安裝資訊

[root@localhost ~]# yum list                #列出所有可安裝的程式包

[root@localhost ~]# yum list php53         #列出所有php53的程式包

[root@localhost ~]# yum groupinfo "MySQL Server"    #檢視mysql服務組的,相關安裝包

[root@localhost ~]# yum deplist php53      #檢視php53依賴情況           

4,删除

[root@localhost ~]# yum remove php53          #删除php53

[root@localhost ~]# yum groupremove "MySQL Server"    #删除mysql服務組           

5,清除緩存

[root@localhost ~]# yum clean packages            #清除緩存目錄下的軟體包

[root@localhost ~]# yum clean headers             #清除緩存目錄下的 headers

[root@localhost ~]# yum clean oldheaders          #清除緩存目錄下舊的 headers

[root@localhost ~]# yum clean, yum clean all      #清除所有           

2. rpm

rpm是一個功能十分強大的軟體包管理系統,它使得在Linux下安裝、更新和删除軟體包的工作變得容易,并且具有查詢、驗證軟體包的功能。與圖形化工具相比,使用指令行可以獲得更大的靈活性。以下的例子都以example-1.2.3-1.i386.rpm代表對象軟體包的名稱           
  1. 安裝選項
指令格式: 
rpm -i ( or --install) options file1.rpm ... fileN.rpm 

參數: 
file1.rpm ... fileN.rpm 将要安裝的RPM包的檔案名 

詳細選項: 

-h (or --hash) 安裝時輸出hash記号 (``#'') 
--test 隻對安裝進行測試,并不實際安裝。 
--percent 以百分比的形式輸出安裝的進度。 
--excludedocs 不安裝軟體包中的文檔檔案 
--includedocs 安裝文檔 
--replacepkgs 強制重新安裝已經安裝的軟體包 
--replacefiles 替換屬于其它軟體包的檔案 
--force 忽略軟體包及檔案的沖突 
--noscripts 不運作預安裝和後安裝腳本 
--prefix 将軟體包安裝到由 指定的路徑下 
--ignorearch 不校驗軟體包的結構 
--ignoreos 不檢查軟體包運作的作業系統 
--nodeps 不檢查依賴性關系 
--ftpproxy 用 作為 FTP代理 
--ftpport 指定FTP的端口号為 

通用選項 

-v 顯示附加資訊 
-vv 顯示更加詳細的資訊
--root 讓RPM将指定的路徑做為"根目錄",這樣預安裝程式和後安 
裝程式都會安裝到這個目錄下 
--rcfile 設定rpmrc檔案為 
--dbpath 設定RPM 資料庫存所在的路徑為            
  1. 删除選項
指令格式: 
rpm -e ( or --erase) options pkg1 ... pkgN 

參數 
pkg1 ... pkgN :要删除的軟體包 

詳細選項 

--test 隻執行删除的測試 
--noscripts 不運作預安裝和後安裝腳本程式 
--nodeps 不檢查依賴性 

通用選項 

-vv 顯示調試資訊 
--root 讓RPM将指定的路徑做為"根目錄",這樣預安裝程式和後安裝 
程式都會安裝到這個目錄下 
--rcfile 設定rpmrc檔案為 
--dbpath 設定RPM 資料庫存所在的路徑為            
  1. 更新選項
指令格式 
rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm 

參數 
file1.rpm ... fileN.rpm 軟體包的名字 

詳細選項 

-h (or --hash) 安裝時輸出hash記号 (``#'') 
--oldpackage 允許"更新"到一個老版本 
--test 隻進行更新測試 
--excludedocs 不安裝軟體包中的文檔檔案 
-F, --freshen=+     如果軟體包已經安裝,更新軟體包
--includedocs 安裝文檔 
--replacepkgs 強制重新安裝已經安裝的軟體包 
--replacefiles 替換屬于其它軟體包的檔案 
--force 忽略軟體包及檔案的沖突 
--percent 以百分比的形式輸出安裝的進度。 
--noscripts 不運作預安裝和後安裝腳本 
--prefix 将軟體包安裝到由 指定的路徑下 
--ignorearch 不校驗軟體包的結構 
--ignoreos 不檢查軟體包運作的作業系統 
--nodeps 不檢查依賴性關系 
--ftpproxy 用 作為 FTP代理 
--ftpport 指定FTP的端口号為 

通用選項 

-v 顯示附加資訊 
-vv 顯示調試資訊 
--root 讓RPM将指定的路徑做為"根目錄",這樣預安裝程式和後安裝程式都會安裝到這個目錄下 
--rcfile 設定rpmrc檔案為 
--dbpath 設定RPM 資料庫存所在的路徑為            
  1. 查詢選項
指令格式: 

rpm -q ( or --query) options 

參數: 
pkg1 ... pkgN :查詢已安裝的軟體包 

詳細選項 
-p (or ``-'') 查詢軟體包的檔案 
-f 查詢屬于哪個軟體包 
-a 查詢所有安裝的軟體包 
--whatprovides 查詢提供了 功能的軟體包 
-g 查詢屬于 組的軟體包 
--whatrequires 查詢所有需要 功能的軟體包 

資訊選項 

顯示軟體包的全部辨別 
-i 顯示軟體包的概要資訊 
-l 顯示軟體包中的檔案清單 
-c 顯示配置檔案清單 
-d 顯示文檔檔案清單 
-s 顯示軟體包中檔案清單并顯示每個檔案的狀态 
--scripts 顯示安裝、解除安裝、校驗腳本 
--queryformat (or --qf) 以使用者指定的方式顯示查詢資訊 
--dump 顯示每個檔案的所有已校驗資訊 
--provides 顯示軟體包提供的功能 
--requires (or -R) 顯示軟體包所需的功能 

通用選項 

-v 顯示附加資訊 
-vv 顯示調試資訊 
--root 讓RPM将指定的路徑做為"根目錄",這樣預安裝程式和後安裝程式都會安裝到這個目錄下 
--rcfile 設定rpmrc檔案為 
--dbpath 設定RPM 資料庫存所在的路徑為            
  1. 校驗已安裝的軟體包
指令格式: 

rpm -V ( or --verify, or -y) options 

參數 
pkg1 ... pkgN 将要校驗的軟體包名 

軟體包選項 

-p Verify against package file 
-f 校驗所屬的軟體包 
-a Verify 校驗所有的軟體包 
-g 校驗所有屬于組 的軟體包 

詳細選項 

--noscripts 不運作校驗腳本 
--nodeps 不校驗依賴性 
--nofiles 不校驗檔案屬性 

通用選項 

-v 顯示附加資訊 
-vv 顯示調試資訊 
--root 讓RPM将指定的路徑做為"根目錄",這樣預安裝程式和後安裝程式都會安裝到這個目錄下 
--rcfile 設定rpmrc檔案為 
--dbpath 設定RPM 資料庫存所在的路徑為           
  1. 校驗軟體包中的檔案
文法: 

rpm -K ( or --checksig) options file1.rpm ... fileN.rpm 

參數: 
file1.rpm ... fileN.rpm 軟體包的檔案名 
Checksig--詳細選項 
--nopgp 不校驗GPG簽名 

通用選項 

-v 顯示附加資訊 
-vv 顯示調試資訊 
--rcfile 設定rpmrc檔案為            
  1. 其它rpm選項
--rebuilddb 重建RPM資料庫 
--initdb 建立一個新的RPM資料庫 
--quiet 盡可能的減少輸出 
--help 顯示幫助檔案 
--version 顯示RPM的目前版本           
[root@localhost ~]# rpm -ivh ipchains-1.3.6-1.i386.rpm     #安裝包,并顯示詳細進度
[root@localhost ~]# rpm -i ftp://ftp.xxx.xxx            #線上安裝
[root@localhost ~]# rpm -Va                            #校驗所有的rpm包,查找丢失的檔案
[root@localhost ~]# rpm -qf /usr/bin/who               #查找一個檔案屬于哪個rpm包
[root@localhost ~]# rpm -qpi mon-0.37j-1.i386.rpm     #列出一個rpm包的描述資訊
[root@localhost ~]# rpm -qpl mon-0.37j-1.i386.rpm            #列出一個rpm包的檔案資訊
[root@localhost ~]# rpm -Uvh ipchains-1.3.6-1.i386.rpm            #更新包
[root@localhost ~]# rpm -q  httpd               #檢視httpd的安裝包
[root@localhost ~]# rpm -e  httpd               #移除安裝包
[root@localhost ~]# rpm -qi httpd             #得到httpd安裝包的資訊
Name        : httpd                        Relocations: (not relocatable)
Version     : 2.2.3                             Vendor: CentOS
Release     : 45.el5.centos.1               Build Date: 2011年05月04日 星期三 18時54分56秒
Install Date: 2011年06月29日 星期三 08時05分34秒      Build Host: builder10.centos.org
Group       : System Environment/Daemons    Source RPM: httpd-2.2.3-45.el5.centos.1.src.rpm
Size        : 3281960                          License: Apache Software License
Signature   : DSA/SHA1, 2011年05月04日 星期三 20時31分28秒, Key ID a8a447dce8562897
URL         : http://httpd.apache.org/
Summary     : Apache HTTP 伺服器
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
[root@localhost ~]# rpm -ql httpd            #列出httpd中有哪些檔案
[root@localhost ~]# rpm -qa                  #列出所有已安裝的包           

3. createrepo

createrepo用以建立yum源(軟體倉庫),即為存放于本地特定位置的衆多rpm包建立索引,描述各包所需依賴資訊,并形成中繼資料

  1. 基本用法
基本文法:createrepo [option] <directory>

常用參數詳解
    -u  --baseurl <url>
        指定Base URL的位址

    -o --outputdir <url>
        指定中繼資料的輸出位置

    -x --excludes <packages>
        指定在形成中繼資料時需要排除的包

    -i --pkglist <filename>
        指定一個檔案,該檔案内的包資訊将被包含在即将生成的中繼資料中,格式為每個包資訊獨占一行,不含通配符、正則,以及範圍表達式。

    -n --includepkg
        通過指令行指定要納入本地庫中的包資訊,需要提供URL或本地路徑。

    -q --quiet
        安靜模式執行操作,不輸出任何資訊。

    -g --groupfile <groupfile>
        指定本地軟體倉庫的組劃分,範例如下:
     createrepo -g comps.xml /path/to/rpms
        注意:組檔案需要和rpm包放置于同一路徑下。

    -v --verbose
        輸出詳細資訊。
    -c --cachedir <path>
        指定一個目錄,用作存放軟體倉庫中軟體包的校驗和資訊。當createrepo在未發生明顯改變的相同倉庫檔案上持續多次運作時,指定cachedir會明顯提高其性能。
    --update
        如果中繼資料已經存在,且軟體倉庫中隻有部分軟體發生了改變或增減,則可用update參數直接對原有中繼資料進行更新,效率比重新分析rpm包依賴并生成新的中繼資料要高很多。

    -p --pretty
        以整潔的格式輸出xml檔案。
    -d --database
        該選項指定使用SQLite來存儲生成的中繼資料,預設項。           
$ mkdir -p /yum/centos/6/      #建立本地源目錄

$ createrepo -p -d -o /yum/centos/6/ix86_64 /yum/centos/6/ix86_64   #初始化源目錄,産生repodata           

4. rpm和srpm

RPM: RedHat Package Manager

優點:

  1. 由于已經編譯完成并且打包完畢,是以軟體傳輸與安裝上很友善
  2. 由于軟體資訊都已經記錄在Linux主機的資料庫上,很友善查詢,更新,解除安裝。

缺點:

  1. 軟體安裝環境必須跟打包時的環境需求一緻或者相當。
  2. 需要滿足軟體的依賴屬性需求
  3. 解除安裝的時候需要小心,最底層不能先删除,否則會造成系統問題。也就是最後安裝先解除安裝。

SRPM: Source RPM

使用必須将該軟體以RPM管理的方式先編譯,此時SRPM會編譯成RPM檔案。

檔案格式 檔案名格式 直接安裝與否 内含程式類型 可否修改參數并編譯
RPM xxx.rpm 已編譯 不可
SRPM xxx.src.rpm 未編譯的源代碼

rp-xxxx - 3.1 - 5 .i386 .rpm

軟體名稱 軟體的版本資訊 釋出次數 硬體平台 擴充名

5. spec檔案

參考資料