Jak rozpakować, zmodyfikować, przebudować i zainstalować SRPM

9

Chciałbym zmodyfikować pakiet Fedory 15 ( gnome-shell-extensions-alternative-status-menu). To mała modyfikacja (cofnięcie tego zatwierdzenia ). Używając yumdownloaderJestem w stanie pobrać SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm).

Po tym, jak go rozpakować, a następnie odbudować?

Vitor Py
źródło
Powinieneś zmienić swoją ostatnią edycję na komentarz do odpowiedzi @ mdpc lub dodać własną odpowiedź, wykonując kroki, które pomogły ci rozwiązać problem. Proszę nie podawać danych odpowiedzi z samego pytania.
Caleb
@Caleb Gotowe! (Jeszcze 3 ...)
Vitor Py

Odpowiedzi:

7

Co robię, jako użytkownik ROOT:

  1. Zainstaluj SRPM tak jak każdy inny pakiet ( rpm --install [source-rpm-filename])

  2. Przejrzyj /root/rpmbuild/SPECSkatalog i znajdź plik specyfikacji pasujący do Twojego pakietu

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

Powstałe pakiety binarne są następnie umieszczane w /root/rpmbuild/RPMS/katalogu, które są gotowe do zainstalowania za pomocą standardowego rpm --installpolecenia.

UWAGA: Po prostu buduje to, co jest w standardowym pakiecie binarnym. Publikuję to, odpowiadając na konkretne pytanie, a nie jak wprowadzać zmiany w źródle i generować nowe pakiety.

Aby dokonać modyfikacji, możesz albo wprowadzić łaty jako dane wejściowe i zmienić plik SPECS .... lub możesz zastąpić standard *.tar.bz2znajdujący się w /root/rpmbuild/SOURCESswoim pliku zmianą, a następnie wykonać kompilację zgodnie z powyższym opisem.

Uwaga: może zaistnieć konieczność zmiany pakietu SPECS, aby działał (zwykle poprzez usunięcie łatki i zmianę niektórych nazw plików, które są programowane przez plik SPECS).


EDYTOWAĆ

Wygląda na to, że budowanie RPM jest złą praktyką ( źródłem ). Działa dobrze jako użytkownik inny niż root.

Instrukcje krok po kroku, aby dodać łatkę ( stąd ):

  1. Skopiuj łatkę do rpmbuild/SOURCES.
  2. Edytuj rpmbuild/SPECS/package.speci dodaj Patch0: mypatch.patchbezpośrednio po Source0: ...linii.
  3. Po %setup ...linii dodaj %patch0 -p1linię

Teraz będzie budował normalnie, tj. z:rpmbuild -ba SPECS/package.spec

mdpc
źródło
2
Powinieneś wyjaśnić, że tylko instalacja odbywa się jako root, a nie rpmbuild. Budowanie plików RPM nigdy nie powinno być wykonywane jako root.
Caleb
@Caleb Zainstalowałem pakiety jako root. rpm umieszcza go w hierarchii ~ / rpmbuild. Zrobiłem również, jak zasugerowałeś w pytaniu, i postawiłem tutaj dodatkowe kroki.
Vitor Py
Kilka uwag: sudo dnf install rpmdevtoolsjest potrzebnych do polecenia rpmbuild. I %patch0 -p1wiersz powinien zostać pominięty, jeśli plik spec używa %autosetuplinii zamiast %setupjednej (jak %autosetupautomatycznie stosuje łatkę).
Nelson
Ponadto, aby zainstalować nowe rpm na oryginalnym (jeśli oryginał jest już zainstalowany w systemie), wykonajsudo rpm -ivh --force your.rpm
Nelson
4

Przebudowa pakietu OpenSSL CentOS 6.4 jest szczegółowym przykładem przebudowy pakietu SRPM.

W powyższym przykładzie użyto Mock - Jedi Light Saber twórców pakietów.

Mock został stworzony, aby niezawodnie wypełniać chroota, a następnie odbudować pakiet w tym chroocie.

Aby uzyskać więcej informacji, zobacz http://fedoraproject.org/wiki/Projects/Mock

W tym przykładzie mock jest używany 3 razy - raz do „rozpakowania” pakietu, następnie do przebudowania pliku .src.rpm i wreszcie do utworzenia .rpm.

neonzeon
źródło