一:程序包概述

程序包组成部分:

二进制程序:/bin,/sbin,/usr/bin,/usr/sbin

库文件:/lib64,/usr/lib64

配置文件:/etc/

帮助文档:man,info


二、应用程序管理器

1、常用的软件安装方式:

dpkg:

这个机制最早是由 Debian Linux 社群所开发出来的,透过 dpkg 的机制, Debian 提供的软件就能够简单的安装起来,同时还能提供安装后的软件信息,实在非常不错。 只要是衍生于 Debian 的其他 Linux distributions 大多使用 dpkg 这个机制来管理软件的, 包 B2D, Ubuntu 等等。

rpm:

这个机制最早是由 Red Hat 这家公司开发出来的,因此很多 distributions 就使用这个机制来作为软件安装的管理方式。包 Fedora, CentOS, SuSE 等。

2、包管理器的基本功能

打包,安装,查询,升级,卸载,效验


依赖关系:循环依赖,版本依赖

3、程序包分包机制:(哲学思想:每一个包实现一种功能,组合小程序完成复杂任务)

核心包

支包

程序包命名机制:major.minor.release

rpm包命名:name-version-release.arch.rpm

release 是rpm的release,而不是源代码的release

rpm公共数据库/var/lib/rpm/

重建数据库

rpm {--initdb|--rebuilddb}

初始化:--initdb

如果事先不存在数据,则会新之;否则,不执行任何操作

重新构建:--rebuilddb

无论当前是否已经存在数据库,都会直接重建并覆盖现有数据库;

4、包命名格式:

源程序:

name-version.tar.gz

version:major.minor.release

rpm包:

name-version-release.ARCH.rpm

release:通常包含rpm的制作发行号,还包含使用的OS

例: bash-4.1.2-14.el6.x86_64.rpm


分包:把一个复制的程序打包制作成多个rpm格式

主包:bash-4.1.2-14.el6.x86_64.rpm

支包:bash-devel-4.1.2-14.el6.x86_64.rpm

5、如何获取程序包:

1、发行商提供的程序包

2、Fedora-EPEL

3、项目的官方站点

4、搜索引擎

http://rpmfind.net

http://rpm.phome.net

http://pkgs.org



三、rpm包的使用

1、基于rpm命令实现程序包管理

安装:

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

-i,--install:安装

-v:显示详细信息,-vv

-h (或 --hash): 以#的个数显示安装进度

--test:仅测试,不真正安装,可以看到该包的依赖关系

--nodeps:忽略依赖关系

--replacepgs:重装

--oldpackage:降级

重装或升级时:原来的配置文件不会被覆盖,新安装的配置文件将会重命名为以.rpmnew为后缀的文件


升级:

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

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

-Uvh:如果有旧版程序包,则升级,如果没有,则安装

-Fvh:如果有旧版程序包,则升级,如果没有,则无操作

--force:强制升级

--nodeps: 忽略依赖关系

注意:不要对内核执行升级操作

多版本内核可并存,因此,建议执行安装操作



卸载:

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

如果卸载被其它程序所依赖的包:

1、把依赖者一同卸载

2、忽略依赖关系

3、不再卸载


查询:

格式  # rpm {-q|--query} [select-options] [query-options]

-qa: 查询本机已经安装的所有程序包;

-qf /PATH/TO/SOMEFILE: 查询此处的文件由哪个程序包安装生成;

-qc: 查询指定程序包安装生成的配置文件

-qd: 查询指定的程序包安装生成的文档

-qi: 查询指定的程序包的相关信息;

-ql: 查询程序包安装生成的所有文件的列表;

-q --scripts  查询rpm包相关的脚本

preinstall:安装前脚本

postinstall:安装后脚本

preuninstall:卸载前脚本

postuninstall:卸载后脚本

-p 查询当前系统中没有安装的rpm相关信息


程序包管理_第1张图片

程序包管理_第2张图片

程序包管理_第3张图片


效验

检查包安装后生成的文件是否被修改过

格式  # rpm {-V|--verify} [select-options] [verify-options]

S (file Size differs)档案的容量大小是否被改变

M (Mode differs (includes permissions and file type)) 档案的类型戒档案的属性 (rwx) 是否被改变

5 (digest (formerly MD5 sum) differs MD5) 这一种纹码的内容已经不同

D (Device major/minor number mismatch)装置的主/次代码已经改变

L (readLink(2) path mismatch Link 路径已被改变

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

wKiom1X3zhTjAf6_AACG7JweftU620.jpg

程序包管理_第4张图片

 

四、YUM的使用

1yum配置

要使用yum管理应用程序,首先得配置其可用的yum仓库,保存在配置文件中

yum的配置文件:

        /etc/yum.conf :全局配置,一般默认即可不用更改

       /etc/yum.repos.d/*.repo: 一个文件通常用于一个或一组功能相近或相关的仓库         

配置文件格式:由两段组成,类似windowsini配置文件

             [main]:主配置段

             [repo]:仓库配置段

定义一个数据仓库指向:

    [repo_ID]

    name=NAME

    baseurl=仓库的访问路径

    enabled=[1|0]   1表示启用,0表示不启用,如果不存在该配置,则默认启用

    gpgcheck=[1|0]   是否检查包来源合法性和完整性

    gpgkey=公钥文件  (可以在本地,也可以是服务器端路径)

    cost=定义此仓库的开销,默认为1000    数值小的优先使用         

 

定义仓库指向可用变量:

         有些内容是这样的:

#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/

         $releasever

    当前 OS 发行版的主版本号,如对CentOS 6.6 系统,这个值为 6

$arch

    当前系统的平台,如i386, x86_64

$basearch

    基础平台,如 x86_64 amd64 平台的基础平台同为 x86_64

 

 

2yum的使用

yum repolist [all|enabled|disabled] 默认列出所有可用repo

 程序包管理_第5张图片

yum clean [all|package|metadata|expire-cache|rpmdb|plugins]  清除所有缓存

yum 缓存路径/var/cache/yum

yum makecache 生成缓存

yum list [all|installed|available] 列出目前 yum 所管理的所有的软件名称与版本

程序包管理_第6张图片

yum info  (包名默认列出目前 yum 所管理的所有的软件名称与版本的详细信息

yum grouplist  列出目前 yum 所管理的所有的包组

程序包管理_第7张图片

yum groupinfo  包组名称 列出目前 yum 所管理的所有包组的详细信息

 

 

安装:yuminstall,yum groupinstal

程序包管理_第8张图片

重装:yumreinstall

程序包管理_第9张图片

卸载:yum[remove|erase],yum greoupremove

程序包管理_第10张图片

检查可升级的包:yumcheck-update

要升级到指定版本:yumupdate x-4.4.12-1el7.x86_64.rpm

升级:yumupdate 

降级:yum  downgrade 降级包的包名

 

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

先将RHEL6的光盘挂载到某一目录下,如挂载到/mnt

#mount  /dev/cdrom  /mnt

/etc/yum.repos.d目录下创建一个以.repo结尾的文件:

#vi /etc/yum.repos.d/server.repo

配置内容如下:

[Server]   //仓库名称

name=Server  //仓库描述信息

baseurl=file:///mnt  //URL访问路径

enabled=1  //启用此软件仓库

gpgcheck=1  //验证软件包的签名

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release  //GPG公钥文件的位置