軟件包管理(rpm篇)

軟件包管理(rpm篇)
靜態和動態鏈接
    鏈接主要作用是把各個模塊之間相互引用的部分處理好,使得各個模塊之間能夠正確地銜接,分為靜態鏈接和動態鏈接
    靜態鏈接
        把程序對應的依賴庫復制一份到包
        libxxx.a
        嵌入程序包
        升級難,需重新編譯
        占用較多空間,遷移容易
    動態鏈接
        只把依賴加做一個動態鏈接
        libxxx.so
        “連接指向”
        占用較少空間,升級方便
包命名
源代碼:name-VERSION.tar.gz|bz2|xz
         VERSION: major.minor.release
    rpm包命名方式:
          name-VERSION-release.arch.rpm
   例:bash-4.2.46-19.el7.x86_64.rpm
       VERSION: major.minor.release
       release:release.OS
       常見的arch:
        x86: i386, i486, i586, i686
        x86_64: x64, x86_64, amd64powerpc: ppc
        跟平臺無關:noarch
包:分類和拆包
    Application-VERSION-ARCH.rpm: 主包
    Application-devel-VERSION-ARCH.rpm開發子包
    Application-utils-VERSION-ARHC.rpm其它子包
    Application-libs-VERSION-ARHC.rpm其它子包
包之間:可能存在依賴關系,甚至循環依賴
解決依賴包管理工具:
    yum:rpm包管理器的前端工具
    apt-get:deb包管理器前端工具
    zypper: suse上的rpm前端管理工具
    dnf: Fedora 18+ rpm包管理器前端管理工具        
庫文件
    查看二進制程序所依賴的庫文件
ldd/PATH/TO/BINARY_FILE
    管理及查看本機裝載的庫文件
ldconfig
/sbin/ldconfig-p: 顯示本機已經緩存的所有可用庫文件名及文件路徑映射關系
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/.conf
緩存文件:/etc/ld.so.cache
包管理器
    程序包管理器:
    功能:將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、升級和校驗等管理操作
    1、包文件組成(每個包獨有)
    RPM包內的文件
    RPM的元數據,如名稱,版本,依賴性,描述等
    安裝或卸載時運行的腳本
    2、數據庫(公共):/var/lib/rpm
    程序包名稱及版本
    依賴關系
    功能說明
包安裝后生成的各文件路徑及校驗碼信息
    管理程序包的方式:
    使用包管理器:rpm
    使用前端工具:yum, dnf
rpm包管理
  CentOS系統上使用rpm命令管理程序包:
  安裝、卸載、升級、查詢、校驗、數據庫維護
安裝:
    rpm {-i|–install} [install-options] PACKAGE_FILE…
    -v: verbose
    -vv:
    -h: 以#顯示程序包管理執行進度
    rpm -ivhPACKAGE_FILE …
    rpm包安裝
   [install-options]
    –test: 測試安裝,但不真正執行安裝,即dry run模式
    –nodeps:忽略依賴關系
    –replacepkgs| replacefiles
    –nosignature: 不檢查來源合法性
    –nodigest:不檢查包完整性
    –noscripts:不執行程序包腳本
    %pre: 安裝前腳本;–nopre
    %post: 安裝后腳本;–nopost
    %preun: 卸載前腳本;–nopreun
    %postun: 卸載后腳本;–nopostun
rpm包升級
升級:
    rpm {-U|–upgrade} [install-options] PACKAGE_FILE…
    rpm {-F|–freshen} [install-options] PACKAGE_FILE…
    upgrade:安裝有舊版程序包,則“升級”
                  如果不存在舊版程序包,則“安裝”
    freshen:安裝有舊版程序包,則“升級”
                 如果不存在舊版程序包,則不執行升級操作
    rpm -UvhPACKAGE_FILE …
    rpm -FvhPACKAGE_FILE …
    –oldpackage:降級
    –force: 強制安裝
包查詢
    rpm {-q|–query} [select-options] [query-options]
    [select-options]
     -a: 所有包
     -f: 查看指定的文件由哪個程序包安裝生成
     -p rpmfile:針對尚未安裝的程序包文件做查詢操作
     –whatprovidesCAPABILITY:查詢指定的CAPABILITY由哪個包所提供
     –whatrequiresCAPABILITY:查詢指定的CAPABILITY被哪個包所依賴
    rpm2cpio 包文件|cpio–itv預覽包內文件
    rpm2cpio 包文件|cpio–id “
.conf”釋放包內文件
    [query-options]
     –changelog:查詢rpm包的changelog
  c卸載后腳本;–nopostun: 查詢程序的配置文件
     -d: 查詢程序的文檔
     -i: information
     -l: 查看指定的程序包安裝后生成的所有文件
     –scripts:程序包自帶的腳本
     –provides: 列出指定程序包所提供的CAPABILITY
     -R: 查詢指定的程序包所依賴的CAPABILITY
  常用查詢用法:
     -qi PACKAGE, -qfFILE, -qc PACKAGE, -qlPACKAGE, -qdPACKAGE
     -qpiPACKAGE_FILE, -qplPACKAGE_FILE, …
     -qa
包卸載:
      rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …
包校驗
    rpm {-V|–verify} [select-options] [verify-options]
    S file Size differs
    M Mode differs (includes permissions and file type)
    5 digest (formerly MD5 sum) differs
    D Device major/minor number mismatch
    L readLink(2) path mismatch
    U User ownership differs
    G Group ownership differs
    T mTimediffers
    P capabilities differ     
包來源合法性驗正及完整性驗正
    完整性驗正:SHA256
    來源合法性驗正:RSA
公鑰加密
    對稱加密:加密、解密使用同一密鑰
    非對稱加密:密鑰是成對兒的
    public key: 公鑰,公開所有人
    secret key: 私鑰, 不能公開
導入所需要公鑰
    rpm -K|checksigrpmfile檢查包的完整性和簽名
    rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    CentOS 7發行版光盤提供:RPM-GPG-KEY-CentOS-7
    rpm -qa“gpg-pubkey*”
    rpm數據庫
數據庫重建:
    /var/lib/rpm
    rpm {–initdb|–rebuilddb}
    initdb: 初始化
    (如果事先不存在數據庫,則新建之否則,不執行任何操作)
    rebuilddb:重建已安裝的包頭的數據庫索引目錄

原創文章,作者:木,如若轉載,請注明出處:http://www.www58058.com/74084

(0)
木
上一篇 2017-04-24 19:15
下一篇 2017-04-24 19:37

相關推薦

  • [轉]百萬級訪問網站前期的技術準備

       [轉]百萬級訪問網站前期的技術準備 開了自己域名的博客,第一篇就得來個重磅一點的才對得起這4美金的域名。作為一個技術從業者十年,逛了十年發現有些知識東一榔頭西一棒槌的得滿世界  看個遍才整理出個頭緒,那咱就系統點的從頭一步一步的說,一個從日幾千訪問的小小網站,到日訪問一兩百萬的小網站,怎么才能讓它平滑的度過這個階段,別在 …

    Linux干貨 2016-10-29
  • Bash 三種排序算法的簡單實現

    Bash 三種排序算法的簡單實現

    2017-07-09
  • bash特性

    一、命令歷史     概念:shell進程能夠將之前執行過的命令保存記錄下來     存儲位置:         1、命令歷史的文件             使用以下環境變量查看相關參數:     &…

    Linux干貨 2016-09-19
  • 8-10 bash變量淺談

    8-10 作業 一、腳本 1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 2、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中 3、編寫腳本/root/bin/disk.…

    Linux干貨 2016-08-15
  • 利用heartbeat v2版搭建高可用mysql

    一、實驗環境  1)實驗圖        2)同步時間;確??梢允褂弥鳈C名通信;確??梢允褂胹sh秘鑰方式進行彼此登錄;由于是兩臺設備,需要仲裁;  確??梢允褂弥鳈C名通信 web1修改hosts文件如下: 172.16.2.12 SQL1.linux.com SQL1 172.…

    Linux干貨 2015-07-08
  • 編譯安裝Linux內核

    實驗前準備:在https://www.kernel.org/下載內核 這里我們下載的是:linux-4.14.10.tar.xz du -sh /app/linux.tar/ 此命令可查看內核文件大小 編譯完成后/lib/modules下會生成4.14.10版的內核 1,tar xvf linux-4.14.10.tar.xz -C /app/解壓縮準備好的…

    2018-01-03

評論列表(1條)

  • renjin
    renjin 2017-04-28 12:05

    詳細的介紹了rpm包的安裝使用,內容總結的很詳細,也可以適當的加入一些實驗流程進來,注意一下排版

欧美性久久久久