軟件包管理–RPM YUM

包管理器

二進制應用程序的組成部分

二進制文件,配置文件,說明文檔,庫文件

程序包管理器

Debian  deb文件  dpkg包管理器

Redhat  rpm文件  rpm包管理器

blob.png                    

庫文件lib

查看二進制程序以來的庫文件

ldd /path/binary_file

查看本機裝載的庫文件

ldconfig –p 顯示本機已經緩存的所有可用的庫文件名及文件路徑映射關系

配置文件 /etc/ld.so.conf  /etc/ld.so.conf.d/*.conf

緩存文件 /etc/ld.so.cache

blob.png

程序包管理器

將編譯好的應用程序的各組成文件打包成一個程序包文件,從而方便快捷的實現程序包的安裝,卸載,查詢,升級和校驗等管理操作

1.包文件組成

RPM包內的文件

RPM的元數據,如名稱,版本,依賴性,描述等

安裝或卸載時運行的腳本

2.數據庫(公共)

程序包名稱及版本

依賴關系

功能說明

安裝后生成的各文件路徑和校驗碼信息

 

RPM包管理

  rpm {-i|–install} [install-options] package

      -v verbose

       -vv 更加詳細的信息

       -h 顯示程序包執行的進度

       [install-options]

–test 測試安裝,僅僅只是測試,不安轉

–nodeps 忽略依賴關系

–replacepkgs | replacefiles

replacepkgs 安裝包,即使包已經安裝也會再次安裝

replacefiles 安裝包,即使包中的一些文件已經被其他包安裝過,也會再次覆蓋安裝

–nosignature 不檢查來源合法性

–nodigest 不檢查包完整性

–noscripts 不執行包中腳本片段

%pre 安裝前腳本 –nopre

%post 安裝后腳本 –nopost

%preun 卸載前腳本 –nopreun

%postun 卸載后腳本 –nopostun

blob.png

 

RPM升級

     rpm {-U|–upgrade} [install-options] package

     rpm {-F | –freshen} [install-options] package

     upgrade 安裝有舊版本程序,則升級

         安裝前不存在舊版本程序,則安裝

     freshen 安裝有舊版本程序,則升級

         安裝前不存在舊版本程序,則不執行操作

       –oldpackage 降級

       –force 強行升降級

RPM包查詢

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

     [select-options]

-a 所有包

-f 查看指定文件有哪個程序包生成

-p rpmfile 針對未安裝的包進行查詢操作

–whatprovides capability 查詢指定capability由哪個包提供

–whatrequires capability 查詢指定capability被哪些包依賴

 rpm2cpio 包文件| cpio –itv 預覽包內文件

 rpm2cpio 包文件| cpio –id 釋放包內文件(當某個程序文件被誤刪,可以使用此命令進行恢復)

 blob.png

 blob.png


 [query-options]

–changelog 查詢rpm包的changelog

-c 查詢程序的配置文件

-d 查詢程序的文檔

-i 查詢information

-l查看指定程序包生成的所有文件

–scripts 程序包自帶的腳本片段

-R 查詢指定程序包所依賴的capability

–provides 列出指定程序包所提供的capability

blob.png

RPM包的校驗

    rpm {-V|–verity} [select-options] [verity-options]

S  file size differs

M mode differs

5 digest differs

D device major/minor number mismatch

L readLink path mismatch

U user ownership differs

G group ownership differs

T mtime differs

P capability differ

rpm –K|chechsig rpmfile  檢查包的完整性和簽名

         rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

    導入的是一個gpg加密的文件,通過檢驗安裝包內的簽名與該文件中的簽名是否一致,來確定來源的合法性

RPM數據庫

    /var/lib/rpm

    rpm {–initdb|–rebuilddb}

       initdb 初始化

       如果事先不存在,則新建

       否則,不執行草走

       Rebuilddb 重建

       無論存在還是不存在,都重建數據庫

 

YUMyellowdog update modifier

   Yum用來解決軟件包之間的依賴關系,可以在多個庫之間定位軟件包

   yum repositoryyum repo 存儲了眾多的rpm包,以及包的相關的元數據文件(放置在特定目錄repodata下)

yum客戶端配置文件

   /etc/yum.conf 為所有的倉庫提供公共配置

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

   blob.png               

          

YUM-CONFIG-MANAGER

   yum-config-manager  –disable ”倉庫名“  禁用倉庫

   yum-config-manager  –enable ”倉庫名“  啟用倉庫

 

         顯示倉庫列表

                   repolist [all|enabled|disable]

         顯示程序包

                   list

         安裝程序包

                   install package1 [package2] […] 最多一次支持5

                   reinstall package1 [package2] […] 重新安裝

         升級程序包

                   update [package1] [package2] […]

                   downgrade package1 [package2] [… ] 降級

         檢查可用升級

                   check-update

         卸載程序包

                   remove | erase package1 [package2] […]

         查看程序包信息

                   Info […]

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

                   provides | whatprovides feature1 [feature2] […]

         清楚本地緩存

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

         構建緩存

                   makecache

         搜索 search string1 [string2] […]

         blob.png         

         查看指定包所依賴的capability

              deplist package1 [package2] […]

         查看YUM事務歷史

             History [info| list|package-list|package-info |summary | addon-info| redo |undo ]

         日志

             /var/log/yum.log

          blob.png

YUM的命令行選項

         –nogpgcheck 禁止進行gpg check

         -y 自動回答yes

         -q 靜默模式

         –disablerepo=repoidglob 臨時禁用此處指定的repo

         –enablerepo=repoidglob 臨時啟用此處指定的repo

         –noplugins 禁用所有插件

 


SHELL編程之SELETE軟件包管理--RPM  YUM

selete循環與菜單:主要用于創建菜單,按數字數序排列的菜單項將顯示在標準錯誤上,             并顯示PS3提示符,等待用戶輸入,用戶輸入菜單列表中的某個數字,             執行相應的命令,用戶輸入被保存在內置變量REPLY中。

blob.pngblob.png


函數FUNCTION

  Function是由若干個shell命令組成的語句塊,實現代碼的重用和模塊化的編程,它與shell程序形式上是相似的,不同的是它不是一個單獨的進程,必能獨立運行,而是shell一部分

  函數與shell區別在于:

     shell程序在sehll中運行

    shell函數在當前shell中運行   

  

  函數定義

    函數由兩部分組成:函數名和函數體

    1.

        function name {

            函數體

        }  

    2.

        function name () {

            函數體

        }

    3.

        name () {

            函數體

        }

blob.png

blob.pngblob.png

習題

1、1、編寫服務腳本/root/bin/testsrv.sh,完成如下要求

(1) 腳本可接受參數:start, stop, restart, status

(2) 如果參數非此四者之一,提示使用格式后報錯退出

(3) 如是start:則創建/var/lock/subsys/SCRIPT_NAME, 并顯示“啟動成功”

考慮:如果事先已經啟動過一次,該如何處理?

(4) 如是stop:則刪除/var/lock/subsys/SCRIPT_NAME, 并顯示“停止完成”

考慮:如果事先已然停止過了,該如何處理?

(5) 如是restart,則先stop, 再start

考慮:如果本來沒有start,如何處理?

(6) 如是status, 則如果/var/lock/subsys/SCRIPT_NAME文件存在,則顯示“SCRIPT_NAMEis running…”

如果/var/lock/subsys/SCRIPT_NAME文件不存在,則顯示“SCRIPT_NAME is stopped…”

其中:SCRIPT_NAME為當前腳本名

blob.png

blob.png

2、編寫腳本/root/bin/copycmd.sh

(1) 提示用戶輸入一個可執行命令名稱;

(2) 獲取此命令所依賴到的所有庫文件列表

(3) 復制命令至某目標目錄(例如/mnt/sysroot)下的對應路徑下;

如:/bin/bash ==> /mnt/sysroot/bin/bash

/usr/bin/passwd==> /mnt/sysroot/usr/bin/passwd

(4) 復制此命令依賴到的所有庫文件至目標目錄下的對應路徑下:

如:/lib64/ld-linux-x86-64.so.2 ==> /mnt/sysroot/lib64/ld-linux-x86-64.so.2

(5)每次復制完成一個命令后,不要退出,而是提示用戶鍵入新的要復制的命令,并重復完成上述功能;直到用戶輸入quit退出

blob.pngblob.png

3、漢諾塔(又稱河內塔)問題是源于印度一個古老傳說。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。

利用函數,實現N片盤的漢諾塔的移動步驟

blob.png

blob.png

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

(0)
Stupid_LStupid_L
上一篇 2016-08-21 20:46
下一篇 2016-08-21 20:46

相關推薦

  • N23-第三周博客作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。 [root@localhost ~]# last -1 | head -1 3、取出當前系統上被用戶當…

    Linux干貨 2016-12-05
  • N25第二周

      1,Linux上的文件管理命令都有哪些,其常用的使用方法及其相關示例演示。        文件查看類命令:cat, tac, head, tail, more, less           分屏…

    Linux干貨 2016-12-12
  • LVS專題: NAT和DR模型實現Web負載均衡

    LVS專題: NAT和DR模型實現Web負載均衡 前言: NAT實現 Real Server配置 Director配置 測試 實驗拓撲 實驗環境 實驗步驟 DR實現 Director配置 Real Server配置 測試 實驗拓撲 實驗環境 實驗步驟 總結: 前言: 在上篇文章中我們講了一些LVS的基本概念和相應模型的實驗原理和流程,本篇文章我們主要使用lv…

    2016-04-05
  • sed與vim相關練習

    sed 練習 以行為單位的新增/刪除功能 1將 /etc/passwd 的內容列出并且打印行號,同時,請將第 2~5 行刪除! 2在第二行后(亦即是加在第三行)加上“the is xing line?”字樣! 3在第二行前(亦即是加在第而行)加上“the is xing line?”字樣! 4在第二行后面加入兩行字,例如“the is xing line &…

    Linux干貨 2016-08-10
  • N25第七周RAID LV 概述及示例,swap創建,read 特殊用法以及bash腳本示例

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; mke2fs -t ext4 -b 2048 …

    Linux干貨 2017-01-04
  • 馬哥網絡班21期,第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。     who | cut -d " " -f1 | sort -u     who:查看當前系統所有用戶的會話     cut:剪切命令       cut…

    Linux干貨 2016-07-26

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-22 14:11

    文章對rpm包管理器相關知識總結的很詳細,建議字體不要用斜體,這樣在網站上看起來特別凌亂的感覺。

欧美性久久久久