1.程序包管理器
源代码-->目标二进制格式-->组织称为一个或有限几个“包”文件; 安装、升级、卸载、查询、校验
程序包管理器:
debian(Ubuntu):dpt,工具:dpkg,程序包以“.deb”结尾 redhat:redhat package manager ,rpm,".rpm";rpm is package manager; S.u.S.E:rpm ,'.rpm'Gentoo:portsArchLinux:
2.程序包的组成格式
源代码:name-VERSION.tar.gz VERSION:major.minor.releaserpm包命名格式: name-VERSION-release.arch.rpm VERSION:major.minor.release release.arch:rpm包的发行号 release.os:2.el7.i386.rpm archetecture(架构):i386,x64(amd64),ppc,noarch(没平台要求,可以使用在任意平台架构上)rpm拆包:主包和支包 主包:name-VERSION-release.arc.rpm 支包:name-function-VERSION-release.arc.rpm function:devel(开发包),utils(工具程序),libs(库文件)依赖关系 X,Y,Z X-->Y,Z Y-->A,B,C C-->Y 前端工具:自动解决依赖关系; yum :rhel系列系统上rpm包管理器的前端工具; apt-get(apt-cache):deb包管理器的前端工具 zypper:suse的rpm管理器前端工具 dnf:Fedora 22+系统上rpm包管理器的前端工具
3.程序包管理器功能和组成部分
功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查看 1.程序包的组成清单(每个程序包都单独实现); 文件清单 安装和卸载时运行的脚本 2.数据库(公共) 程序包的名称和版本 依赖关系 功能说明 安装生成的各文件路径及校验码信息; 等等等 CentOS上的程序包数据库位置/var/lib/rpm/
4.获取程序包的途径
(1)系统发行版的光盘或官方的文件服务器(或镜像站点); http://mirrors.aliyun.com http://mirrors.sohu.com, http://mirrors.163.com(2)项目的官方站点 (3)第三方组织制作的rpm包: (a)EPEL: (b)搜索引擎查找 http://pkgs.org http://rpm.pvone.net http://rpmfind.netstat 建议:检查其合法性(完整性) 来源合法性: 程序包的完整性;
5.CentOS系统上rpm命令管理程序包
命令介绍
安装、升级、卸载、查询和校验、数据库维护rpm命令:rpm [OPTION] [PACKAGE_FILE] 安装:-i,--install 升级:-U,--update,-F,-freshen 卸载:-e,--erase 查询:-q,--query 校验:-V ,--verify 数据库维护:--builddb,--initdb
rpm包安装
rpm {-i|--install} [install-options] PACKAGE_FILE ... rpm -ivh PACKAGE_FILE... GENERAL OPTIONS: -v:verbose,详细信息 -vv:更详细的输出 [install-options] -h:hash marks输出进度条;每个#表示2%的进度 --test:测试安装,检查并报告依赖关系及冲突消息等; --nodeps:忽略依赖关系,不建议使用,安装后会不能使用; --replacepkgs:重新安装:rpm -ivh --replacepkgs zsh-5.0.2-7.el7.x86_64.rpm --nodigest:不检查包的完整性信息 --nosignature:不检查包的来源信息及包的完整性注意:rpm可以自带脚本; 四类: --noscripts preinstall:安装过程开始之前运行的脚本,%pre: --nopre postinstall:安装过程完成以后运行的脚本:%post --nopost preuninstall:卸载过程真正开始执行之前运行的脚本,%preun --nopreun postuninstall卸载过程完成以后运行的脚本,%postun --nopostun
rpm包升级
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... -U:升级或安装 -F:升级,如果老版本不存在,则不进行安装 rpm -Uvh PACKAGE_FILE ... rpm -Fvh PACKAGE_FILE ... --oldpackage:降级安装; --force:强制升级; 注意:(1)不要对内核做升级操作。linux 支持多内核版本并存,因此,直接安装新版本内核; (2)如果某源程序包的配置文件安装后曾修改过,升级时。新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件。而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;
卸载:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... --allmatches:卸载所有匹配指定名称的程序包的各版本 --nodos:忽略依赖关系 --test:测试卸载, dry run 模式 rpm -e zsh
查询
rpm {-q|--query} [select-options] [query-options] 1) [select-options] rpm -q PACKAGE_NAME:查询指定的程序包是否已安装,及其版本; -a,--all:查询所有已经安装过的包 -f FILE:查询指定的文件由哪个程序安装生成 -p,--package PACKAGE_FILE:用于实现对未安装的程序包做查询操作。 --whatprovides CAPABILITY:查询指定的CAPABILITY(能力)由哪个程序包提供 bin]# rpm -q --whatprovides config\(bash\) bash-4.1.2-40.el6.x86_64 rpm -q --whatprovides zprof.so'()(64bit)' --whatrequires CAPABILITY:查询指定的CAPABILITY(能力)被哪个包所依赖; 2)[query-options] --changlog:查询 -l,--list :安装生成的所有文件列表 -i,--info :查询程序包相关的information,版本号,大小,所属的组,等 -c,--configfiles:查询指定的程序包的配置文件 -d,--docfiles:查询指定的程序包提供的帮助文档 --provides:列出指定的程序包的所有CAPABILITY(能力) bin]# rpm -q --provides bash config(bash) = 4.1.2-40.el6 bash = 4.1.2-40.el6 bash(x86-64) = 4.1.2-40.el6 -R,--requires:查询指定的程序包的依赖关系; --scripts:查看程序包自带的脚本片段;用法: -qi PACKAGE:信息, -qf FILE 文件由哪个包安装来, -qc PACKAGE配置文件, -ql PACKAGE:安装生成的文件列表, -qd,提供的帮助文档qpi,qpl,qpc...查询未安装的程序包的信息。
校验:
rpm -V zsh #校验rpm安装后有没有被修改过 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 [root@CentOS6 bin]# rpm -V zsh S.5....T. c /etc/zshrc rpm {-V|--verify} [select-options] [verify-options]
包来源合法性验证和完整性验证:
来源合法性验证: 数字签名: 完整性验证 rpm --import /media/cdrom/RPM-GPG-KEY-GentOS-7导入密钥信息 rpm -K zsh-5.0.2-14.el7.x86_64.rpm 获取并导入信任的包制作者的密钥: 对于CentOS发行版本来说:rpm --import /etc/pki/rpm-gpg/RPM-KEY-CentOS-7验证: (1)安装此组织签名的程序时,会自动执行验证 (2)手动过验证:rpm -K PACKAGE_NAME
数据库重建:
rpm管理器数据库路径:/var/lib/rpm 查询操作:通过此处的数据库进行; 获取帮助: CentOS6:man rpm CentOS 7:man rpmdb rpm {--initdb|--rebuilddb}[-v] [--dbpath DIRECTORY] [--root DIRECTORY] --initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时不执行任何操作 --rebuilddb :重新构建,通过读取当前系统上所有已安装过的程序包进行重新创建;
6.yum概述
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。 基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。 yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
7.yum客户端的配置
1)yum respository(yum 仓库): yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)2)yum中常用的文件服务器类型 ftp:// http:// file:///(本地yum源)3)yum客户端的配置文件: /etc/yum.conf:为所有仓库提供公共配置 /etc/yum.repos.d/*.repo:为仓库的指向提供配置 仓库指向的定义: [repositoryID] name=Some name for this repository baseurl=url://path/to/repository/ enabled={1|0} gpgcheck={1|0} gpgkey=URL enablegroups={1|0} failovermethod={roundrobin|priority} 默认为:roundrobin,意为随机挑选; cost= 默认为1000注意:3)中参数不是全部都需要进行配置,但最基本的必须包括以下三点 (1):[repositoryID] (2):baseurl=url://path/to/repository/ (3) enabled={1|0}4)在CentOS6环境上安装yum仓库示例: (1)虚拟机CentOS-6.8 yum源:http://10.1.0.1/cobbler/ks_mirror/6/ (2)进入yum repo 配置目录,在yum.repos.d下原有很多.repo结尾的文件,均已移至其下的old文件夹中 [root@CentOS6 ~]# cd /etc/yum yum/ yum.conf yum.repos.d/ [root@CentOS6 ~]# cd /etc/yum.repos.d/ [root@CentOS6 yum.repos.d]# ls base.repo old [root@CentOS6 yum.repos.d]# (3)创建并编辑bash.repo文件,在其中加入一下内容 [base] name=CentOS 6 baseurl=http://10.1.0.1/cobbler/ks_mirror/6/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 (4)执行yum clean all清除原有yum缓存,然后执行yum makecache重新创建yum缓存文件。 5)yum-config-manager命令的使用 (1) 生成repo-http_10.1.0.1_cobbler_ks_mirror_CentOS-6-x86_64_.repo
(2) yum-config-manager --disbale "仓库名" 禁用仓库 (3)yum-config-manager --enable "仓库名" 启用仓库 yum-config-manager --enable fedora(仓库名是在配置时中括号中的名字)
8.使用yum安装和卸载程序包
显示仓库列表:repolist [all|enabled|disabled
[root@CentOS6 yum.repos.d]# yum repolist allLoaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile base | 4.0 kB 00:00 cdrom | 4.0 kB 00:00 ... fedora | 4.3 kB 00:00 repo id repo name status base CentOS 6 enabled: 6,696cdrom CentOS 2 enabled: 6,696fedora CentOS enabled: 11,768repolist: 25,160[root@CentOS6 yum.repos.d]#
显示程序包list
yum list [all | glob_exp1] [glob_exp2] [...]yum list {available|installed|updates} [glob_exp1]
安装程序包:
install package1 [package2] [...] reinstall package1 [package2][...] (重新安装)
升级程序包
update [package1] [package2][...] downgrade [package1] [package2][...] (降级) 检查可用升级: check-update
卸载程序包:
remove |erase package1 [package2][...]
查看程序包information:
info[...]
查看指定的特性(可以是某文件)是由哪个程序包提供的:
provides |whatprovides feature1 [feature2] [...]
本地缓存的清理和构建
清理: clean [package |metadata |expire-cache|rpmdb|plugins|all] 构建: makecache
9.yum的选项及其它:
使用光盘当本地yum仓库
(1)挂载光盘至某目录,例如/media/cdrom #mount /dev/cdrom /media/cdrom(2)创建配置文件 [CentOS7] name= baseurl= gpgcheck= enabled
yum的命令行选项
--nogogcheck:禁止进行gpg check-y:自动回答“yes“-q:静默模式--disablerepo=repoidglob:临时禁用此处指定的repo--enablerepo=repoidglob:临时启用此处指定的repo--noplugins:禁用所有插件
yum的repo配置文件中可用的变量
$releasever:当前OS的发行版本的主版本号$arch:平台,i386,i486,i586,x86_64...$basearch:基础平台;i386$YUM0-$YUM9:自定义变量 示例: http://server/centos/$releasever/$basearch/ http://server/centos/7/x86_64 http://server/centos/6/i384
创建yum仓库:
createrepo[options] <directory>
原创文章,作者:提着酱油瓶打醋,如若转载,请注明出处:http://www.178linux.com/38262
评论列表(1条)
文章架构清晰,层次明了,同时熟练使用包管理器各命令是基本技能需要熟练使用和掌握。