Ich möchte ein Fedora 15-Paket ( gnome-shell-extensions-alternative-status-menu
) ändern . Es ist eine kleine Änderung (Zurücksetzen dieses Commits ). Mit kann yumdownloader
ich ein SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm
) herunterladen .
Wie entpacke ich es danach und baue es dann wieder auf?
Antworten:
Was ich als ROOT-Benutzer mache:
Installieren Sie das SRPM wie jedes andere Paket (
rpm --install [source-rpm-filename]
)Untersuchen Sie das
/root/rpmbuild/SPECS
Verzeichnis und suchen Sie die Spezifikationsdatei, die Ihrem Paket entsprichtrpmbuild -bb /root/rpmbuild/SPECS/[found-filename]
Die resultierenden Binärpakete befinden sich dann in dem
/root/rpmbuild/RPMS/
Verzeichnis, das über den Standardbefehl installiert werden kannrpm --install
.HINWEIS: Hiermit wird nur das erstellt, was im Standard-Binärpaket enthalten ist. Ich poste dies als Antwort auf die spezifische Frage, nicht wie man Änderungen an der Quelle vornimmt und neue Pakete generiert.
Um die Änderungen vorzunehmen, können Sie entweder Patches als Eingabe bereitstellen und die SPECS-Datei ändern ... oder Sie können den Standard, der
*.tar.bz2
sich in/root/rpmbuild/SOURCES
Ihrer eigenen befindet, durch die Änderung ersetzen und dann den Build wie oben beschrieben ausführen.Beachten Sie, dass Sie möglicherweise das SPECS-Paket ändern müssen, damit es funktioniert (normalerweise durch Herausziehen des Patches und Ändern einiger Dateinamen, die von der SPECS-Datei programmiert wurden).
BEARBEITEN
Es scheint, dass das Erstellen von RPMs als Root eine schlechte Praxis ist ( Quelle ). Es funktioniert gut als Nicht-Root-Benutzer.
Schritt für Schritt Anleitung zum Hinzufügen eines Patches (von hier ):
rpmbuild/SOURCES
.rpmbuild/SPECS/package.spec
und fügen Sie einPatch0: mypatch.patch
direkt nach derSource0: ...
Zeile hinzu.%setup ...
Fügen Sie nach der Zeile eine%patch0 -p1
Zeile hinzuJetzt wird es normal gebaut, dh. mit:
rpmbuild -ba SPECS/package.spec
quelle
sudo dnf install rpmdevtools
Wird für den Befehl rpmbuild benötigt. Und die%patch0 -p1
Zeile sollte weggelassen werden, wenn die Spezifikationsdatei eine%autosetup
Zeile anstelle einer%setup
Eins verwendet (wie%autosetup
der Patch automatisch angewendet wird).sudo rpm -ivh --force your.rpm
OpenSSL-Paketwiederherstellung CentOS 6.4 ist ein detailliertes Beispiel für eine SRPM-Paketwiederherstellung.
Das obige Beispiel verwendet Mock - den Jedi-Lichtsäbel von Paketerstellern.
Mock wurde erstellt, um eine Chroot zuverlässig zu füllen und dann ein Paket in dieser Chroot neu zu erstellen.
Weitere Informationen finden Sie unter http://fedoraproject.org/wiki/Projects/Mock
Im Beispiel wird mock dreimal verwendet - einmal zum "Entpacken" des Pakets, dann zum erneuten Erstellen der .src.rpm und schließlich zum Erstellen der .rpm.
quelle