天天看点

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识别光盘用的设备文件:/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]

如何使用光盘当做本地仓库:

挂载光盘至某目录

定义仓库,使用file:///指明其访问路径;

创建本地仓库:

yum install createrepo

createrepo /PATH/TO/RPMFILES/

上一篇: 私有云技术

继续阅读