Ich habe die Quelle eines Programms (entnommen aus cvs / svn / git / ...) und möchte ein Debian / Ubuntu-Paket dafür erstellen. Das Paket ist in den Repositorys vorhanden, aber:
- Es ist eine ältere Version (ohne Funktionen, die ich brauche)
- Ich benötige etwas andere Kompilierungsoptionen als die Standardoptionen.
Was ist der einfachste Weg, dies zu tun? Ich mache mir Sorgen um ein paar Dinge
- Wie kann ich überprüfen, ob ich alle Abhängigkeiten korrekt aufgelistet habe? (Ich kann einige Hinweise erhalten, indem ich mir anschaue, was von der älteren Version abhängt, aber möglicherweise wurden neue Abhängigkeiten hinzugefügt.)
- Wie kann ich verhindern, dass das Update-System bei einem Update die ältere Version im Repo installiert?
- Wie kann ich verhindern, dass das System eine neuere Version installiert (wenn diese nicht mehr verfügbar ist) und mein benutzerdefiniertes Paket überschreibt?
Antworten:
Sie können das spezielle Paket "checkinstall" für alle Pakete verwenden, die noch nicht einmal in debian / ubuntu sind.
Sie können "uupdate" (
apt-get install devscripts
) verwenden, um ein Paket aus der Quelle mit vorhandenen Debian-Quellen zu erstellen:Beispiel für libdrm2:
quelle
libdrm-2.3.1
genau? Auch woher kamlibdrm-2.4.1.tar.gz
(meine anfängliche Annahme ist, dass es sich um die kompilierte Binärdatei der Anwendung handelt, die wir in eine Debatte packen möchten, aber die vorhandene Version ersetzt, ist das richtig?)You must put some 'source' URIs in your sources.list
, kommentieren Sie die deb-src-Zeilen in Ihrem/etc/apt/sources.list
Zunächst die Titelfrage: Angenommen, das Debian-Verzeichnis ist bereits vorhanden, befinden Sie sich im Quellverzeichnis (dem Verzeichnis, das das Debian-Verzeichnis enthält) und rufen Sie dpkg-buildpackage auf. Ich möchte es mit folgenden Optionen ausführen:
was bedeutet, nicht das Ergebnis unterschreiben und nicht reinigen.
Die Abhängigkeiten zu bekommen ist eine schwarze Kunst. Die "offizielle" Methode zum Überprüfen der Build-Abhängigkeit besteht darin, ob das Paket nur mit dem Basissystem, den "Build-Essential" -Paketen und den von Ihnen angegebenen Build-Abhängigkeiten erstellt wird. Ich kenne keine allgemeine Antwort für reguläre Abhängigkeiten, wate einfach rein :)
Mein Wissen ist in diesem Fall möglicherweise veraltet, aber um beides anzusprechen: Verwenden Sie dpkg --set-selections. Angenommen, nullidentd war das Paket, das Sie beibehalten und als root ausführen wollten
Alternativ können Sie, da Sie aus dem Quellcode erstellen, eine Epoche verwenden , um die Versionsnummer künstlich hoch einzustellen, und nie wieder gestört werden. Um eine Epoche zu verwenden, fügen Sie der Debian / Changelog-Datei einen neuen Eintrag hinzu und setzen Sie ein 99: vor die Versionsnummer. In meinem nullidentd-Beispiel würde die erste Zeile Ihres aktualisierten Änderungsprotokolls lauten:
Bernards Link ist gut, besonders wenn Sie das Debian-Verzeichnis selbst erstellen müssen - hilfreich sind auch die Entwicklerreferenz und die allgemeine Ressourcenseite . Adams Link sieht auch gut aus, aber ich kenne ihn nicht.
quelle
Für das, was Sie tun möchten, möchten Sie wahrscheinlich das Debian-Quellendiff verwenden, sodass Ihr Paket abgesehen von der verwendeten Upstream-Version dem offiziellen ähnlich ist. Sie können den Quellendifferenz von packages.debian.org herunterladen oder ihn zusammen mit der .dsc und dem ursprünglichen Quellarchiv mithilfe von "apt-get source" herunterladen .
Anschließend entpacken Sie Ihre neue Version der Upstream-Quelle, wechseln in dieses Verzeichnis und wenden den von Ihnen heruntergeladenen Diff an
Nehmen Sie dann die Änderungen vor, die Sie zum Kompilieren von Optionen vornehmen möchten, und erstellen Sie das Paket, indem Sie dies tun
quelle
Beispiel für einen Ubuntu-basierten Build für Ccache:
Weitere Details: http://blog.aplikacja.info/2011/11/building-packages-from-sources-in-debianubuntu/
quelle
quelle
Ich glaube, das ist das Debian-Paket 'Bibel'.
Nun, es ist das Debian-Handbuch für neue Betreuer, daher ist vieles nicht anwendbar, aber sie decken ab, was wohin geht.
quelle
Wenn Sie Ubuntu verwenden, lesen Sie das pkgcreator-Projekt: http://code.google.com/p/pkgcreator
quelle
Hier ist ein Tutorial zum Erstellen eines Debian-Pakets.
Grundsätzlich müssen Sie:
Normalerweise mache ich das alles in meinem Makefile, also kann ich einfach make eingeben, um die Binärdatei auszuspucken und sie auf einmal zu verpacken.
quelle
Dies
pbuilder
ist ein hervorragendes Tool zum Überprüfen von Build-Abhängigkeiten und Abhängigkeiten, indem ein sauberes Basissystem in einer Chroot-Umgebung eingerichtet wird. Durch Kompilieren des Pakets in pbuilder können Sie die Build-Abhängigkeiten einfach überprüfen, und durch Testen in einer pbuilder-Umgebung können Sie die Abhängigkeiten überprüfen.quelle
Wenn Sie die Build-Abhängigkeiten schnell und unkompliziert installieren möchten, verwenden Sie:
Dadurch werden die Abhängigkeiten installiert. Dazu benötigen Sie Quellzeilen in Ihrer Quellenliste:
Wenn Sie Pakete vom Testen auf Stable zurückportieren, werden Sie darauf hingewiesen, dass sich die Abhängigkeiten möglicherweise geändert haben. Der Befehl apt-get build-deb installiert Abhängigkeiten für die Quellpakete in Ihrem aktuellen Repository.
Aber natürlich zeigt dpkg-buildpackage -us -uc alle deinstallierten Abhängigkeiten an.
Wenn Sie häufiger kompilieren möchten, verwenden Sie Cowbuilder.
Erstellen Sie dann einen Build-Bereich:
sudo DIST = Squeeze ARCH = amd64 Cowbuilder --create
Kompilieren Sie dann ein Quellpaket:
Beobachten Sie, wo Cowbuilder das resultierende Paket ablegt.
Viel Glück!
quelle