yum install
私はawsのec2インスタンスを使用しており、最新バージョンのGDBをインストールする必要があります(Amazon RHELの最新バージョンがないためインストールできません)。
私のワークフローではこのプロセスを頻繁に実行する必要があるため、このタスクを実行するには事前に作成されたRPMが必要です。私はRPMの作成プロセスが初めてで、何をすべきかわかりません。私はファイルの作成を始めましたが、いくつかの問題に遭遇し、私が経験した問題をあなたと共有したいと思いました。
- 仕様ファイルを作成するより良い方法があるかどうかを理解し、洞察を得たいと思います。
- 以前はpkgの "configure"を使用する必要がありましたが、現在は "build"ディレクトリを作成する必要があり、そのディレクトリ
make
でのみ実行できたため、エラーが発生しました。現在、私はmake
この問題をディレクトリ内のディレクトリに作成して解決しましたBUILD/gdb-9.1
。しかし、より慣用的な方法があると確信しています。 - このプロセスが機能する前に、およびをインストールする
gcc-c++
必要がありますexpat-devel
。最善のアプローチは何ですか?現在私のオプションは次のとおりです。- rpm インストールの一部として含めます。
- 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)を使用しているので、これについてアドバイスすることはできませんが、疑わしい場合
- 最新のFedora(現在38)を実行する特権コンテナ、仮想マシン、またはマシンを設定します。
- 設置
fedpkg
してmock
その上に、sudo dnf install --refresh -y fedpkg mock
- 現在のgdb fedora RPMパッケージを複製します。
fedpkg clone rpms/gdb
- CD
gdb
fedpkg mockbuild --root /etc/mock/amazonlinux-2023-x86_64.cfg
(/etc/mock
代替プラットフォームの確認)結果では、サブフォルダに.rpmが表示されます。
ディレクトリ全体がgitリポジトリであるので、あなたが望む古いバージョンを見ることができますが、私の考えには最新バージョンが欲しく、3以降には特別なものがないようです。
amazonlinux2023を使用している場合:amazonlinux-2023のGPGキーは現在混乱している可能性があるため、/etc/mock/template/amazonlinux-2023.tplgpgcheck=0
で3つの項目をすべて設定する必要があります。私はあなたほどこれが好きではありませんが、正しいキーチェーンでこれを修正することは今では不可能です。