RPM包制作(三)构建rpm包的示例-来自红帽原厂课件

下面展示了构建RPM包的示例。包的名称是test,版本是1.0,。它将提供一个单独的文件/usr/local/bin/myscript,它只运行date命令。

首先,在RHEL 6工作站desktopY上创建一个名为student的非根用户。您将使用这个帐户安全地构建您的RPM包。

[root@desktopY -]# useradd student

[root@desktopY -]# passwd student

以student身份登录并创建源目录、文件和tarball:

[student@desktopY ~]$ mkdirtest-1.0

[student@desktopY ~]$ cat<< EOF > test-1.0/myscript

#!/bin/bash

date

EOF

[student@desktopY ~]$ tarczvf test-1.0.tar.gz test-1.0

在你的主目录中使用vim创建一个spec文件:

[student@desktopY ~]$ vimtest.spec

Name: test

Version: 1.0

Release: 1%{?dist}

Summary: A test package

Group: Testing

License: GPL

URL: http://www.example.com/testing

Source0: %{name}-%{version}.tar.gz

BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

BuildArch: noarch

BuildRequires: /bin/rm,/bin/mkdir, /bin/cp

Requires: /bin/bash,/bin/date

%description

A testing package meant todeploy a single file.

%prep

%setup -q

%build

#configure

#make %{?_smp_mflags}

%install

rm -rf $RPM_BUILD_R00T

#make installDESTDIR=$RPM_BUILD_ROOT

mkdir - p$RPM_BUILD_ROOT/usr/local/bin

cp myscript$RPM_BUILD_ROOT/usr/local/bin

%clean

rm -rf $RPM_BUILD_R00T

%files

%defattr(-,root,root,-)

#%doc

%attr(0755,root,root)/usr/local/bin/myscript

%changelog

  • Initial RPM

  • Added /usr/local/bin/myscript

%{name}和%{version}宏定义在上面的Name:和Version:行中。另外,您也可以使用test-1.0.tar.gz。

因为RPM只包含一个shell脚本,它可以在所有的架构上工作,所以将BuildArch指定为noarch。

rm、mkdir和cp都来自coreutils包,因此可以指定该包而不是命令。这些是%install一节中使用的命令。

有些宏即使注释了也能运行,%configure就是其中之一。如果你像这样注释%configure,它会提示找不到./configure。完全删除%configure行或从configure中删除%。

添加了% attr,强制允许到0755。注意,% defattr在权限位置有个-。这意味着文件将得到他们在tarball中拥有的相同权限。产生相同结果的替代方法是运行chmod 755test-1.0/myscript并重建tarball。

以root安装rpm-build:

[root@desktopY ]# yum install-y rpm-build

以student用户运行rpmbuild。第一次运行它时,您将得到一个错误。您将很快修复该错误。运行rpmbuild命令将创建构建RPM包所需的目录结构。

[student@desktopY -]$rpmbuild test.spec

error: File/home/student/rpmbuild/SOURCES/test-1.0.tar.gz: No such file or directory

将文件复制到正确的位置:

[student@desktopY ~]$ cptest-1.0.tar.gz rpmbuild/SOURCES/

[student@desktopY ~]$ cptest.spec rpmbuild/SPECS/

[student@desktopY ~]$ cdrpmbuild/SPECS/

Build and sign the package:

[student@desktopY -]$rpmbuild -ba test.spec

[student@desktopY ~]$ rpm–resign ~/rpmbuild/RPMS/x86_64/test-1.0-1.el6.x86_64.rpm

Enter pass phrase: testing123

Pass phrase is good.

在rpmbuild的输出中查找错误,并解决您发现的任何问题。如果没有错误,你应该找到:

Wrote:/home/student/rpmbuild/SRPMS/test-1.0-1.el6.src .rpm

Wrote:/home/student/rpmbuild/RPMS/x86_64/test-1.0-1.el6.x86_64.rpm

通过安装密钥,安装包和运行命令来测试包。

[root@desktopY ~]# rpm–import /home/student/RPM-GPG-KEY-student

[root@desktopY ~]# cd/home/student/rpmbuild/RPMS/x86_64

[root@desktopY ~]# yumlocalinstall test-1.0-1.el6.x86_64.rpm

[student@desktopY ~]$/usr/local/bin/myscript

Thu May 04 10:21:53 EST 2021

警告
您应该始终以non-root用户的身份运行rpmbuild来构建包。不要以root用户构建包。这样做的原因是spec文件中的错误,特别是%install和%clean部分中的错误,如果以root用户的身份运行,更有可能破坏构建机器的安装。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太极淘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值