天天看點

20150910-Linux程式包管理

占位,待完善。。。

程式包管理:

核心功能:程序管理、記憶體管理、網絡協定棧、驅動程式、...

應用程式:

包管理器:打包,包管理(安裝、更新、解除安裝、查詢及校驗)

deb: debian

rpm: redhat package manager 

RPM is Package Manager

程式包的組成部分:

二進制程式:/bin, /sbin,/ /usr/bin, /usr/sbin,

庫檔案:/lib64, /usr/lib64

配置檔案:/etc

幫助檔案:manual, info, 

包管理器:

打包:一個單一的歸檔檔案中;

安裝:

解除安裝:

更新:

查詢:

校驗:

來源的合法性、完整性;

rpm包:

rpmbuild: specs檔案

10:5, 3, 2

分包機制:

testapp-VERSION.tar.gz

核心包:testapp-VERSION

支包:testapp-devel-VERSION

VERSION:major.minor.release

base-4.2.4.tar.gz

rpm包的命名機制:

name-VERSION-RELEASE.ARCH.rpm

bash-4.2.4-1.el7.x86_64.rpm

bash-devel-4.2.4-1.el7.x86_64.rpm

RELEASE: rpm release

包和包之間:有可能存在依賴關系:

X --> Y

rpm資料庫:/var/lib/rpm/

如何擷取rpm包:

1、發行版提供的程式包;

2、Fedora-EPEL

3、項目的官方站點

4、搜尋引擎

http://rpmfind.net

http://rpm.pbone.net

http://pkgs.org

CentOS識别CD光牒用的裝置檔案:/dev/cdrom,

基于rpm指令實作程式包管理:

安裝:

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

-i:

-v:顯示詳細過程,-vv, -vvv

-h:

每個rpm包都提供一個或多個capabilities

--nodeps:忽略依賴關系安裝

--replacepkgs:重裝程式包

更新:

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

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

        -Uvh: 如果有舊版程式包,則更新之;如果沒有,則安裝之;

        -Fvh: 如果有舊版程式包,則更新之;如果沒有,則不安裝;

        --nodeps

        --oldpackage:降級;

        --force:

        解除安裝:

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

        查詢:

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

        查詢選項:

        -qa: 查詢本機已經安裝的所有程式包;

        -qf /PATH/TO/SOMEFILE: 查詢此處的檔案由哪個程式包安裝生成;

        -qc: 查詢指定程式包安裝生成的配置檔案

        -qd: 查詢指定的程式包安裝生成的文檔

        -qi: 查詢指定的程式包的相關資訊;

        -ql: 查詢程式包安裝生成的所有檔案的清單;

        -q --scripts:查詢程式包相關的腳本:

        preinstall: 安裝前腳本

        postinstall:安裝後腳本

        preuninstall: 解除安裝前腳本

        postuninstall: 解除安裝後腳本

        -p: 查詢針對是未安裝的程式封包件;

        校驗:

        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 mTime differs

      P caPabilities differ

包校驗:

來源合法性驗正:非對稱加密

完整性驗正:單向加密

導入密鑰:rpm --import /PATH/TO/KEY_FILE

校驗:rpm -K /PATH/TO/RPM_FILE

YUM: Yellowdog Updater Modified

yum repositories:

檔案伺服器:

ftp://hostname/PATH/TO/REPO

http://hostname/PATH/TO/REPO

file:///PATH/TO/REPO

yum程式的配置檔案:

/etc/yum.conf

定義全局配置:對所有倉庫都适用的配置

/etc/yum.repos.d/*.repo

一個檔案通常用于一個或一組功能相近或相關的倉庫

定義一個倉庫指向:

[REPO_ID]

name=

baseurl=

# mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE

enabled={1|0}

gpgcheck={1|0}

gpgkey=

cost=

定義倉庫指向可用變量:

$releasever: 引用目前系統的主版本号;

$basearch: 目前系統的基本架構;

i386, i486, i586, i686: i386

http://mirrors.magedu.com/CentOS/$releasever/os/$basearch

yum指令:

yum [options] [command] [package ...]

指令:

安裝:install

解除安裝:remove

更新:update

查詢:

info

search KEYWORD

list all|installed|availiable

provides /PATH/TO/SOMEFILE: 查詢指定檔案由哪個包安裝生成

重新安裝:reinstall

降級:downgrade

清理緩存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

生動生成緩存:makecache

包組:

grouplist

groupinfo "GRP_NAME"

groupinstall "GRP_NAME"

groupremove "GRP_NAME"

倉庫:

repolist [all|enabled|disabled]

repoinfo [all|enabled|disabled]

如何使用CD光牒當做本地倉庫:

挂載CD光牒至某目錄

定義倉庫,使用file:///指明其通路路徑;

建立本地倉庫:

yum install createrepo

createrepo /PATH/TO/RPMFILES/

上一篇: 私有雲技術

繼續閱讀