程序包管理器

程序包管理器:
源代碼 --> 目標二進制格式(二進制程序,庫文件,配置文件,幫助文件)-->組織成爲一個或有限幾個“包”文件;
安裝,升級,卸載,查詢,校驗

安裝: -ivh, --nodeps, --replacepkgs
卸載: -e, --nodeps
升級:-Uvh , -Fvh , --nodeps, --lodpackage
查詢:-q, -qa , -qf , -qi , -qd , -qc ,-q --scripts,  -q --changlog, -q --provides, -q --requires
校驗:-V

    程序包管理器:

                debian : dpt, dpkg, ".deb"
                redhat: rpm
                S.U.S.E: rpm

                Gentoo: ports
                Archlinux:

        源代碼:name-VERSION.tar.gz
                VERSION:major.minor.release

            rpm包命名格式:
                     name-VERSION-release.arch.rpm
                             VERSION:major.minor.release
                             release.arch:rpm包的發行號
                                     relae.os:2.ei7.i386.rpm
                                     archetecture:i386,x64(amd64),ppc,noarch

                            redis-3.0.2.targz -->   redis-3.0.2-1.centos7.x64.rpm

        拆包: 主包和支包
                    主包:name-VERSION-release.arch.rpm
                    支包:name-function-VERSION-release.arch.rpm

前端工具:自動解決依賴關係;
yum:rhel系列系統上rpm包管理器的前端工具;
apt-get(apt-cache):deb包管理器的前端工具;
zypper:suse的rpm管理器的前端工具;
dnf:Fedord 22+ 系統上rpm包管理器的前端工具;


程序包管理器:
                功能:將編譯好的應用程序的各組成文件打包成一個或幾個程序包文件,從而更方便地實現程序包的安裝,升級,卸載和查詢等管理操作;

        1.程序包的組成清單(每個程序包都單獨實現);
                    文件清單
                    安裝或卸載時運行的腳本
            2.數據庫(公共)
                        程序包的名稱和版本
                        依賴關係
                        功能說明
                        安裝生成的各文件的文件路徑及校驗碼信息

rpm包的數據庫
[root@Centos7ip11 ~]# ls /var/lib/rpm
Basenames db.002 Group Obsoletename Requirename Triggername
Conflictname
db.003 Installtid Packages Sha1header
__db.001 Dirnames Name Providename Sigmd5

獲取程序包的途徑:
1.系統發行版的光盤或官方的文件服務器(或鏡像站點);
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirors.163.com

            2.項目的官方站點
            3.第三方組織
                        a.EPEL
                        b.搜索引擎
                                        https://pkgs.org/
                                        http://www.rpmfind.net
                                        http://rpm.pbone.net
                4.自動動手,

建議:檢查其合法性
            來源合法性
            程序包的完整性

Centos系統上rpm命令管理程序包:
安裝,升級,卸載,查詢和校驗,數據庫維護

http://www.runoob.com/linux/linux-comm-rpm.html

安裝: [root@Centos7ip11 ~]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm

                rpm命令: 

                        選項: 

                                安裝:-i, --install 
                                升級:-U,--update, -F,--freshen
                                卸載:-e,--erase
                                查詢:-q,--query
                                校驗:-V,--verify
                                數據庫維護:--builddb,--initdb

                                -h: bash marks輸出進度條;每個#表示2%的進度;
                                --test:測試安裝,檢查並報告依賴關係及衝突消息等;
                                --nodeps:忽略依賴關係;不建議;
                                --replacepkgs:重新安裝

                                注意:rpm可以自帶腳本;
                                            四類: 都不執行 --noscripts
                                                    preinstall:安裝過程開始之前運行的腳本,%pre , --nopre
                                                    postinstall:安裝過程完成之後運行的腳本,%post , --nopost
                                                    preuninstall:卸載過程真正開始執行之前運行的腳本,%preun , -- nopreun
                                                    postuninstall:卸載過程完成之後運行的腳本,%postun , --nopostun

                                                    --nosignature:不檢查包簽名信息,不檢查來源合法性;
                                                    --nodigest:不檢查包完整性信息;

升級:

                        [root@Centos7ip11 ~]# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm 
                        [root@Centos7ip11 ~]# rpm -Fvh zsh-5.0.2-28.el7.x86_64.rpm

                選項:
                        -U : 升級或安裝;
                        -F:升級

                            --oldpackage :降級;
                            --force:強制升級;

            注意:
                1.不要對內核做升級操作;linux支持多內核版本並存,因此,直接安裝新版本內核;
                2.如果某原程序包的配置文件安裝後曾被修改過,升級時,新版本的程序提供的同一個牌子文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)後提供;

    卸載:

            選項:
                    -e, --erase:卸載
                    --allmatches:卸載所有匹配指定名稱的程序包的各版本;
                    --nodeps:忽略依賴關係
                    --test:測試卸載,dry run模式

實例:
[root@Centos7ip11 ~]# rpm -q zsh
zsh-5.0.2-28.el7.x86_64
[root@Centos7ip11 ~]# rpm -e zsh


查詢:
rpm {-q|--query} [select-options] [query-options]

        選項:

        [select-options]

                -a, --all:查詢所有已經安裝過的包;
                -f FILE:查詢指定的文件由哪個程序包安裝生成;
                -p,--package PACKAGE_FILE:用於實現對未安裝的程序包執行查詢操作;

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

    [query-options] 
                        --changelog:查詢rpm包的changlog;
                        -l,--list:程序安裝生成的所有文件列表;
                        -i,--info:程序包相關的信息,版本號,大小,所屬的包組,等;
                        -c,--configfiles:查詢指定的程序提供的配置文件;
                        -d,--docfiles:查詢指定的程序包提供的文檔;
                        -provides:列出指定的程序包提供的所有的CAPABILITY;
                        -R,--requires:查詢指定的程序包的依賴關係;
                        --scripts:查看程序包自帶的腳本片段;

    用法:
            -qi
            -qf
            -qc
            -ql
            -qd
            -qpi
            -qpl

實例:

                [root@Centos7ip11 ~]# rpm -q --whatprovides bash
                bash-4.2.46-31.el7.x86_64

                [root@Centos7ip11 ~]# rpm -q --provides bash
                /bin/bash
                /bin/sh
                bash = 4.2.46-31.el7
                bash(x86-64) = 4.2.46-31.el7
                config(bash) = 4.2.46-31.el7

校驗:
rpm -V|-y|--verify [verify-options]

                     5      MD5校驗和

                     S      文件大小

                     L      符號連接

                     T      修改時間

                     D      設備

                     U      用戶

                     G      組

                     M      模式(包括許可和文件類型)

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

                        來源合法性驗證:
                        完整性驗證:

                獲取並導入信任的包製作者的密鑰:
                                對於CentOS發行版來說:rpm --import  /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

                驗證:
                        1.安裝此組織簽名的程序時,會自動執行驗證;
                        2.手動驗證:rpm -k PACKAGE_FILE

數據庫重建:
rpm管理器數據庫路徑:/var/lib/rpm/
查詢操作:通過此處的數據庫進行;

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

              對這些模式唯一的選項是--dbpath

              --initab: 初始化數據庫,當前無任何數據庫可實現初始化創建一個新的;當前有時不執行任何操作;
                --rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建;

                    ~]# rpm --initdb --dbpath=/tmprpm 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章