linux运维实战练习-2015年9月10日课程作业

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

  1、RPM  

  rpm:RPM是RedHat Package Manager(RedHat软件包管理工具)   

RPM是一个强大的软件包管理器,可用于构建,安装,查询,验证,更新和删除各个软件包。程序包由文件以及用于安装和删除的档案文件的元数据的归档。所述元数据包括辅助脚本,文件属性,和关于包的描述性信息。包有两个品种:要安装二进制软件包,用来封装软件和源代码软件包,包含源代码和必要的生产二进制包配方。

下面的一个基本模式必须选择:Query, Verify, Install/Upgrade/Freshen, Uninstall, Set Owners/Groups, Show Querytags, and Show Configuration。

  rpm 执行安装包种类

二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。

  rpm 安装包组成部分

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

库文件:/lib64, /usr/lib64

配置文件:/etc

帮助文件:manual, info, 

  rpm命名机制

name-VERSION-RELEASE.ARCH.rpm

 |        |        |        | 

 |        |        |        |_____适用的硬件平台。x86:i386,i486,i586,i686等;x86_64:x86_64等等

 |        |        |___________rpm自身的发行号,与程序源码的发行号无关,用于标识不同制作的修订

 |        |______________________带有主,次和修订的软件包版本;同时,release还包含此包适用的OS

 |______________________________软件包名称

  rpm包获取方式

1、发行版提供的程序包;

2、Fedora-EPEL

3、项目的官方站点

4、搜索引擎

http://rpmfind.net

http://rpm.pbone.net

http://pkgs.org

rpm相关命令

1、安装  

命令格式: 

rpm -i ( or --install) options file1.rpm ... fileN.rpm

选项:

  --h(or --hash)   以安装信息栏显示安装进度

  --test 只对安装进行测试,并不实际安装。 

  --percent 以百分比的形式输出安装的进度。 

  --excludedocs 不安装软件包中的文档文件 

  --includedocs 安装文档 

  --replacepkgs 强制重新安装已经安装的软件包    

  --force 忽略软件包及文件的冲突   

  --prefix 将软件包安装到指定的路径下 

  --ignorearch 不校验软件包的结构 

  --ignoreos 不检查软件包运行的操作系统 

  --nodeps 不检查依赖性关系 

[root@localhost Packages]# rpm -ivh zsh-5.0.2-7.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-7.el7                  ################################# [100%]
[root@localhost Packages]#
//不检查依赖关系直接安装本身需要依赖的rpm包
[root@localhost Packages]# rpm -ivh mysql-connector-odbc-5.2.5-6.el7.x86_64.rpm 
error: Failed dependencies:
	libodbc.so.2()(64bit) is needed by mysql-connector-odbc-5.2.5-6.el7.x86_64
	libodbcinst.so.2()(64bit) is needed by mysql-connector-odbc-5.2.5-6.el7.x86_64
[root@localhost Packages]# rpm -ivh mysql-connector-odbc-5.2.5-6.el7.x86_64.rpm --nodeps
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-connector-odbc-5.2.5-6.el7 ################################# [100%]
[root@localhost Packages]#
//强制重新安装已安装的包
[root@localhost Packages]# rpm -ivh wget-1.14-10.el7_0.1.x86_64.rpm 
Preparing...                          ################################# [100%]
	package wget-1.14-10.el7_0.1.x86_64 is already installed
[root@localhost Packages]# rpm -ivh wget-1.14-10.el7_0.1.x86_64.rpm  --replacepkgs
Preparing...                          ################################# [100%]
Updating / installing...
   1:wget-1.14-10.el7_0.1             ################################# [100%]
[root@localhost Packages]#


2、升级

命令格式:

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

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

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

      -Fvh: 如果有旧版程序包,则升级之;如果没有,则不安装;

         --nodeps

         --oldpackage:降级;

         --force:忽略软件包及文件的冲突

[root@localhost Packages]# rpm -Uvh zip-3.0-10.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:zip-3.0-10.el7                   ################################# [100%]
[root@localhost Packages]#


3、卸载

 命令格式:

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

 详细选项 

 --test 只执行删除的测试 

 --noscripts 不运行预安装和后安装脚本程序 

 --nodeps 不检查依赖性 

[root@localhost Packages]# rpm -e gpgme --nodeps


4、查询

  命令格式: 

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

  查询选项:

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

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

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

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

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

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

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

       preinstall: 安装前脚本

       postinstall:安装后脚本

       preuninstall: 卸载前脚本

       postuninstall: 卸载后脚本

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

[root@localhost Packages]# rpm -qf /sbin/ifconfig 
net-tools-2.0-0.17.20131004git.el7.x86_64
[root@localhost Packages]# rpm -qa
grub2-2.02-0.16.el7.centos.x86_64
centos-release-7-1.1503.el7.centos.2.8.x86_64
lvm2-2.02.115-3.el7.x86_64
filesystem-3.2-18.el7.x86_64
audit-2.4.1-5.el7.x86_64
ncurses-base-5.9-13.20130511.el7.noarch
tuned-2.4.1-1.el7.noarch
linux-firmware-20140911-0.1.git365e80c.el7.noarch
aic94xx-firmware-30-6.el7.noarch
glibc-common-2.17-78.el7.x86_64
[root@localhost Packages]# rpm -qi yum
Name        : yum
Version     : 3.4.3
Release     : 125.el7.centos
Architecture: noarch
Install Date: Sun 13 Sep 2015 11:29:37 PM EDT
Group       : System Environment/Base
Size        : 5746020
License     : GPLv2+
Signature   : RSA/SHA256, Sat 14 Mar 2015 04:41:36 AM EDT, Key ID 24c6a8a7f4a80eb5
Source RPM  : yum-3.4.3-125.el7.centos.src.rpm
Build Date  : Mon 09 Mar 2015 04:39:21 PM EDT
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://yum.baseurl.org/
Summary     : RPM package installer/updater/manager
Description :
Yum is a utility that can check for and automatically download and
install updated RPM packages. Dependencies are obtained and downloaded
automatically, prompting the user for permission as necessary.


5、校验

 命令格式:  

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

     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 

2、YUM

    yum:Yellow dog Updater, Modified.用于添加/删除/更新RPM包,自动解决包的依赖问题以及系统更新升级

    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

//更换网络源
[root@magedu yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo 
[root@magedu yum.repos.d]# mv CentOS-Base.repo CentOS-Base.rep
[root@magedu yum.repos.d]# vim CentOS-Base.163.repo

[mirrors.163]
[email protected]
baseurl=http://mirrors.163.com/centos/6.7/os/x86_64/
enabled=1
gpgcheck=0

...

[root@magedu yum.repos.d]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * epel: free.nchc.org.tw
仓库标识                                                  仓库名称                                                                                     状态
epel                                                      Extra Packages for Enterprise Linux 6 - x86_64                                               11,765
mirrors.163                                               [email protected]                                                                    6,575
repolist: 18,340
[root@magedu yum.repos.d]# 
//更换光盘源
[root@localhost ~]# mount -r /dev/cdrom  /media/cdrom/
[root@localhost ~]# cd /media/cdrom/
[root@localhost cdrom]# ls
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
[root@localhost cdrom]# pwd
/media/cdrom
[root@localhost yum.repos.d]# vim CentOS-Base.local.repo

[CentOS7local]
name=CentOS 7 @ local
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
...
[root@localhost yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
CentOS7local                                                                                                                          | 3.6 kB  00:00:00     
(1/2): CentOS7local/group_gz                                                                                                          | 154 kB  00:00:00     
(2/2): CentOS7local/primary_db                                                                                                        | 5.1 MB  00:00:00     
Loading mirror speeds from cached hostfile
 * epel: mirror01.idc.hinet.net
repo id                                                   repo name                                                                                    status
CentOS7local                                              CentOS 7 @ local                                                                             8,652
epel/x86_64                                               Extra Packages for Enterprise Linux 7 - x86_64                                               8,492
repolist: 17,144


   yum命令

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

   命令:

安装:install

卸载:remove

升级:update

查询:info

        search KEYWORD

        list all|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]

repoinfo [all|enabled|disabled]

//安装软件
[root@magedu ~]# yum install wget
已加载插件:fastestmirror
设置安装进程
Loading mirror speeds from cached hostfile
 * epel: free.nchc.org.tw
解决依赖关系
--> 执行事务检查
---> Package wget.x86_64 0:1.12-5.el6_6.1 will be 安装
--> 完成依赖关系计算

依赖关系解决

=============================================================================================================================================================
 软件包                          架构                              版本                                         仓库                                    大小
=============================================================================================================================================================
正在安装:
 wget                            x86_64                            1.12-5.el6_6.1                               mirrors.163                            483 k

事务概要
=============================================================================================================================================================
Install       1 Package(s)

总下载量:483 k
Installed size: 1.8 M
确定吗?[y/N]:y
下载软件包:
wget-1.12-5.el6_6.1.x86_64.rpm                                                                                                        | 483 kB     00:00     
运行 rpm_check_debug 
执行事务测试
事务测试成功
执行事务
  正在安装   : wget-1.12-5.el6_6.1.x86_64                                                                                                                1/1 
  Verifying  : wget-1.12-5.el6_6.1.x86_64                                                                                                                1/1 

已安装:
  wget.x86_64 0:1.12-5.el6_6.1                                                                                                                               

完毕!
[root@magedu ~]#


//卸载软件
[root@magedu ~]# yum remove wget
已加载插件:fastestmirror
设置移除进程
解决依赖关系
--> 执行事务检查
---> Package wget.x86_64 0:1.12-5.el6_6.1 will be 删除
--> 完成依赖关系计算

依赖关系解决

=============================================================================================================================================================
 软件包                          架构                              版本                                        仓库                                     大小
=============================================================================================================================================================
正在删除:
 wget                            x86_64                            1.12-5.el6_6.1                              @mirrors.163                            1.8 M

事务概要
=============================================================================================================================================================
Remove        1 Package(s)

Installed size: 1.8 M
确定吗?[y/N]:y
下载软件包:
运行 rpm_check_debug 
执行事务测试
事务测试成功
执行事务
  正在删除   : wget-1.12-5.el6_6.1.x86_64                                                                                                                1/1 
  Verifying  : wget-1.12-5.el6_6.1.x86_64                                                                                                                1/1 

删除:
  wget.x86_64 0:1.12-5.el6_6.1                                                                                                                               

完毕!
[root@magedu /]# yum clean all
已加载插件:fastestmirror
Cleaning repos: epel mirrors.163
清理一切
Cleaning up list of fastest mirrors
[root@magedu /]#
[root@magedu yum.repos.d]# yum grouplist
已加载插件:fastestmirror
设置组进程
Loading mirror speeds from cached hostfile
 * base: mirrors.skyshe.cn
 * epel: ftp.riken.jp
 * extras: mirrors.sina.cn
 * updates: mirrors.sina.cn
已安装的组:
   Milkymist
   Perl 支持
   图形管理工具
   字体
   安全性工具
   电子邮件服务器
   继承 X Windows 系统的兼容性
   输入法
   通用桌面
Installed Language Groups:
   中文支持 [zh]
有效的组:
   CIFS 文件服务器
   Eclipse
   Emacs
   FCoE 存储客户端
   FTP 服务器
   Haskell
   Infiniband 支持
   Java 平台
   KDE 桌面
   MySQL 数据库客户端
   MySQL 数据库服务器
   NFS 文件服务器
   PHP 支持
   PostgreSQL 数据库客户端
   PostgreSQL 数据库服务器
   Ruby 支持
   SNMP 支持
   TeX 支持
   TurboGear 应用程序框架
   Web 服务器程序引擎
   X 窗口系统
   Xfce
   iSCSI 存储客户端
   万维网服务器
   主框架访问
   互联网应用程序
   互联网浏览器
   兼容程序库
   办公套件和生产率
   可扩展文件系统
   ...
[root@magedu yum.repos.d]# yum groupinfo "PHP 支持"
已加载插件:fastestmirror
设置组进程
Loading mirror speeds from cached hostfile
 * base: mirrors.yun-idc.com
 * epel: ftp.riken.jp
 * extras: mirrors.sina.cn
 * updates: mirrors.sina.cn

组:PHP 支持
 描述:PHP web 应用程序框架。
 必要的软件包:
   php
 默认的软件包:
   php-gd
   php-pdo
   php-pear
   php-xml
 可选的软件包:
   php-ldap
   php-mysql
   php-odbc
   php-pecl-apc
   php-pecl-memcache
   php-pgsql
   php-soap
   php-xmlrpc
[root@magedu yum.repos.d]# yum groupinstall  "PHP 支持"
已加载插件:fastestmirror
设置组进程
Loading mirror speeds from cached hostfile
 * base: mirrors.yun-idc.com
 * epel: ftp.riken.jp
 * extras: mirrors.sina.cn
 * updates: centos.ustc.edu.cn
解决依赖关系
--> 执行事务检查
---> Package php.x86_64 0:5.3.3-46.el6_6 will be 安装
--> 处理依赖关系 php-common(x86-64) = 5.3.3-46.el6_6,它被软件包 php-5.3.3-46.el6_6.x86_64 需要
--> 处理依赖关系 php-cli(x86-64) = 5.3.3-46.el6_6,它被软件包 php-5.3.3-46.el6_6.x86_64 需要
--> 处理依赖关系 httpd-mmn = 20051115,它被软件包 php-5.3.3-46.el6_6.x86_64 需要
--> 处理依赖关系 httpd,它被软件包 php-5.3.3-46.el6_6.x86_64 需要
...
  Verifying  : httpd-tools-2.2.15-47.el6.centos.x86_64                                         10/16 
  Verifying  : php-pdo-5.3.3-46.el6_6.x86_64                                                   11/16 
  Verifying  : libxslt-1.1.26-2.el6_3.1.x86_64                                                 12/16 
  Verifying  : mailcap-2.1.31-2.el6.noarch                                                     13/16 
  Verifying  : apr-1.3.9-5.el6_2.x86_64                                                        14/16 
  Verifying  : httpd-2.2.15-47.el6.centos.x86_64                                               15/16 
  Verifying  : apr-util-1.3.9-3.el6_0.1.x86_64                                                 16/16 

已安装:
  php.x86_64 0:5.3.3-46.el6_6     php-gd.x86_64 0:5.3.3-46.el6_6    php-pdo.x86_64 0:5.3.3-46.el6_6  
  php-pear.noarch 1:1.9.4-4.el6   php-xml.x86_64 0:5.3.3-46.el6_6  

作为依赖被安装:
  apr.x86_64 0:1.3.9-5.el6_2                           apr-util.x86_64 0:1.3.9-3.el6_0.1             
  apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1               httpd.x86_64 0:2.2.15-47.el6.centos           
  httpd-tools.x86_64 0:2.2.15-47.el6.centos            libXpm.x86_64 0:3.5.10-2.el6                  
  libedit.x86_64 0:2.11-4.20080712cvs.1.el6            libxslt.x86_64 0:1.1.26-2.el6_3.1             
  mailcap.noarch 0:2.1.31-2.el6                        php-cli.x86_64 0:5.3.3-46.el6_6               
  php-common.x86_64 0:5.3.3-46.el6_6                  

完毕!
[root@magedu yum.repos.d]#


 

      

你可能感兴趣的:(rpm,yum)