2015年9月10日【程序包管理:rpm, yum】-JY1506402-19+liuhui880818

《Linux系统管理》

(1)磁盘和文件系统管理;

(2)RAID, LVM; btrfs; 

(3)程序包管理:rpm, yum(dnf)

(4)Linux的网络管理; 

(5)进程和作业管理:htop, glances, tsar;

(6)sed和awk;

(7)Linux系统的开机启动流程;

(8)内核基础知识,内核定制编译;

(9)系统安装:kickstart, pxe

一、作业(练习)内容:

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

要求:作业要图文并茂

二、完成时间:

2015年9月15日之前。

三、完成步骤:

 《程序包管理:rpm,yum》

目录:

1.程序包的组成部分

2.包管理器

3.rpm软件管理

  1)rpm包说明

  2)如何获取rpm

  3)rpm命令:实现对程序包管理

    (1)安装

    (2)升级

    (3)卸载

    (4)查询

    (5)校验

4.YUM软件管理

 1)YUM程序的配置文件

 2)yum命令:

    (1)安装

    (2)卸载

    (3)升级

    (4)查询

 3)创建自己的本地yum仓库

 

1.程序包的组成部分

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

    库文件:/lib64,/usr/lib64

    配置文件:/etc

    帮助文件:manual,info,INSTALL,

 

2.包管理器

Debian的软件包管理工具命令:dpkg,apt-get

CentOS/Redhat常用软件包管理工具命令:rpm,yum

3.rpm

 1)rpm包说明

    RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统 (RHEL) 的既定软件标准。与 RPM 进行竞争的是基于 Debian 操作系统 (UBUNTU) 的 DEB 软件包管理工具- DPKG,全称为 Debian Package,功能方面与 RPM 相似。二者之具体比较不在本文范围之内。

 2)如何获取rpm

(1)发行版提提供的程序包

(2)Fedora-EPEL

(3)项目的官方站点

(4)搜索引擎

   http://rpmfind.net

   http://rpm.pbone.net

   http://pkgs.org

        

 3)rpm命令:实现对程序包管理


RPM软件包常用的命令规范如下:

lrzsz-0.12.20-36.el7.x86_64.rpm 

说明:

lrzsz :软件名字

0.12.20-36:软件版本号,

el7:针对于RHEL7的发现版本,

x86_64:表示运行在64位上的系统。


(1)安装

rpm -ivh PACKAGE_FILE

    -i 安装rpm包

    -v:显示详细信息

    -h:显示文本进度条

    --nodeps:忽略依赖关系安装

    --relacepkgs:重装程序包

示例:安装

[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# cd /mnt/Packages/
[root@localhost Packages]# rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:lrzsz-0.12.20-36.el7             ################################# [100%]

(2)升级                  

rpm-[Uvh|Fvh_ PACKAGE_FILE

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

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

    --oldpackage:降级;

    --force:强制安装。

(3)卸载

rpm-e RACKAGE_NAME

示例:

[root@localhost Packages]# rpm -e lrzsz
[root@localhost Packages]# rpm -qa lrzsz

(4)查询

rpm-q PACKAGE_NAME

查询选项:

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

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

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

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

  -qi:查询指事实上的程序包的相关信息;

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

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

     preinstall:安装前脚本

     postinstall:安装后脚本

     preuninstall:卸载前脚本

     postiuninstall:卸载后脚本

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

RPM常用查询命令:

rpm -qa   列出所有已安装的rpm软件

rpm -qf filename  查询指定文件属于哪个rpm包

rpm -qi packagename  查询已软件包的信息

rpm -ql packagename  查询指定软件包包含的文件

rpm -qip software.rpm 查询rpm文件的信息

rpm -qilp software.rpm  查询rpm文件包含的文件

示例:

[root@LiuHui Packages]# rpm -qa lrzsz
lrzsz-0.12.20-36.el7.x86_64
[root@LiuHui ~]# rpm -qa
tuned-2.4.1-1.el7.noarch
centos-release-7-1.1503.el7.centos.2.8.x86_64
aic94xx-firmware-30-6.el7.noarch
filesystem-3.2-18.el7.x86_64
openssh-server-6.6.1p1-11.el7.x86_64
ncurses-base-5.9-13.20130511.el7.noarch
openssh-clients-6.6.1p1-11.el7.x86_64
linux-firmware-20140911-0.1.git365e80c.el7.noarch
selinux-policy-targeted-3.13.1-23.el7.noarch
[root@LiuHui Packages]# rpm -qip lrzsz-0.12.20-36.el7.x86_64.rpm 
Name        : lrzsz
Version     : 0.12.20
Release     : 36.el7
Architecture: x86_64
Install Date: (not installed)
Group       : Applications/Communications
Size        : 184846
License     : GPLv2+
Signature   : RSA/SHA256, Thu 03 Jul 2014 11:35:32 PM EDT, Key ID 24c6a8a7f4a80eb5
Source RPM  : lrzsz-0.12.20-36.el7.src.rpm
Build Date  : Mon 09 Jun 2014 07:29:11 PM EDT
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.ohse.de/uwe/software/lrzsz.html
Summary     : The lrz and lsz modem communications programs
Description :
Lrzsz (consisting of lrz and lsz) is a cosmetically modified
zmodem/ymodem/xmodem package built from the public-domain version of
the rzsz package. Lrzsz was created to provide a working GNU
copylefted Zmodem solution for Linux systems.
[root@LiuHui ~]# rpm -ql lrzsz
/usr/bin/rb
/usr/bin/rx
/usr/bin/rz
/usr/bin/sb
/usr/bin/sx
/usr/bin/sz
/usr/share/locale/de/LC_MESSAGES/lrzsz.mo
/usr/share/man/man1/rz.1.gz
/usr/share/man/man1/sz.1.gz

(5)校验

rpm -K software.rpm #验证rpm文件

rpm -V softname #验证已安装的软件

验证通常是使用非对称的加密算法,所以就需要一个密钥。一般的RPM软件包里面都加入了密钥,如果没有加入我们可以通过 rpm --import RPM-GPG-KEY-CentOS-6 命令手动加入即可。

示例:

[root@LiuHui Packages]# rpm -K lrzsz-0.12.20-36.el7.x86_64.rpm 
lrzsz-0.12.20-36.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
[root@LiuHui Packages]# rpm -V audit
[root@LiuHui Packages]#

如果没有出现任何错误,就表示该软件是完整的,没有被修改。


4.YUM软件管理

使用YUM的特点:

(1)自动解决依赖性问题

(2)可以对RPM进行分组,并基于组来进行安装操作

(3)引入了仓库的概念,支持多个仓库

(4)配置简单

仓库可以是本地的,也可是互联网上的,可以通过http、ftp或者nfs等形式使用集中的、统一的网络仓库


1)yum程序的配置文件

(1)/etc/yum.conf

   定义全局配置:对所有创库都适用的配置

(2)/etc/yum.repos.d/*.repo

   定义一个以.repo结尾的文件常用于一个或一组功能相近或相关的仓库

(3)定义一个仓库指向

示例:

[root@LiuHui yum.repos.d]# cat CentOS-bendi.repo 
[bendi]    #仓库名字
name=This is beidi cdrom's rpm soft repo    #仓库描述
baseurl=file:///mnt/    #仓库地址,可以是http,ftp,nfs等网络仓库地址,这是里本地仓库地址
enabled=1    #1表示使用这个仓库,默认就是1
gpgcheck=1   #是否启用软件校验,

2)yum命令:

(1)安装 install

(2)卸载 remove

(3)升级 update

(4)查询

yum search 关键字

yum list (all|installed|recent|updates)  #列出全部的、安装的、最近的、更新的软件

yum info packagename    #显示软件信息

  -y #自动安装,不用确认

示例:

[root@LiuHui ~]# yum install lrzsz
Loaded plugins: fastestmirror
base                                   | 3.6 kB     00:00     
epel/x86_64/metalink                   | 4.9 kB     00:00     
epel                                   | 4.3 kB     00:01     
extras                                 | 3.4 kB     00:00     
updates                                | 3.4 kB     00:00     
(1/2): epel/x86_64/primary_db            | 3.5 MB   00:40     
epel/x86_64/updateinfo         FAILED                                          
http://mirrors.isu.net.sa/pub/fedora/fedora-epel/7/x86_64/repodata/6822870af83ae6bcdbfeded540fb33c3c5f8a5dcd3c16d283f3d7dc4ad351b32-updateinfo.xml.bz2: [Errno 12] Timeout on http://mirrors.isu.net.sa/pub/fedora/fedora-epel/7/x86_64/repodata/6822870af83ae6bcdbfeded540fb33c3c5f8a5dcd3c16d283f3d7dc4ad351b32-updateinfo.xml.bz2: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds')
Trying other mirror.
(2/2): epel/x86_64/updateinfo            | 355 kB   00:04     
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * epel: ftp.cuhk.edu.hk
 * extras: mirrors.aliyun.com
 * updates: mirrors.sina.cn
Resolving Dependencies
--> Running transaction check
---> Package lrzsz.x86_64 0:0.12.20-36.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================
 Package    Arch        Version               Repository
                                                      Size
==============================================================
Installing:
 lrzsz      x86_64      0.12.20-36.el7        base       78 k
Transaction Summary
==============================================================
Install  1 Package
Total download size: 78 k
Installed size: 181 k
Is this ok [y/d/N]: y
Downloading packages:
lrzsz-0.12.20-36.el7.x86_64.rpm          |  78 kB   00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : lrzsz-0.12.20-36.el7.x86_64                1/1 
  Verifying  : lrzsz-0.12.20-36.el7.x86_64                1/1 
Installed:
  lrzsz.x86_64 0:0.12.20-36.el7                               
Complete!
[root@LiuHui ~]# yum remove lrzsz
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package lrzsz.x86_64 0:0.12.20-36.el7 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================
 Package    Arch        Version              Repository  Size
==============================================================
Removing:
 lrzsz      x86_64      0.12.20-36.el7       @base      181 k
Transaction Summary
==============================================================
Remove  1 Package
Installed size: 181 k
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : lrzsz-0.12.20-36.el7.x86_64                1/1 
  Verifying  : lrzsz-0.12.20-36.el7.x86_64                1/1 
Removed:
  lrzsz.x86_64 0:0.12.20-36.el7                               
Complete!
[root@LiuHui ~]# 
[root@LiuHui ~]# yum clean all  #清除yum缓存
Loaded plugins: fastestmirror
Cleaning repos: base bendi epel extras updates
Cleaning up everything
Cleaning up list of fastest mirrors
[root@LiuHui ~]# yum list    #列出仓库
Loaded plugins: fastestmirror
base                                   | 3.6 kB     00:00     
bendi                                  | 3.6 kB     00:00     
epel/x86_64/metalink                   | 5.3 kB     00:00     
epel                                   | 4.3 kB     00:00     
extras                                 | 3.4 kB     00:00     
updates                                | 3.4 kB     00:00

 3)创建自己的本地yum仓库

(1)创建本地yum仓库

[root@LiuHui ~]#mount /dev/cdrom /mnt
[root@LiuHui yum.repos.d]# mkdir /bendi.yum
[root@LiuHui yum.repos.d]# cd /bendi.yum/
[root@LiuHui bendi.yum]# cp -rv /mnt/Packages/* .

(2)创建repo文件

[root@LiuHui yum.repos.d]# cat bendi.repo 
[bendi]
name=This is bendi's yum repo
baseurl=file:///bendi.yum/

(3)安装createrepo

[root@LiuHui Packages]# rpm -ivh createrepo-0.9.9-23.el7.noarch.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:createrepo-0.9.9-23.el7          ################################# [100%]

(4)创建索引

[root@LiuHui bendi.yum]# createrepo -v .

注:需要将网络yum源移动到备份文件夹下。再清空缓存,列出仓库下的包

[root@LiuHui yum.repos.d]# mkdir back
[root@LiuHui yum.repos.d]# mv CentOS-* epel* back/
[root@LiuHui yum.repos.d]# ls
back  bendi.repo
[root@LiuHui repodata]# yum clean all  
Loaded plugins: fastestmirror
Cleaning repos: bendi
Cleaning up everything
[root@LiuHui repodata]# yum list
Loaded plugins: fastestmirror
bendi                                  | 2.9 kB     00:00     
bendi/primary_db                         | 2.7 MB   00:00     
Determining fastest mirrors
Installed Packages

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