Es gibt zwei Maschinen, identische Version / Bogen von SLES.
Auf Maschine #A ist eine "foo" -Software installiert, die wir verwenden können rpm -qa
.
Auf Maschine #B muss die "foo" -Software installiert sein.
Das foo.rpm
ist aus keiner Quelle, aus dem Internet usw. erhältlich.
Frage
foo.rpm
Können wir, da das Paket auf Computer #A installiert wurde, foo.rpm
aus den bereits installierten Dateien eine Datei darauf erstellen?
Ich denke, es gibt auch Pre / Post-Skripte in den RPMs. Dann kann das foo.rpm
( mit Abhängigkeiten? ) Installiert werden.
Antworten:
Es ist möglich, aber sehr schwierig, dies richtig zu machen. Wenn Sie verzweifelt sind, können Sie eine neue RPM-
.spec
Datei erstellen und eine "gefälschte" Quell-RPM-Datei (SRPM) erstellen, mit der Sie eine resultierende RPM-Datei erstellen könnenrpmbuild --rebuild
.Ich würde stattdessen weiter nach der tatsächlichen Drehzahl suchen. Sie geben in Ihrer Frage nicht an, welche, aber ich habe die Erfahrung gemacht, dass Sie im Internet alles finden können, wenn Sie wissen, wie man danach sucht. Ich habe alte Versionen von RPMs für Red Hat-Distributionen gefunden, die seit mehr als 10 Jahren nicht mehr verwendet werden. Daher fällt es mir schwer zu glauben, dass es nirgendwo einen Rest dieser RPM gibt.
Außerdem können Sie häufig zur Quelle der Anwendung zurückkehren, die im RPM enthalten ist, und diese auch zum Rekonstruieren des RPM verwenden. Oft enthalten die Quell-Apps eine erforderliche
.spec
Datei, mit der das RPM neu erstellt wird.Zuletzt könnten Sie die Quelle und die
.spec
Datei von einem Build-Service wie Koji für Red Hat-basierte Distributionen erhalten. SuSE unterhält auch ähnliche Build-Services, sodass Sie diese durchsuchen können, um alte Build-Artefakte zu erhalten.Nehmen Sie die Binärdateien so wie sie sind
Mit dieser Methode können Sie die tatsächlichen ausführbaren Dateien von einem System abrufen und für die Bereitstellung auf einem anderen System tarieren.
Maschine A.
Maschine B.
SLES-Version von RPM
Laut einem der Beiträge in diesem Thread: Re: Wie man RPM aus installierten Paketen
rpm
auf SLES erstellt, soll der Schalter haben--repackage
. Dies ist in der Red Hat-Version (in Fedora oder CentOS) nicht vorhanden. Aber laut dem Beitrag können Sie es so verwenden:Danach finden Sie Ihre Drehzahl hier verfügbar:
Verwenden von rpmerizor
Rpmerizor ist ein Tool / Skript eines Drittanbieters, das Sie installieren können und das Quelldateien in ein entsprechendes RPM neu verpackt. Die Verwendung dieses Skripts ist hier mit dem Titel: rpmerizors Manpage zugänglich .
Auszug
Verwenden von rpmrebuild
Nicht zu verwechseln mit dem Build-Tool
rpmbuild
. Esrpmrebuild
ist ein weiteres Skript eines Drittanbieters, mit dem Sie ein bereits installiertes RPM neu verpacken können.Auszug
Beispiel
Angenommen, wir möchten den openssh-Server neu verpacken.
Packen Sie es jetzt ein:
Verweise
quelle
In der Regel Nr.
Mit etwas Glück
rpm -qi
undrpm -q --changelog
Einblick, woher das Paket stammt.Wenn es auf dem System erstellt wurde, auf dem es ausgeführt wird, haben Sie möglicherweise immer noch die Spezifikationsdatei, mit der die tatsächliche Drehzahl ermittelt wird, wenn nicht beide.
Im Allgemeinen empfehle ich nicht, Dateien / Binärdateien zu kopieren, aber die meisten Metainformationen befinden sich in der RPM-Datenbank und Sie haben die tatsächlichen Dateien.
rpm -q --list <pkg_name>
zeigt alle Dateien an, die ein Paket bereitstellt.rpm -q --scripts <pkg_name>
Das Anzeigen von Skripten, die durch Installieren (oder Entfernen) des Pakets ausgeführt werden, bietet möglicherweise mindestens so viel Einblick in seinen Zweck wie die Dateien, die bereitgestellt werden.Und alle Abhängigkeiten, die installiert werden müssen, können mit gefunden werden
rpm -q --requires <pkg_name>
.quelle