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/


博客作业:rpm和yum实现程序包管理功能;


你可能感兴趣的:(linux,manager,yum,package,程序包管理)