一:程序包概述
程序包组成部分:
二进制程序:/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相关信息
效验
检查包安装后生成的文件是否被修改过
格式 # 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
四、YUM的使用
1、yum配置
要使用yum管理应用程序,首先得配置其可用的yum仓库,保存在配置文件中
yum的配置文件:
/etc/yum.conf :全局配置,一般默认即可不用更改
/etc/yum.repos.d/*.repo: 一个文件通常用于一个或一组功能相近或相关的仓库
配置文件格式:由两段组成,类似windows的ini配置文件
[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
2、yum的使用
yum repolist [all|enabled|disabled] 默认列出所有可用repo
yum clean [all|package|metadata|expire-cache|rpmdb|plugins] 清除所有缓存
yum 缓存路径/var/cache/yum
yum makecache 生成缓存
yum list [all|installed|available] 列出目前 yum 所管理的所有的软件名称与版本
yum info (包名) 默认列出目前 yum 所管理的所有的软件名称与版本的详细信息
yum grouplist 列出目前 yum 所管理的所有的包组
yum groupinfo 包组名称 列出目前 yum 所管理的所有包组的详细信息
安装:yuminstall,yum groupinstal
重装:yumreinstall
卸载:yum[remove|erase],yum greoupremove
检查可升级的包: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公钥文件的位置