我正在尝试在 CentOS 8上重建 nano rpm 软件包,所以安装后我将能够使用命令newnano运行nano。
经过一些谷歌搜索,我得出的结论是我需要更改 .spec 文件并使用命令rpmbuild -ba nano.spec
构建包。
这是我已经尝试过的:
- 更改 .spec 文件开头的名称,因此看起来像这样:
Summary: A small text editor
Name: newnano
...
但是当我尝试构建软件包时出现错误:Bad exit status from '/var/tmp/rpm-tmp.DSP7dc (%prep)
据我了解,解压缩 tar 存档后它试图cd newnano-2.9.8
但没有这样的目录。 - 在 %install 部分中添加别名:
%install
cd build
%make install
rm -f %{buildroot}%{_infodir}/dir
alias newnano="nano"
...
构建和安装成功,但未创建别名。 - 使用 %包。我在原始 .spec 中
%description
之后和%prep
之前插入:%package -n newnano
Summary: test
%description -n newnano
test
我也-n newnano
添加到%files
部分。构建和安装成功,但未添加新命令。
那么我必须如何更改 .spec 文件才能实现我的目标呢?
有一种非常简单的方法可以通过rpmrebuild
和.rpm
nano
包来完成它。
rpmrebuild -enp nano.rpm
- 在
.spec
文件中(它将在上一个命令后打开),您应该执行以下操作:- 将
Name: nano
替换为Name: newnano
(可选,但建议使用) - 在第一行
exit 0
之前添加mv /usr/bin/nano /usr/bin/newnano
。您可以在%changelog
之前找到此部分
- 将
- 仔细观察并记住关闭
vim
后将看到的重建.rpm
路径 - 通过
rpm -i
命令安装重建的.rpm
- (可选:也许您需要重新启动)
你必须做几件事:
- 获取当前规范文件(看起来您这样做了)
- 更改 RPM 的名称(看起来不错)
- 更改 GNU 软件包的名称(提示:查看 configure.ac)
- 向 RPM 添加另一个补丁以修改最终的可执行文件(提示:在 src/Makefile.am 中查找 - 您要重命名
nano
并删除rnano
符号链接) - 重建
与其弄乱src/Makefile.am
,不如在规范文件的%install
节中重命名内容,但我对nano
的了解不足以告诉您它是否仍然会正确识别自己等。
玩得愉快!