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 키는 현재 혼란스러울 수 있으므로 gpgcheck=0
/etc/mock/template/amazonlinux-2023.tpl에서 세 항목을 모두 설정해야 합니다. 나는 당신만큼 이것을 좋아하지 않지만 올바른 키체인으로 이것을 고치는 것은 지금으로서는 불가능합니다.