Fedora 15 패키지 ( gnome-shell-extensions-alternative-status-menu
) 를 수정하고 싶습니다 . 작은 수정입니다 ( 이 커밋을 되돌 립니다). 사용 yumdownloader
SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm
) 을 다운로드 할 수 있습니다.
그런 다음 포장을 풀고 다시 빌드하는 방법은 무엇입니까?
Fedora 15 패키지 ( gnome-shell-extensions-alternative-status-menu
) 를 수정하고 싶습니다 . 작은 수정입니다 ( 이 커밋을 되돌 립니다). 사용 yumdownloader
SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm
) 을 다운로드 할 수 있습니다.
그런 다음 포장을 풀고 다시 빌드하는 방법은 무엇입니까?
답변:
루트 사용자로서 내가하는 일 :
다른 패키지와 마찬가지로 SRPM을 설치하십시오 ( rpm --install [source-rpm-filename]
).
/root/rpmbuild/SPECS
디렉토리를 검사 하고 패키지와 일치하는 스펙 파일을 찾으십시오.
rpmbuild -bb /root/rpmbuild/SPECS/[found-filename]
결과 바이너리 패키지는 /root/rpmbuild/RPMS/
표준 rpm --install
명령을 통해 설치할 준비가 된 디렉토리에 있습니다 .
참고 : 이것은 표준 바이너리 패키지에있는 것을 빌드합니다. 소스를 변경하고 새 패키지를 생성하는 방법이 아니라 특정 질문에 대한 답변 으로이 게시물을 게시하고 있습니다.
수정하려면 다음 중 하나를 입력하고 SPECS 파일을 변경으로 패치를 제공 할 수있다 .... 또는 표준 대체 할 수있는 *.tar.bz2
위치 /root/rpmbuild/SOURCES
변화에 자신과 함께하고 전술 한 바와 같이 다음 빌드를 수행.
SPECS 패키지를 변경해야 작동 할 수 있습니다 (일반적으로 패치를 풀고 SPECS 파일로 프로그래밍 된 일부 파일 이름을 변경하여).
루트가 나쁜 습관 ( source ) 이므로 rpms를 작성하는 것 같습니다 . 루트가 아닌 사용자로서 잘 작동합니다.
패치를 추가하는 단계별 지침 ( 여기에서 ) :
rpmbuild/SOURCES
.rpmbuild/SPECS/package.spec
추가하십시오 .Patch0: mypatch.patch
Source0: ...
%setup ...
라인 A 추가 %patch0 -p1
라인이제 정상적으로 빌드됩니다. 와:rpmbuild -ba SPECS/package.spec
sudo dnf install rpmdevtools
rpmbuild 명령 에는 몇 가지 참고 사항 만 필요합니다. %patch0 -p1
스펙 파일이 한 %autosetup
줄 대신 한 줄을 사용하는 경우 에는 줄을 생략해야합니다 %setup
( %autosetup
패치가 자동으로 적용됨).
sudo rpm -ivh --force your.rpm
OpenSSL 패키지 재 구축 CentOS 6.4 는 SRPM 패키지 재 구축의 자세한 예입니다.
위의 예는 패키지 빌더의 Jedi Light Saber 인 Mock을 사용합니다 .
Mock은 chroot를 안정적으로 채운 다음 해당 chroot에서 패키지를 다시 빌드하기 위해 만들어졌습니다.
자세한 내용은 http://fedoraproject.org/wiki/Projects/Mock을 참조 하십시오.
이 예제에서는 mock을 세 번 사용하여 패키지를 언팩 한 다음 .src.rpm을 다시 빌드하고 마지막으로 .rpm을 만듭니다.