Introduction

另见apt-get

rpm 是由红帽公司开发的软件包管理方式, 使用 rpm 我们可以方便的进行软件的安装, 查询, 卸载, 升级等工作.

yum(Yellow dog Updater, Modified), 在 Fedora 和 RedHat 下进行关于 rpm 包的软件包管理器, 类似 ubuntu 下的 apt-get.

基於 RPM 包管理, 能够从指定的服务器自动下载 RPM 包并且安装, 可以自动处理依赖性关系, 并且一次安装所有依赖的软体包, 无须繁琐地一次次下载, 安装.

yum

搜索包

定向搜索命令:yum search package1

List 搜索命令:

  • 列出所有可安装的包:yum list
  • 列出某个包的可安装版本:yum list
  • 列出组信息:yum grouplist
  • 列出所有可更新的包:yum list updates
  • 列出所有已安装的包:yum list installed
  • 列出所有已安装但是不在 yum 仓库中的软件包:yum list extras
  • 列出某个软件包提供了哪些文件:yum provides

包信息

  • 命令:yum info
  • 列出所有包的信息: yum info

Uninstall

  • 删除指定包:yum remove
  • 清空 yum 保存的所有: yum clean all
  • 清空保存的数据信息: yum clean metadata

Install

  • 普通安装:: sudo yum install
  • 重新安装: sudo yum -y reinstall
  • 本地安装(安装已经下载到本地的 rpm 包): sudo yum -y localinstall

Update

  • 列出更新清单: sudo yum check-update
  • 安装所有更新软件: sudo yum update
  • 安装指定软件: sudo yum update

rpm

RPM(RedHat Package Management)

包格式

软件包名 + 软件版本号 + (系统发行号,系统名) + 硬件架构或者硬件平台, (name-version-release.arch.rpm)

对应包 gd-devel-2.0.35-11.el6.x86_64.rpm:

  • 软件包名:主包名-gd,分包名-devel
  • 版本号:2.0.35(2 为主版本,0 为次版本,35 为修订号)
  • 系统信息:11.el6(11 为发行号,el6 位 RHEL6)
  • 硬件架构:64 X86 平台(i386,i686,noarch 表示软件包和硬件架构无关,通用)

通用性

  • 不同系统下编译好的 rpm 仅仅适用于当前系统环境,如上面所述的 2RH 标识仅仅适用于 2RH 系统
  • 对于 src.rpm 发行的软件包,安装时还需要进行本地编译,所以是通用的。

命令格式

rpm 【选项】 【rpm 软件包名】

初始化 rpm 数据库

  • rpm –initdb
  • rpm –rebuilddb %:需要花费大量的时间

包查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 格式:
rpm -q 【selection-options】 【query-options】,其中-q标识--query

# 查询已安装软件
rpm -q 软件包名

# 查询所有已安装包名
rpm -qa

# 查询某一个.a/.so/exe文件术语哪一个包
rpm -qf 绝对路径文件

# 查询某一个软件包的安装位置
rpm -ql 软件包名(loacation)

# 查询安装软件包的信息(info)
rpm -qi 软件包名

# 查询已安装软件包的配置文件(conf)
rpm -qc 软件包名

# 查询已安装软件包的文档放置位置(document)
rpm -qd 软件包名

# 查询依赖关系
rpm -qR 软件包名

Uninstall and Upgrade

  • 卸载: rpm -e 软件包名
  • 本地安装: rpm -i 软件包名
  • 网络安装: rpm -ivh http 或者 ftp 地址
  • 包校验: rpm -Va 软件包名
  • 升级包: rpm -Uvh 软件包名

Install by src.rpm

rpmbuild 安装:

1
2
3
4
5
# 编译安装
rpmbuild --recompile 软件包名.src.rpm,编译、解压压、安装

# 编译, 安装, 打包
rpmbuild --rebuild 软件包名.src.rpm,编译、安装、重新打包为.rpm包

解包并通过 rpmbuild 安装:

1
2
3
4
5
6
7
8
# 解包:
rpm -i 狂想写作本.src.rpm
# 生成.rpm包
cd /usr/src/redhat/SPECS
# 此时会在/usr/src/redhat/RPM/i386/下面生成rpm包
rpmbuild -bb 狂想写作本.specs
# 安装rpm包
rpm -i 狂想写作本.rpm

解包并通过源码安装:

1
2
3
4
5
6
7
8
# 解包
rpm -i 狂想.src.rpm
# 解压源码和补丁
cd /usr/src/redhat/SPECS
rpm -bp 狂想.specs
# 源码安装
cd /usr/src/redhat/BUILD/狂想/
./configure && make && make install

rpmbuild

目录结构

  • BUILD:编译前,解压包之后的文件存放目录
  • BUILDROOT:编译后的所有.obj 文件存放目录
  • RPMS:打包结束后,生成的 rpm 包存放目录
  • SOURCES:源码包的存放目录
  • SPECS:.spec 脚本的存放目录
  • SPRMS:.src.rpm 的存放目录

Command

格式: rpmbuild 【选项】 【包名.spec|tar 包|源码包】

选项:

1
2
3
从文件<specfile>建立包;
从压缩包<tarball>建立rpm包
从源码<src package>建立rpm包

specfile 操作命令:

1
2
rpm  -bp  a.src.rpm               解开源码包、打补丁
rpm -bc