首页 > 代码库 > rpm与yum命令的初步认识

rpm与yum命令的初步认识

RPM:Red Hat package manager(RedHat软件包管理工具),现在为RPM is Package Manager好比windows里的文件扩展名为·exe的软件包。

 

RPM的包装包到底是什么啦?

它是二进制包(binary)以及源代码包(source)的两种。二进制包里边包括了已经通过编译,你只需要下载和解包,便可以在计算机上运行了。而源代码包里只有程序的原始代码,需要我们自己在计算机上先编译以后才可以运行程序。而我这里讲到的源码包是通过rpm包的自动编译和安装。Rpm编译的源代码包通常以src.rpm作为后缀名。

 

程序包的版本:

比如 testapp-version

注解:

version: x.y.z=major.minor.release

major ß--à x :主版号

minor ß--à y:次版号

 

release ßà release : 发行号,修订版

RPM 包的命名:name-Major.minor.Release.arch.rpm

其中Arch:是适用的硬件平台

如 X86系列:i386,i486,i586,i686等

noarch :跟硬件平台无关

 

RPM包还有分包机制

核心包,主包:命名与源程序包名一致

如 bash-4.3.2-1.centos6.x86_64.rpm

子包(支包):如 bash-devel-4.3.2-1.centos.x86_64.rpm

devel是 develop 的缩写 开发的意思, 有devel的包就是开发包,你要编译安装某些软件会提示你缺少那些开发包然后就可以根据这个装上.

 

RPM安装语法:

            rpm {-i|--install} [install-options] PACKAGE_FILE ...

常用命令组合:

-ivh:安装显示安装进度--install--verbose--hash-Uvh:升级软件包--Update;-qpl:列出RPM软件包内的文件信息[Query Package list];-qpi:列出RPM软件包的描述信息[Query Package install package(s)];-qf:查找指定文件属于哪个RPM软件包[Query File];-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];-e:删除包

 

 

相应的案例可以形象的带大家去理解rpm命令的运用,不过大家还是多多 man rpm 一下,用到的时候,多留意下。

rpm -q samba //查询程序是否安装

rpm -ivh  /media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm //
按路径安装并显示进度
rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm    //
指定安装目录

rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm
   
 //用来检查依赖关系;并不是真正的安装;
rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm //
新版本降级为旧版本

rpm -qa | grep httpd
      [搜索指定rpm包是否安装]--all搜索*httpd*
rpm -ql httpd
         #[搜索rpm]--list所有文件安装目录

rpm -qpi Linux-1.4-6.i368.rpm
 #[查看rpm]--query--package--install package信息
rpm -qpf Linux-1.4-6.i368.rpm
 #[查看rpm]--file
rpm -qpR file.rpm
       #[查看包]依赖关系
rpm2cpio file.rpm |cpio -div    
[抽出文件]

rpm -ivh file.rpm 
 #[安装新的rpm]--install--verbose--hash
rpm -ivh

rpm -Uvh file.rpm    
[升级一个rpm]--upgrade
rpm -e file.rpm      
[删除一个rpm]--erase

 

 

常用参数:

 

 


-i, --install                     install package(s)
-v, --verbose                     provide more detailed output
-h, --hash                        print hash marks as package installs (good with -v)
-e, --erase                       erase (uninstall) package
-U, --upgrade=<packagefile>+      upgrade package(s)
-replacepkge                    无论软件包是否已被安装,都强行安装软件包
--test                            
安装测试,并不实际安装
--nodeps                          
忽略软件包的依赖关系强行安装
--force                           
忽略软件包及文件的冲突

Query options (with -q or --query):
-a, --all                         query/verify all packages
-p, --package                     query/verify a package file
-l, --list                        list files in package
-d, --docfiles                    list all documentation files
-f, --file                        query/verify package(s) owning file

 

 

RPM源代码包装安装

.src.rpm结尾的文件,这些文件是由软件的源代码包装而成的,用户要安装这类RPM软件包,必须使用命令:

  

rpm --recompile vim-4.6-4.src.rpm   #这个命令会把源代码解包并编译、安装它,如果用户使用命令:

rpm --rebuild vim-4.6-4.src.rpm  #在安装完成后,还会把编译生成的可执行文件重新包装成i386.rpm的RPM软件包。

 

 

Yum专题的随笔

一· 首先得了解我们为什么要了解yum,它有何特殊地位???

Yum是通过分析rpm的标题数据后,根据各软件的相关性制作出依赖时的解决方案,通俗的讲就是rpm安装一个软件,它只是安装这个软件包,而与这个软件有依赖关系的软件包,是不会安装的。可是我们的yum就是在rpm的基础上,既把你想要安装的软件包给安装了,还会自动分析与这个软件包相依赖的所有软件包,并且一一下载并为你安装好。这是多么人性化,主要是省了我们不少时间。

 

二. 利用yum进行查询,安装,升级与删除功能

yum的使用真的很简单,就是用yum这个命令来。

  1. 查询功能: yum [list | info | search |provides |whatprovides] 参数

 

[root@localhost ~]# yum [option] [查询工作项目] [相关参数] 包名

[option] : 主要的选项,包括有:

-y : 当yum 要等待用户输入时,这个选项可以自动安装

--installroot=/some/path:将该软件安装在 /some/path 中而不使用默认路径

 

[查询工作项目] [相关参数]:

search :搜索某个软件名称或者是描述的重要关键字;

list :列出目前yum所管理的所有软件名称与版本,有点类似 rpm -qa ;

info :同上,不过有点类似于 rpm -qf 的功能

 

 

范例 1 :搜索磁盘阵列(raid)相关的软件有哪些?

[root@localhost ~]# yum search raid

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

========================================= N/S Matched: raid ==========================================

dmraid.i686 : dmraid (Device-mapper RAID tool and library)

dmraid.x86_64 : dmraid (Device-mapper RAID tool and library)

 

范例 2 : 找出mdadm 这个软件的功能为何?

[root@localhost ~]# yum info mdadm

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

Installed Packages

Name : mdadm

Arch : x86_64

Version : 3.3

Release : 6.el6

Size : 819 k

Repo : installed

From repo : anaconda-CentOS-201410241409.x86_64

Summary : The mdadm program controls Linux md devices (software RAID arrays)

URL : http://www.kernel.org/pub/linux/utils/raid/mdadm/

License : GPLv2+

Description : The mdadm program is used to create, manage, and monitor Linux MD (software

: RAID) devices. As such, it provides similar functionality to the raidtools

: package. However, mdadm is a single program, and it can perform

: almost all functions without a configuration file, though a configuration

: file can be used to help with some common tasks.

 

 

范例 3 : 列出yum 服务器上面提供的所有软件名称

[root@localhost ~]# yum list

zabbix22-server-mysql.x86_64 2.2.1-5.el6 epel

zabbix22-server-pgsql.x86_64 2.2.1-5.el6 epel

zabbix22-web.noarch 2.2.1-5.el6 epel

" 软件名称 " " 版本 " " 在哪个仓库里 "

 

范例 4:列出目前服务器上可供本机进行升级的软件有哪些

[root@localhost ~]# yum list updates //一定要 updates

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

 

范例 5:列出提供nginx 这个文件的软件有哪些

[root@localhost ~]# yum provides nginx

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

nginx-1.0.15-5.el6.x86_64 : A high performance web server and reverse proxy server

repo : epel

Matched from:

找到了,可以从容器repo或是epel里找到

 

我们来个小练习吧。

利用yum 的功能,找出http为开头的软件名称有哪些

[root@localhost ~]# yum list http*

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

Installed Packages

httpd.x86_64 2.2.15-39.el6.centos @anaconda-CentOS-201410241409.x86_64/6.6

httpd-tools.x86_64 2.2.15-39.el6.centos @anaconda-CentOS-201410241409.x86_64/6.6

Available Packages

http-parser.i686 2.0-4.20121128gitcd01361.el6 epel

http-parser.x86_64 2.0-4.20121128gitcd01361.el6 epel

接下来就是谈谈安装与升级功能:

[root@localhost ~]# yum [install | update] 软件包

Install : 后边要接安装的软件

update : 后边要接升级的软件,若想升级整个系统,直接update便可以;

实例1 安装tree 软件

[root@localhost ~]# yum install tree -y

Loaded plugins: fastestmirror, refresh-packagekit, security

Setting up Install Process

Loading mirror speeds from cached hostfile

Resolving Dependencies

--> Running transaction check

---> Package tree.x86_64 0:1.5.3-2.el6 will be installed

--> Finished Dependency Resolution

 

Dependencies Resolved

 

===============================================================================================================

Package Arch Version Repository Size

===============================================================================================================

Installing:

tree x86_64 1.5.3-2.el6 base 36 k

 

Transaction Summary

===============================================================================================================

Install 1 Package(s)

 

Total download size: 36 k

Installed size: 65 k

Downloading Packages:

tree-1.5.3-2.el6.x86_64.rpm | 36 kB 00:00

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Installing : tree-1.5.3-2.el6.x86_64 1/1

Verifying : tree-1.5.3-2.el6.x86_64 1/1

 

Installed:

tree.x86_64 0:1.5.3-2.el6

 

Complete!

 

 

 

删除功能:yum remove 软件名称

[root@localhost ~]# yum remove tree

Loaded plugins: fastestmirror, refresh-packagekit, security

Setting up Remove Process

Resolving Dependencies

--> Running transaction check

---> Package tree.x86_64 0:1.5.3-2.el6 will be erased

--> Finished Dependency Resolution

 

Dependencies Resolved

 

======================================================================================================

Package Arch Version Repository Size

======================================================================================================

Removing:

tree x86_64 1.5.3-2.el6 @anaconda-CentOS-201410241409.x86_64/6.6 65 k

 

Transaction Summary

======================================================================================================

Remove 1 Package(s)

 

Installed size: 65 k

Is this ok [y/N]: y

Downloading Packages:

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Erasing : tree-1.5.3-2.el6.x86_64 1/1

Verifying : tree-1.5.3-2.el6.x86_64 1/1

 

Removed:

tree.x86_64 0:1.5.3-2.el6

 

Complete!

三. yum 的设置文件

 

    yum repository: yum仓库

        存储了众多rpm包,以及包的相关元数据的文件(放在repodata目录中)服务器

 

        文件服务器:

            http://

            ftp://

            nfs://

            file:///

repodata目录就是分析RPM软件后所产生的软件属性依赖数据放置处。我们来修改一下设置文件吧:在[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Base.repo 修改下[REPO_ID],name,baseurl,enabled,gpgcheck这几个重要的,其它可以自行决定有否。

 

 

    yum客户端:

        配置文件:指向仓库的位置以及各种配置信息;每个yum客户可以有多个可用的yum仓库;

 

        有两部分组成:

            主配置文件:/etc/yum.conf

             /etc/yum.repos.d/*.repo

 

            仓库定义:

            [REPO_ID] //这个没有强制规定,根据自己的选择,来定一个容器的名字

            name=REPO description //来形象说明这个容器是什么

            baseurl=ftp://172.16.0.1/pub/CentOS6/ //这个非常非常重要,后面接的是容器的实际网址

            enabled={1|0} //是否启动这个容器

            gpgcheck={1|0} //进行自检,也就是数字证书认证

            gpgkey=ftp://172.16.0.1/pub/CentOS6/gpg-key //数字证书的公钥文件的所在位置。

 

实例 1 : 列出目前yum server 所有的容器有哪些?

[root@localhost ~]# yum repolist all

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

Repoid reponame status

C6.0-base CentOS-6.0 - Base disabled

epel Fedora EPEL for CentOS6 x86_64 on local server 172.16.0.1 enabled: 12,922

extra CentOS 6 x86_64 extras enabled: 2,334

 

 

 

 

制作yum仓库

我想给大家来个实战的,大体的思路是先制作本地(yum源)yum仓库???

首先我的是CentOS6.6,而我的本地要的镜像是CentOS-5.11-x86_64-bin-DVD-1of2,

朋友们自己做实验的时候,随便下载和自己系统一样的的镜像。废话不多说了。

前期准备阶段:

  1. 先挂载 CentOS-5.11-x86_64-bin-DVD-1of2 的镜像,如下所示
  2.  

3. 把CentOS-5.11-x86_64-bin-DVD-1of2 的镜像挂载到指定目录下,通常是挂载到 /mnt/cdrom 下

#mount /dev/cdrom /mnt/cdrom

5. cd /etc/yum.repos.d

6. # ls 一下如果看到有Centos-Base.repo 文件,朋友可以用 vim Centos-Base.repo 进入编辑 enable=0 ,因为我们是制作本地yun源,所以要禁止Centos-Base.repo 文件从互联网上寻找 mirror(镜像) 。

 

7.我们在/etc/yum.repos.d 目录下新建一个文件以 .repo结尾,我的是 CentOS.repo 文件

再用 vim CentOS.repo ,修改下几个重要项:

[c5-Media]

name=CentOS 5.11

baseurl=file:///mnt/cdrom //这里是我之前镜像挂载的路径

gpgcheck=0

 

8. # yum list //执行下。到这里本地yum仓库就作好了。

 

 

现在来制作本地外的yum源,具体的步骤和前面的差不多,但其中也有一些需要变动的,莫怕,我来给朋友一一道来:

 

 

第一步:# cd /etc/yum.repos.d

第二步:我是在/etc/yum.repos.d目录下,新建一个文件 touch CentOS-network.repo ;还有就是我们 得进入CentOS-Base.repo文件下,vim CentOS-Base.repo , 修改下 选项 enable=1,这样默认是从互联网上搜索yum源。

第三步 : 进入CentOS-network.repo 文件下:vim CentOS-network.repo,修改下具体的选项:(这里我就义装个CentOS6为例)

 

[CentOS-network]

name=CentOS6

baseurl=http://172.16.0.1/cobbler/ks_mirror/CentOS -6.6-X86_64 //这里是我的老师在教室里配置的yum仓库,如果没有找到,会默认从互联网上,如网易,搜狐等镜像站点。。。。。。。。。

enable=1

gpgcheck=0

 

 

 

朋友按照我的配置来,我想问题应该不会太大吧。。。

rpm与yum命令的初步认识