用于在 ec2 上构建 gdb9 的 rpmbuild 的规范文件

用于在 ec2 上构建 gdb9 的 rpmbuild 的规范文件

我正在使用 aws 的 ec2 实例,并且需要安装更新版本的 GDB(我无法使用,yum install因为没有适用于 amazon RHEL 的更新版本)。

我的工作流程需要经常执行此过程,并且我想到有一个准备好的 RPM 来实现此任务。我对创建 RPM 的过程很陌生,我不知道该怎么做,我开始编写文件,但遇到了一些问题,我想与您分享该文件以及我遇到的问题:

  1. 我想获得一些见解并了解是否有更好的方法来编写规范文件。
  2. 目前我遇到错误,因为我之前需要使用 pkg 的“配置”,但这需要创建一个“构建”目录并且只能make从该目录中运行。目前,我通过make在目录中创建的目录中解决了这个问题BUILD/gdb-9.1。但我确信有一种更惯用的方法。
  3. 为了使这个过程正常进行,我首先需要安装gcc-c++expat-devel.我最好的方法是什么,目前我的选择是:
    1. 将其作为 rpm 安装的一部分。
    2. 在 rpm 安装之前运行此命令。 (但我希望 rpm 是唯一需要的,但我不确定这是否是一个好主意)
%define gdb_version       9.1
%define gdb_release       1

Name: gdb
Summary: GNU Debugger
Version: %{gdb_version}
Release: %{gdb_release}
License: GPL
URL: http://www.gnu.org/software/gdb/
Source0: gdb-%{gdb_version}.tar.gz
BuildRequires: readline-devel, ncurses-devel

%description
GDB, the GNU Project debugger, allows you to see what is going on inside another program while it executes.

%prep
%autosetup

%build
mkdir build
cd build
../configure \
--host=x86_64-redhat-linux-gnu \
--target=x86_64-redhat-linux-gnu \
--with-auto-load-dir=$debugdir:$datadir/auto-load:/usr/share/gdb/auto-load \
--with-auto-load-safe-path=$debugdir:$datadir/auto-load:/usr/share/gdb/auto-load \
--with-expat \
--with-gdb-datadir=/usr/share/gdb \
--with-jit-reader-dir=/usr/lib64/gdb \
--without-libunwind-ia64 \
--with-python=/usr \
--without-guile \
--with-separate-debug-dir=/usr/lib/debug \
--with-system-gdbinit=/etc/gdbinit \
--without-babeltrace
make %{?_smp_mflags}

%install
cd build
make install

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)

答案1

好吧,您想要构建一个 RPM!

我希望转速是唯一需要的,但我不确定这是否是一个好主意

那么,您安装的软件需要哪些组件才能运行?您使包依赖于这些(显式地通过Requires:,或隐式地通过分析您链接的库),并且在必要时安装它们。如果您需要操作系统未提供的版本,则还必须以 RPM 的形式提供它们。

一般来说,您正在尝试重新发明轮子。已经有现代的 gdb 包装,所以坚持下去。

“EC2”根本没有告诉我们 amazon linux 的版本(据我所知是不是RHEL)你正在使用,所以我不能对此给出真正的建议,但如果有疑问,

  1. 设置特权容器、虚拟机或运行现代 Fedora 的机器(当前为 38),
  2. 安装fedpkgmock在其上,sudo dnf install --refresh -y fedpkg mock
  3. 克隆当前的 gdb fedora RPM 包:fedpkg clone rpms/gdb
  4. 光盘gdb
  5. fedpkg mockbuild --root /etc/mock/amazonlinux-2023-x86_64.cfg(检查/etc/mock替代平台)在结果中,您会在子文件夹中获得 .rpm。

因为整个目录是一个 git 存储库,所以您可以查看您想要的任何以前的版本,但我的猜测是您想要最新的版本,并且在 3 之后不要有任何特殊的内容。


如果您确实使用 amazonlinux2023:amazonlinux-2023 的 GPG 密钥目前可能很混乱,您必须gpgcheck=0在 /etc/mock/template/amazonlinux-2023.tpl 中设置所有三个条目。我和你一样不喜欢这个,但用正确的钥匙圈修复这个问题目前超出了我的范围。

相关内容