rpm 打包及其命令

PRM打包:

RPM打包使用的是rpmbuild命令,这个命令来自rpm-build包,这个是必装的。

$ yum install rpm-build

当然也可以直接安装rpmdevtools,这个工具还包含一些其他的工具,同时它依赖rpm-build,所以直接安装的话会同时把rpm-build装上。

$ yum install rpmdevtools

原理

RPM打包的时候需要编译源码,还需要把编译好的配置文件啊二进制命令文件啊之类的东西按照安装好的样子放到合适的位置,还要根据需要对RPM的包进行测试,这些都需要先有一个“工作空间”。rpmbuild命令使用一套标准化的“工作空间”:

$ rpmdev-setuptree

rpmdev-setuptree这个命令就是安装rpmdevtools带来的。可以看到运行了这个命令之后,在$HOME家目录下多了一个叫做rpmbuild的文件夹,里边内容如下:

$ tree rpmbuild

rpmbuild

├── BUILD

├── RPMS

├── SOURCES

├── SPECS

└── SRPMS

如果没有安装rpmdevtools的话,其实用mkdir命令创建这些文件夹也是可以的。

mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

从这些文件的名字大体也能看得出来都是干嘛用的。具体来说:

默认位置

宏代码

名称

用途

~/rpmbuild/SPECS

%_specdir

Spec 文件目录

保存 RPM 包配置(.spec)文件

~/rpmbuild/SOURCES

%_sourcedir

源代码目录

保存源码包(如 .tar 包)和所有 patch 补丁

~/rpmbuild/BUILD

%_builddir

构建目录

源码包被解压至此,并在该目录的子目录完成编译

~/rpmbuild/BUILDROOT

%_buildrootdir

最终安装目录

保存 %install 阶段安装的文件

~/rpmbuild/RPMS

%_rpmdir

标准 RPM 包目录

生成/保存二进制 RPM 包

~/rpmbuild/SRPMS

%_srcrpmdir

源代码 RPM 包目录

生成/保存源码 RPM 包(SRPM)

环境搭好之后编辑一个.spec文件。然后用这个文件进行打包:

$ rpmbuild -ba hello.spec

从spec文档建立有以下选项:

-bp  #只执行spec的%pre 段(解开源码包并打补丁,即只做准备)

-bc  #执行spec的%pre和%build 段(准备并编译)

-bi  #执行spec中%pre,%build与%install(准备,编译并安装)

-bl  #检查spec中的%file段(查看文件是否齐全)

-ba  #建立源码与二进制包(常用)

-bb  #只建立二进制包(常用)

-bs  #只建立源码包

spec文档中常用的几个宏(变量)

1. RPM_BUILD_DIR:    /usr/src/redhat/BUILD

2. RPM_BUILD_ROOT:   /usr/src/redhat/BUILDROOT

3. %{_sysconfdir}:   /etc

4. %{_sbindir}:     /usr/sbin

5. %{_bindir}:       /usr/bin

6. %{_datadir}:      /usr/share

7. %{_mandir}:       /usr/share/man

8. %{_libdir}:       /usr/lib64

9. %{_prefix}:       /usr

10. %{_localstatedir}:   /usr/var

其实以上参数值都是在/usr/lib/rpm/macros文件中定义的。

 

RPM命令:

RPMRedHat Package ManagerRedHat软件包管理工具)类似Windows里面的“添加/删除程序”

rpm 执行安装包

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

常用参数:

Install/Upgrade/Erase options:

-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

常用命令组合:

-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:删除包

EXAMPLE:

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 -Uvh file.rpm    #[升级一个rpm]--upgrade

rpm -e file.rpm      #[删除一个rpm包]--erase

RPM源代码包装安装

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

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

rpm  --rebuild  vim-4.6-4.src.rpm    #在安装完成后,还会把编译生成的可执行文件重新包装成i386.rpm的RPM软件包。
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
制作 OpenSSH 和 OpenSSL RPM 包的步骤大致如下: 1. 下载 OpenSSH 和 OpenSSL 的源代码。 2. 安装 RPM 打包工具及其依赖项。例如,在 CentOS 或 Red Hat 系统中,可以使用以下命令安装: ``` yum install rpm-build rpmdevtools ``` 3. 创建 RPM 打包环境。在终端中运行以下命令: ``` rpmdev-setuptree ``` 4. 将 OpenSSH 和 OpenSSL 源代码放置到 RPM 打包环境的 `SOURCES` 目录中。 5. 创建 RPM 包的描述文件 `SPEC`。在此文件中,定义了 RPM 包的基本信息、依赖关系、安装、卸载、配置等操作。可以使用文本编辑器创建 `SPEC` 文件。 6. 构建 RPM 包。在终端中运行以下命令: ``` rpmbuild -ba /path/to/your.spec ``` 其中 `/path/to/your.spec` 是 `SPEC` 文件的路径。在构建 RPM 包的过程中,会自动执行编译、打包、签名、生成元数据等操作。 7. 查看生成的 RPM 包。在 RPM 打包环境的 `RPMS` 目录中,会生成两个版本的 RPM 包:一个是源代码 RPM(SRPM),另一个是二进制 RPM。可以使用以下命令查看生成的 RPM 包: ``` ls ~/rpmbuild/RPMS/x86_64/ ``` 其中 `x86_64` 是系统架构,可以根据实际情况进行调整。 8. 安装 RPM 包。在终端中运行以下命令: ``` rpm -ivh /path/to/package.rpm ``` 其中 `/path/to/package.rpm` 是 RPM 包的路径。安装完成后,可以使用以下命令验证安装是否成功: ``` rpm -qa | grep package ``` 其中 `package` 是 RPM 包的名称。如果成功安装,会输出 RPM 包的版本号;否则,什么都不会输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值