rpm包管理以及前端工具yum

rpm包是什麼?

源代碼  --> 目標二進制格式(二進制程序、庫文件、配置文件、幫助文件) --> 組織成爲一個或有限幾個“包”文件;



目前各主流發行版的軟件包格式以及包管理器

  debian:dpt, dpkg, ".deb"

  redhat: rpm, ".rpm"

  S.u.S.E:rpm, ".rpm",



軟件包命名格式介紹:

wKioL1bqVtyD9GcqAAApGAOQnkA323.png



rpm包的安裝

安裝:rpm {-i|--install} [install-options] PACKAGE_FILE ...


[install-options]:

       -v:verbose,詳細信息

        -vv:更詳細的輸出

-h:hash marks輸出進度條;每個#表示2%的進度;

--test:測試安裝,檢查並報告依賴關係及衝突消息等;

--nodeps:忽略依賴關係;不建議;

--replacepkgs:重新安裝

常用法:rpm  -ivh  PACKAGE_FILE ...

  wKiom1bqWQOxZcq6AAAcfhRNllk155.png





rpm包的升級:

   rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... 升級或安裝

   rpm {-F|--freshen} [install-options] PACKAGE_FILE ...  升級


舉例:rpm  -Uvh PACKAGE_FILE ...

      rpm  -Fvh PACKAGE_FILE ...




rpm包的降級:

        --oldpackage:降級;

         --force:強制升級;




rpm包的卸載

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...


--allmatches:卸載所有匹配指定名稱的程序包的各版本;

--nodeps:忽略依賴關係

--test:測試卸載,dry run模式

wKiom1bqXTHhqh33AAARf8bsQYQ892.png




rpm包的查詢:

      rpm {-q|--query} [select-options] [query-options]

 [select-options]

PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本;

-a, --all:查詢所有已經安裝過的包;

--whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供;

--whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;

[query-options]

--changelog:查詢rpm包的changlog;

--provides:列出指定的程序包提供的所有的CAPABILITY;

-R, --requires:查詢指定的程序包的依賴關係;

--scripts:查看程序包自帶的腳本片斷;

常用組合用法:
-qi  PACKAGE,           -i, --info:程序包相關的信息,版本號、大小、所屬的包組,等;
-qf FILE,               -f  FILE:查詢指定的文件由哪個程序包安裝生成;
-qc PACKAGE,            -c, --configfiles:查詢指定的程序包提供的配置文件;
-ql PACKAGE,            -l, --list:程序安裝生成的所有文件列表;
-qd PACKAGE             -d, --docfiles:查詢指定的程序包提供的文檔;
-qpi  PACKAGE_FILE,     -p, --package PACKAGE_FILE:用於實現對未安裝的程序包執行查詢操作;
-qpl PACKAGE_FILE,    查看未安裝的包可能安裝後的所生成的文件列表
-qpc PACKAGE_FILE, ...


wKiom1bqYQCQBxTAAAAvOCosLYw859.png



rpm包的校驗

rpm {-V|--verify} [select-options] [verify-options]

包來源合法性驗正和完整性驗正:

來源合法性驗正:

完整性驗正:

獲取並導入信任的包製作者的密鑰:

對於CentOS發行版來說:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

驗正:(1) 安裝此組織簽名的程序時,會自動執行驗正;(2) 手動驗正:rpm -K PACKAGE_FILE



rpm包的數據庫重建:

rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]


--initdb:初始化數據庫,當前無任何數據庫可實始化創建一個新的;當前有時不執行任何操作;

--rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建;





                         yum詳解

爲什麼會出現yum?

rpm軟件管理對解決軟件依賴關係有缺陷,yum可以解決軟件依賴關係。



什麼是yum倉庫?

yum repository: yum repo

存儲了衆多rpm包,以及包的相關的元數據文件(放置於特定目錄下:repodata);所在目錄就是yum倉庫的位置



yum倉庫.repo中可指向文件服務器:

ftp://

http://

nfs://

file:///


yum客戶端:

配置文件:

/etc/yum.conf:爲所有倉庫提供公共配置

/etc/yum.repos.d/*.repo:爲倉庫的指向提供配置


yum倉庫指向的定義:

[repositoryID]                       注:倉庫id,不可以重名

name=Some name for this repository   注:描述倉庫的字符

baseurl=url://path/to/repository/    注:指向倉庫的位置

enabled={1|0}                        注:1表示啓用倉庫

gpgcheck={1|0}                       注:1爲啓用包來源合法和完整性檢查

gpgkey=URL                           注:密鑰文件訪問路徑

enablegroups={1|0}                   注:支持組管理

failovermethod={roundrobin|priority} 注:故障轉移,roundrobin爲隨機輪詢 priority爲優先級

默認爲:roundrobin,意爲隨機挑選;

cost=默認爲1000



yum命令的用法:

格式:yum [options] [command] [package ...]


    顯示倉庫列表:

    repolist [all|enabled|disabled]


    顯示程序包:

    list

    # yum list [all | glob_exp1] [glob_exp2] [...]    支持通配glob

      例如: yum list all zsh*

    # yum list {available|installed|updates} [glob_exp1] [...]

    註釋:    available:倉庫中有但尚未安裝

              installed:已經安裝

              updates:可以用的升級



   安裝程序包:

    install package1 [package2] [...]

         update:升級

         update_to:升級爲指定版本

         remove|erase:卸載 例如:yum remove php53-pdo 注:卸載會把依賴的軟件包也一併卸載了

         info相當於rpm -qi 查看軟件信息的。

         provides |whatprovides:查看指定的文件或特性是由哪個包安裝生成的

    reinstall package1 [package2] [...]  (重新安裝)



    downgrade package1 [package2] [...] (降級)


    檢查可用升級:

       check-update


    卸載程序包:

    remove | erase package1 [package2] [...]


    查看程序包information:

    info [...]


    查看指定的特性(可以是某文件)是由哪個程序包所提供:

    provides | whatprovides feature1 [feature2] [...]


    清理本地緩存:

    clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]


    構建緩存:

    makecache


    搜索:

    search string1 [string2] [...]


    以指定的關鍵字搜索程序包名及summary信息;


    查看指定包所依賴的capabilities:

    deplist package1 [package2] [...]


    查看yum事務歷史:

    history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]


   

    包組管理的相關命令:

        * groupinstall group1 [group2] [...]

        * groupupdate group1 [group2] [...]

        * grouplist [hidden] [groupwildcard] [...]

        * groupremove group1 [group2] [...]

        * groupinfo group1 [...]


    如何使用光盤當作本地yum倉庫:

    (1) 掛載光盤至某目錄,例如/media/cdrom

    # mount -r -t iso9660 /dev/cdrom /media/cdrom

    (2) 創建配置文件

    [CentOS7]

    name=

    baseurl=

    gpgcheck=

    enabled=


    yum的命令行選項:

    --nogpgcheck:禁止進行gpg check;

    -y: 自動回答爲“yes”;

    -q:靜默模式;

    --disablerepo=repoidglob:臨時禁用此處指定的repo;

    --enablerepo=repoidglob:臨時啓用此處指定的repo;

    --noplugins:禁用所有插件;


    yum的repo配置文件中可用的變量:


    $releasever: 當前OS的發行版的主版本號;

    $arch: 平臺;

    $basearch:基礎平臺;

    $YUM0-$YUM9


   舉例: http://mirrors.magedu.com/centos/$releasever/$basearch/os




    創建yum倉庫的數據庫文件:

   命令使用格式: createrepo [options] <directory>   


詳解:

   首先要安裝createrepo這個軟件,然後在rpm軟件包所在的目錄執行yum  createrepo 就會創建出一個.repodata 的文件

   然後在/etc/yum.ropos.d/ 下面創建一個.repo結尾的文件,baseurl指向.repodata所在的目錄就可以了。



 


   


&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

知識擴展

  • yum localinstall php53-mysql-5.3.3-5.e15.i386.rpm  注:localinstall 後面需要指向文件,同時也解決了依賴關係



  • 如果從互聯網上下載的rpm包,此時會進行來源和完整性檢查。會報錯的

     yum --nogpgcheck install 文件 注:忽略檢查



  • 創建倉庫的完整過程


1.yum install createrepo

2.mkdir -pv /yum/VT 創建一個目錄來存放軟件,然後往裏名弄點軟件 cp /media/cdrom/VT/*.rpm /yum/VT/

3.cd /etc/yum.repos.d創建一個.repo的文件,並編輯。

   [VT]

   name=VT

   baseurl=file:///yum/VT

   enable=1

   gpgcheck=0

4、createrepo /yum/VT/ 創建 repomd.xml文件

5、yum clean all 清理緩存

6、yum repolist 檢查一下庫列表

7、cp /comps-rhel5-vt.xml /root

8、createrepo -g /root/comps-rhel5-vt.xml /yum/VT/






  • 下載新的CentOS-Base.repo 到/etc/yum.repos.d/

CentOS 5

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo

CentOS 6

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

CentOS 7

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo


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