一、rpm包管理

用法:

rpm [选项...]    查询/验证软件包选项:      -a, --all                        查询/验证所有软件包      -f, --file                       查询/验证文件属于的软件包      -g, --group                      查询/验证组中的软件包      -p, --package                    查询/验证一个软件包      --pkgid                          query/verify package(s) with package identifier      --hdrid                          query/verify package(s) with header identifier      --triggeredby                    query the package(s) triggered by the package      --whatrequires                   query/verify the package(s) which require a dependency      --whatprovides                   查询/验证提供相关依赖的软件包      --nomanifest                     不把非软件包文件作为清单处理        查询选项(用 -q 或 --query):      -c, --configfiles                列出所有配置文件      -d, --docfiles                   列出所有程序文档      -L, --licensefiles               list all license files      --dump                           转储基本文件信息      -l, --list                       列出软件包中的文件      --queryformat=QUERYFORMAT        使用这种格式打印信息      -s, --state                      显示列出文件的状态        验证选项(用 -V 或 --verify):      --nofiledigest                   不验证文件摘要      --nofiles                        不验证软件包中文件      --nodeps                         不验证包依赖      --noscript                       不执行验证脚本        安装/升级/擦除选项:      --allfiles                       安装全部文件,包含配置文件,否则配置文件会被跳过。      --allmatches                     移除所有符合 
 的软件包(如果 
                                       被指定未多个软件包,常常会导致错误出现)      --badreloc                       对不可重定位的软件包重新分配文件位置      -e, --erase=
+           清除 (卸载) 软件包      --excludedocs                    不安装程序文档      --excludepath=
             略过以 
 开头的文件      --force                          --replacepkgs --replacefiles 的缩写      -F, --freshen=
+     如果软件包已经安装,升级软件包      -h, --hash                       (和 -v 一起使用效果更好),以#显示程序包管理                                        执行进度;每个#表示2%的进度       --ignorearch                     不验证软件包架构      --ignoreos                       不验证软件包操作系统      --ignoresize                     在安装前不检查磁盘空间      -i, --install                    安装软件包      --justdb                         更新数据库,但不修改文件系统      --nodeps                         不验证软件包依赖      --nofiledigest                   不验证文件摘要      --nocontexts                     不安装文件的安全上下文      --noorder                        不对软件包安装重新排序以满足依赖关系      --noscripts                      不执行软件包脚本      --notriggers                     不执行本软件包触发的任何脚本      --nocollections                  请不要执行任何动作集      --oldpackage                     更新到软件包的旧版本(带 --force                                       自动完成这一功能)      --percent                        安装软件包时打印百分比      --prefix=
                   如果可重定位,便把软件包重定位到 
      --relocate=
=
           将文件从 
 重定位到 
      --replacefiles                   忽略软件包之间的冲突的文件      --replacepkgs                    如果软件包已经有了,重新安装软件包      --test                           不真正安装,只是判断下是否能安装      -U, --upgrade=
+     升级软件包        所有 rpm 模式和可执行文件的通用选项:      -D, --define=“MACRO EXPR”        定义值为 EXPR 的 MACRO      --undefine=MACRO                 undefine MACRO      -E, --eval=“EXPR”                打印 EXPR 的宏展开      --macros=
                从文件 
 读取宏,不使用默认文件      --nodigest                       不校验软件包的摘要      --nosignature                    不验证软件包签名      --rcfile=
                从文件 
 读取宏,不使用默认文件      -r, --root=ROOT                  使用 ROOT 作为顶级目录 (default: "/")      --dbpath=DIRECTORY               使用 DIRECTORY 目录中的数据库      --querytags                      显示已知的查询标签      --showrc                         显示最终的 rpmrc 和宏配置      --quiet                          提供更少的详细信息输出      -v, --verbose                    提供更多的详细信息输出      --version                        打印使用的 rpm 版本号最常用到的选项是:rpm -ivh PACKAGE_FILE

最常见rpm包的地方就是我们的centos安装光盘,这里我挂载一个安装光盘并进入到其中

yum1

yum2

其中的Packages文件夹中就存放这非常多的rpm包

yum3

yum4

我们先导入光盘中的公钥,这样可以保证rpm包的合法性

yum5

再新建数据库,方便rpm包的安装

yum6

安装一个rmp包试试

yum7

因为包与包之间存在依赖性,所以必须手动解决依赖性或忽略依赖性,这是rpm工具的弱点,所以有了yum作为rpm的补充,后面会降到yum,这里我们忽略依赖性安装

yum8

将刚才安装的包卸载掉,选项为-e

yum9

二、yum源管理

yum是对rpm的补充,因为rpm工具无法自动解决安装包的依赖问题,而yum很好的解决了这个问题

yum源的配置文件:

/etc/yum.conf:为所有仓库提供公共配置/etc/yum.repos.d/*.repo:为仓库的指向提供配置

/etc/yum.repos.d/*.repo仓库指向的定义:

[repositoryID]name=Some name for this repositorybaseurl=url://path/to/repository/enabled={1|0}gpgcheck={1|0}gpgkey=URLenablegroups={1|0}failovermethod={roundrobin|priority}默认为:roundrobin,意为随机挑选;cost=默认为1000

yum的repo配置文件中可用的变量:

$releasever: 当前OS的发行版的主版本号;$arch: 平台;$basearch:基础平台;$YUM0-$YUM9

国内常用yum源url:

yum的命令行选项:

    --nogpgcheck:禁止进行gpg check;    -y: 自动回答为“yes”;    -q:静默模式;    --disablerepo=repoidglob:临时禁用此处指定的repo;    --enablerepo=repoidglob:临时启用此处指定的repo;    --noplugins:禁用所有插件;

yum的子命令:

显示仓库列表:repolist [all|enabled|disabled]        显示程序包: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 [ packages | metadata | expire-cache | rpmdb | plugins | all ]    构建缓存:makecache    搜索:search string1 [string2] [...]以指定的关键字搜索程序包名及summary信息;    查看指定包所依赖的capabilities:deplist package1 [package2] [...]    查看yum事务历史:history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]    安装及升级本地程序包:* localinstall rpmfile1 [rpmfile2] [...]   (maintained for legacy reasons only - use install)* localupdate rpmfile1 [rpmfile2] [...]   (maintained for legacy reasons only - use update)包组管理的相关命令:* groupinstall group1 [group2] [...]* groupupdate group1 [group2] [...]* grouplist [hidden] [groupwildcard] [...]* groupremove group1 [group2] [...]* groupinfo group1 [...]

1、配置本地yum源

进入/etc/yum.repos.d中

yum10

将系统自带的网络yum重命名以免使用,用mv重命名

mv CentOS-Base.repo CentOS-Base.repo.bak

yum11

将系统光盘挂载到/media/cdrom中

yum12

打开CentOS-Media.repo,在baseurl中加入/media/cdrom

yum13

enabled=1表示启用

用yum install安装一个没安装过的软件试试

2、配置阿里云yum源

在/etc/yum.repos.d中创建一个repo文件,这里我创建的是aliyun.repo

yum14

文件中的内容是

yum15

[Centos7-ailiyun.com]name=Centos-$releasever-$basearchbaseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearchenabled=1gpgcheck=0[updates-ailiyun.com]name=Centos-$releasever-$basearch-updatesbaseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearchenabled=1gpgcheck=0

其中变量$releasever获取的是版本号,$basearch获取的是系统架构(如x86_64)

enabled=1表示启用,gpgcheck=0表示不进行校验

创建完之后构建本地缓存数据库,yum makecache

yum16

安装一个未安装的软件试试,比如centos7系统中没有ifconfig,我们yum install net-tools.x86_64

yum17

yum18

这里可以很明显的看到yum会自动帮你解决依赖关系

3、配置epel源

直接在上面的aliyun.repo中添加一个epel仓库

yum19

添加完成之后记得构建缓存

yum20