SRPM 포장 풀기, 수정, 재 구축 및 설치 방법


9

Fedora 15 패키지 ( gnome-shell-extensions-alternative-status-menu) 를 수정하고 싶습니다 . 작은 수정입니다 ( 이 커밋을 되돌 립니다). 사용 yumdownloaderSRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm) 을 다운로드 할 수 있습니다.

그런 다음 포장을 풀고 다시 빌드하는 방법은 무엇입니까?


@mdpc의 답변에 대한 의견이되도록 최근 편집 내용을 변경하거나 문제 해결에 도움이되는 단계를 사용하여 자신의 답변을 추가해야합니다. 질문 자체에서 답변 데이터를 보관하십시오.
Caleb

@Caleb Done! (3 더 가기 ...)
Vitor Py

답변:


7

루트 사용자로서 내가하는 일 :

  1. 다른 패키지와 마찬가지로 SRPM을 설치하십시오 ( rpm --install [source-rpm-filename]).

  2. /root/rpmbuild/SPECS디렉토리를 검사 하고 패키지와 일치하는 스펙 파일을 찾으십시오.

  3. rpmbuild -bb /root/rpmbuild/SPECS/[found-filename]

결과 바이너리 패키지는 /root/rpmbuild/RPMS/표준 rpm --install명령을 통해 설치할 준비가 된 디렉토리에 있습니다 .

참고 : 이것은 표준 바이너리 패키지에있는 것을 빌드합니다. 소스를 변경하고 새 패키지를 생성하는 방법이 아니라 특정 질문에 대한 답변 으로이 게시물을 게시하고 있습니다.

수정하려면 다음 중 하나를 입력하고 SPECS 파일을 변경으로 패치를 제공 할 수있다 .... 또는 표준 대체 할 수있는 *.tar.bz2위치 /root/rpmbuild/SOURCES변화에 자신과 함께하고 전술 한 바와 같이 다음 빌드를 수행.

SPECS 패키지를 변경해야 작동 할 수 있습니다 (일반적으로 패치를 풀고 SPECS 파일로 프로그래밍 된 일부 파일 이름을 변경하여).


편집하다

루트가 나쁜 습관 ( source ) 이므로 rpms를 작성하는 것 같습니다 . 루트가 아닌 사용자로서 잘 작동합니다.

패치를 추가하는 단계별 지침 ( 여기에서 ) :

  1. 에 패치를 복사하십시오 rpmbuild/SOURCES.
  2. 를 수정하고 줄 바로 뒤에 rpmbuild/SPECS/package.spec추가하십시오 .Patch0: mypatch.patchSource0: ...
  3. 애프터 %setup ...라인 A 추가 %patch0 -p1라인

이제 정상적으로 빌드됩니다. 와:rpmbuild -ba SPECS/package.spec


2
rpmbuild가 아닌 root로만 설치가 완료되었음을 확인해야합니다. rpm 파일 빌드는 절대 루트로 수행해서는 안됩니다.
Caleb

@Caleb 패키지가 아닌 루트로 설치했습니다. rpm은 ~ / rpmbuild 계층에 넣습니다. 또한 나는 당신이 질문에 제안한대로 여기에 추가 단계를 넣었습니다.
Vitor Py

sudo dnf install rpmdevtoolsrpmbuild 명령 에는 몇 가지 참고 사항 만 필요합니다. %patch0 -p1스펙 파일이 한 %autosetup줄 대신 한 줄을 사용하는 경우 에는 줄을 생략해야합니다 %setup( %autosetup패치가 자동으로 적용됨).
Nelson

또한 원본에 이미 새로운 rpm을 설치하려면 (원본이 이미 시스템에 설치되어있는 경우)sudo rpm -ivh --force your.rpm
Nelson

4

OpenSSL 패키지 재 구축 CentOS 6.4 는 SRPM 패키지 재 구축의 자세한 예입니다.

위의 예는 패키지 빌더의 Jedi Light Saber 인 Mock을 사용합니다 .

Mock은 chroot를 안정적으로 채운 다음 해당 chroot에서 패키지를 다시 빌드하기 위해 만들어졌습니다.

자세한 내용은 http://fedoraproject.org/wiki/Projects/Mock을 참조 하십시오.

이 예제에서는 mock을 세 번 사용하여 패키지를 언팩 한 다음 .src.rpm을 다시 빌드하고 마지막으로 .rpm을 만듭니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.