作业(练习)内容:

    1、总结rpm和yum实现程序包的管理功能.

         求:作业要图文并茂

一、RPM包管理的用途;

1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;
2
、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;
3
、可以在查询系统中的软件包是否安装以及其版本;
4
、作为开发者可以把自己的程序打包为RPM 包发布;
5
、软件包签名GPGMD5的导入、验证和签名发布
6
、依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统;

二、RPM 的使用权限;

RPM
软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装;


三、rpm 的一点简单用法;

我们除了软件包管理器以外,还能通过rpm 命令来安装;是不是所有的软件包都能通过rpm 命令来安装呢?不是的,文件以.rpm 后缀结尾的才行;有时我们在一些网站上找到file.rpm ,都要用 rpm 来安装;

RPM数据库在/var/lib/rpm

RPM数据库的建立可以利用rpm --rebuilddb命令。

 

安装选项参数

命令格式:
rpm -i ( or --install) options file1.rpm ... fileN.rpm
参数:
file1.rpm ... fileN.rpm 将要安装的RPM包的文件名
通用选项
rpm -i /PATH/TO/PACKAGE_FILE:安装软件包

rpm -h :以#显示安装进度,每个#表示2%

rpm -v :显示安装详细信息

rpm -vv :更详细的信息

rpm -ivh :一般都是组合使用


--root
让RPM将指定的路径做为"根目录",这样预安装程序和后安
装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为

--dbpath 设置RPM资料库存所在的路径为

wKiom1Xz3V7TeyzcAASOzMgC4Ts506.jpg

wKioL1Xz353iq88CAAClzw0C_as741.jpg

上图其中zsh-5.0.2-7.el7.x86_64.rpm是你要安装的rpm包的文件名,一般置于当前目录下。 

详细选项:
-h (or --hash) 安装时输出hash记号(``#'')
--test 只对安装进行测试,并不实际安装。
--percent 以百分比的形式输出安装的进度。
--excludedocs 不安装软件包中的文档文件
--includedocs 安装文档
--replacepkgs 强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force 忽略软件包及文件的冲突
--noscripts 不运行预安装和后安装脚本
--prefix 将软件包安装到由 指定的路径下
--ignorearch 不校验软件包的结构
--ignoreos 不检查软件包运行的操作系统
--nodeps 不检查依赖性关系
--ftpproxy 用 作为 FTP代理
--ftpport 指定FTP的端口号为
这里列出几个常用的:

 rpm --nodeps:忽略依赖关系。

 rpm --replacepkgs|repackage:重新安装、替换原来安装。

 rpm -ivh --oldpackage:降级安装。

 rpm -ivh --force:强行安装,可以实现重装或降级

rpm --test:仅测试有没有依赖关系

查询:

           rpm {-q|--query} [select-options] [query-options]

 

           查询选项:

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

wKioL1Xz37rAEApnAAHdi-kleVQ703.jpg

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

如果某个rpm包尚未安装,我们需要查询其说明信息,安装后会生成的文件

 rpm -qpi /PATH/TO/PACKAGE_FILE

wKiom1Xz3ZmR9IXMAACdgZmF1Jc875.jpg

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

wKioL1Xz3_mzNgxZAACCkpQMDSg238.jpg

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

wKioL1Xz4AeyE_U4AAEj6OZN7AY154.jpg

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

wKiom1Xz3eeADR3RAAMCEIHfguk898.jpg

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

wKioL1Xz4C-yxWujAAEVuYCxpzM520.jpg

查看软件包的文档所在的位置;

语法: rpm -qpd file.rpm

wKiom1Xz3g_zK7Z0AAFzohAuj0c648.jpg

查看一个软件包的依赖关系

语法: rpm -qpR file.rpm

wKiom1Xz3jWCA6d4AAEVmzv1ERg594.jpg

               -q --scripts:查询程序包相关的脚本:

                  preinstall: 安装前脚本

                  postinstall:安装后脚本

                  preuninstall: 卸载前脚本

                  postuninstall: 卸载后脚本

wKioL1Xz4HSShC5-AAMKvuAvWJ4653.jpg

               -p: 查询针对是未安装的程序包文件;

 

升级:

           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 ... 

wKiom1Xz3lryUrUdAAA8B2-2ynw722.jpg

校验:

           rpm {-V|--verify} [select-options] [verify-options]

              S file Size differs

              M Mode differs (includes permissions andfile 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

wKioL1Xz4JiCSeQDAAFpIx0PTQk518.jpg

包校验:

       来源合法性验正:非对称加密

       完整性验正:单向加密

       导入密钥:rpm --import /PATH/TO/KEY_FILE

       校验:rpm -K /PATH/TO/RPM_FILE

wKioL1Xz4KqCPpr5AAJ8k9iiGX8670.jpg

校验都OK 的

 

 

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 安装好后的rpm包会被自动清除,如果我们想不自动清除的话,
[root@jesse ~]# vi /etc/yum.conf 
[main]
cachedir=/var/cache/yum
keepcache=1     #
将这里的0修改为1
debuglevel=2
#
保存退出
#
我们安装好后的软件存放的位置:/var/cache/yum/base/packages

 

    创建本地仓库:

       yum installcreaterepo

 

       createrepo/PATH/TO/RPMFILES/

wKiom1Xz3o2RmPJhAASF7xYohxo288.jpg

这里发现报错了,错误显示连接不到那个地址,为什么会出现这样的情况咧,是因为在/etc/yum.conf文件,里面有包含/etc/yum.repo.d/下面的配置,如下图:

wKioL1Xz4M3QbzSHAABDVTCoFy0323.jpg

那就去修改/etc/yum.repos.d目录下修改wKiom1Xz4BijkLgKAAKTaaka010227.jpgwKioL1Xz4TzApIeOAAMUGFeXHnI485.jpg

 

 

yum命令:

       yum [options][command] [package ...]

 

           命令:

              安装:install

              卸载:remove

              升级:update

              查询:

                  Info

wKiom1Xz3zbii6DXAAB6wT5JseI349.jpg

                  searchKEYWORD

                  listall|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]

wKioL1Xz4XPgG4b7AAC24_qnVR8984.jpg

                  repoinfo[all|enabled|disabled]

wKiom1Xz306joVpDAAFfxD1W9I8473.jpg

 

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

       挂载光盘至某目录

       定义仓库,使用file:///指明其访问路径;