Wie halte ich mein Debian-System mit den neuesten Paketen?

9

Die meiste "Software", die ich auf meinem Server installiere, muss die neueste Version sein (Java, Tomcat, MySQL-Cluster). Ich habe also nie das Glück, dass vorgefertigte Debian-Pakete (in der Distribution) verfügbar sind. Daher wird die gesamte Software von der Projektwebseite heruntergeladen und aus dem Quellcode erstellt.

Meine Frage ist nun, wie ich sie richtig auf meinem Debian-System installieren kann.

Mein Hauptproblem ist, wenn sie direkt von der Quelle installiert werden, sind sie nicht in der Paketverwaltung enthalten (mit Eignung). Checkinstall scheint nicht wirklich empfohlen zu werden und hat auch Nachteile. Ist der einzig richtige Weg, dies zu handhaben, indem ich meine eigenen Pakete mit dh_make und dpkg-buildpackage erstelle?

Was machst du, wenn du immer die neueste Version brauchst?

Braiam
quelle

Antworten:

10

Der Wunsch nach neueren Paketen ist unter jedem Betriebssystem ein häufiges Problem. Der Veröffentlichungszyklus von Debian betrug in den letzten Jahren durchschnittlich 2 Jahre. Gegen Ende dieses Zyklus ist dies möglicherweise ein dringlicheres Problem. Eine Möglichkeit, dies zu mildern, besteht darin, gegen Ende des stabilen Release-Zyklus zu testen, wenn die nächste Version nahezu stabil ist. Aus der Frage geht nicht hervor, ob es sich allgemein um stabiles und / oder instabiles Testen handelt. Unabhängig davon kann die neueste Version ein Problem sein, selbst wenn sie instabil ausgeführt wird, da die neueste Version möglicherweise noch nicht gepackt ist. Debian-Entwickler / Packager sind Freiwillige, daher können sie sich langweilen oder mit anderen Dingen beschäftigt sein, was dazu führt, dass das Paket nachlässt.

Der Einfachheit und Konkretheit halber gehe ich im Folgenden davon aus, dass der Plan darin besteht, ein Paket auf stabil zurückzustellen, dies gilt jedoch allgemeiner. Also, hier ist, was ich mache, wenn ich eine neuere Version von Software möchte, die nicht in stabiler Reihenfolge vorhanden ist, in ungefährer Reihenfolge.

  1. Suchen Sie nach dem Paket in Debian Backports . Manchmal finden Sie ein Paket, das aktuell genug ist, um Ihre Zwecke zu erfüllen. Es ist jedoch häufig der Fall, dass diese Pakete im Vergleich zur instabilen oder experimentellen oder vorgelagerten Version veraltet sind.

  2. Versuchen Sie, das Paket direkt aus dem Test, instabil oder experimentell zu installieren. Wenn Stable nicht stark von der Version abweicht, von der Sie installieren möchten, funktioniert dies möglicherweise. Sie werden wissen, dass dieser Ansatz schlecht ist, wenn das System versucht, Basispakete von der neueren Version zu installieren oder zu aktualisieren. Angenommen, Sie versuchen dann, von instabil zu installieren

    apt-get install packagename/unstable
    

    ist das erste, was Sie versuchen sollten. Bei Versionen von apt in stabil schlägt dies häufig fehl, da andere Pakete von instabil erforderlich sind, und diese Beschwörung erhöht nur die Präferenz von packagenameausreichend hoch, damit es in instabil installiert werden kann. Wenn Sie nicht verstehen, was dies bedeutet, gehen Sie weg und lesen Sie man apt_preferences. Fügen Sie weiterhin Abhängigkeiten von instabil hinzu und stellen Sie sicher, dass nicht versucht wird, Basispakete zu aktualisieren. Wenn beispielsweise versucht wird, libc6 oder X oder KDE oder Gnome zu aktualisieren, brechen Sie den Vorgang sofort ab. Es ist normalerweise in Ordnung, wenn versucht wird, andere Pakete von demselben Quellpaket zu aktualisieren, da diese normalerweise eng miteinander verbunden sind. Um zu sehen, von welchem ​​Quellpaket ein Binärpaket abhängt, gehen Sie wie folgt vor

    apt-cache showsrc packagename
    

    Da viele Dinge von der GNU C-Bibliothek (libc6) abhängen, war dies früher ein Problem. In jüngerer Zeit scheint sich die API stabilisiert zu haben, so dass es jetzt häufiger möglich ist, nicht mehr aktualisiert zu werden. Wenn ein Paket seine Laufzeitabhängigkeiten von stabil erfüllt, aber immer noch nicht richtig funktioniert, melden Sie einen Fehler. Wenn der Packager Ihnen sagt, dass es sich nicht um einen Fehler handelt, sind sie falsch. :-)

  3. Backportieren Sie das Paket selbst vom Testen, instabil oder experimentell.

    Wie oben erwähnt, sind Backports eine Option, aber häufig sind diese Pakete im Vergleich zur instabilen oder experimentellen oder Upstream-Version veraltet.

    Dies kann häufig eine rekursive Abhängigkeits-Build-Schleife erfordern. Sie müssen zuerst die Build-Abhängigkeiten mit abrufen

    apt-get build-dep packagename    
    

    Wenn dies fehlschlägt, weil eine der Abhängigkeiten nicht aktuell genug ist, müssen Sie diese Abhängigkeit zuerst zurückportieren. Dies kann außer Kontrolle geraten. Normalerweise gebe ich auf, wenn ich mit mehr als 2 Rekursionsstufen zu tun habe. Beachten Sie jedoch, dass die tatsächlichen Abhängigkeiten nicht unbedingt so eng sind wie angegeben, d. H. Eine ältere Version funktioniert möglicherweise. Der Packager versucht oft nicht, die älteste Version einer Build- (oder sogar Laufzeit-) Abhängigkeit zu finden, die funktioniert.

  4. Überprüfen Sie die Verfügbarkeit von Paketen aus dem entsprechenden Upstream. Im Idealfall passen diese zu Ihrer Distributionsversion, aber Sie können sie bei Bedarf möglicherweise auch neu erstellen.

  5. Erstellen Sie Pakete für die aktuellere Version der Software als die neuesten Pakete in testing / unstable / experimental. Dies kann relativ schwierig sein, ist aber manchmal überraschend machbar. Das erste, was Sie beachten müssen, ist, dass Sie, wenn Sie versuchen, eine neuere Version eines Pakets zu verpacken, das bereits in Debian enthalten ist, bereits mit einem großen Vorteil beginnen, nämlich dass Sie über die vorhandene Verpackung verfügen, mit der Sie arbeiten können. Mach einfach

    apt-get source packagename
    

    und apt-getlädt das entsprechende Quellpaket herunter, einschließlich des Debian-Unterverzeichnisses, in dem sich die Verpackung befindet. Beachten Sie außerdem, dass sich diese Verpackung heutzutage häufig in einem Verson Control-Repository befindet (Git scheint bei Debian beliebt zu sein), und Stable Apt (derzeit 0.8.10.3 ) zeigt Ihnen hilfreich an, wo sich dies befindet, wenn Sie es aufrufen apt-get source. Sie sollten sich dies ansehen, da die Verpacker möglicherweise über neuere Versionen der Verpackung verfügen, als sie einem freigegebenen Paket entsprechen. Z.B.

    $ apt-get source mercurial
      Reading package lists... Done
      Building dependency tree       
      Reading state information... Done
      NOTICE: 'mercurial' packaging is maintained in the 'Svn' version control system at:
      svn://svn.debian.org/python-apps/packages/mercurial/trunk
    

    Alternativ können Sie einfach verwenden

    apt-cache showsrc mercurial | grep Vcs
    

    um das Repository aufzulisten.

    Wenn das Paket nicht mehr aktuell ist, müssen Sie möglicherweise Änderungen am
    Paket vornehmen , die angewendeten Patches aktualisieren, aber es ist normalerweise immer noch ein guter Ausgangspunkt
    . Debian scheint dabei zu sein, die Paketverwaltung für
    Quilt nach dem Format dpkg-source 3.0 (Quilt) zu standardisieren , sodass dies bei der Patch-Aktualisierung hilfreich ist.

    Ich werde mit einem realen Beispiel schließen, wie ich das Debian-Paket von pgf zurückportiert habe . Die letzte verpackte Version von pgf war 2008 2.00 und seitdem wurde 2.10 veröffentlicht. Siehe die Diskussion in Bitte aktualisieren Sie auf die neueste stabile Version von pgf (2.10) und meinen Folgefehler mit einem Patch, pgf: Patches gegen 2.0 Debian-Verpackung . Wie sich herausstellte, war die Debian-Verpackung von pgf sehr einfach, und ich musste nur eine Zeile in der 2.10-Verpackung ändern, damit es funktioniert. Am Ende habe ich auch alle fusseligen Beschwerden unterdrückt , aber das war streng freiwillig.

Faheem Mitha
quelle
Der letzte Satz des ersten Absatzes kann irreführend sein. Bitte machen Sie deutlich, dass das Problem nur manchmal auftritt . Die Art und Weise, wie Sie sagen, lässt es so aussehen, als ob DDs im Allgemeinen so sind.
Tshepang
@ Tshepang: Guter Punkt. Ist es jetzt ok?
Faheem Mitha
Ja, viel besser.
Tshepang
5

Sie können sicherlich Ihre eigenen Pakete erstellen, und das wird funktionieren. Ich würde jedoch empfehlen, zuerst Backports zu verwenden, wenn dort das verfügbar ist, was Sie möchten.

Backports werden von Debian verwaltet und Sie erhalten Sicherheitsupdates für sie.

Bahamat
quelle
3

Das Erstellen eigener Pakete ist der richtige Weg (IMHO). Abhängig vom Alter der Debian-Version eines Pakets und den Änderungen kann dies so einfach sein wie das Ersetzen des Dateinamens des Quell-Tarballs in der Paketbeschreibung. Im schlimmsten Fall können Sie ihn weiterhin als Vorlage für Ihre eigene Version verwenden.

Sven
quelle
1

Was machst du, wenn du immer die neueste Version brauchst?

  1. Verwenden Sie, wie bereits erwähnt , Backports.

  2. Da nur eine kleine Teilmenge der Debian-Pakete zurückportiert wird, empfehle ich die Verwendung von Debian-Tests . Es bietet eine gute Balance zwischen Stabilität und Aktualität und ist in gewisser Weise wie eine rollende Distribution.

  3. Wenn Sie etwas gewagter sind, verwenden Sie Debian Unstable . Es wird behauptet, einigermaßen stabil zu sein. Einige behaupten sogar, es sei stabiler als die "stabilen" Veröffentlichungen anderer Distributionen. Auf jeden Fall landen in Unstable normalerweise neue Paketversionen. Sie sitzen normalerweise etwa 10 Tage dort, um Tests zu ermöglichen, bevor sie zu Testing migrieren.

  4. Selbst wenn Sie diese beiden verwenden, haben Sie möglicherweise immer noch nicht die neuesten Versionen. In diesem Fall werfen Sie einen Blick auf Debian Experimental . Es wird normalerweise verwendet, wenn die neuen Pakete für die normalen Archive zu störend sind (Instabil und Testen).

  5. Wenn Experimental immer noch nicht genügend neue Softwareversionen hat, schauen Sie sich die PPAs von Ubuntu an . Ich habe dort Softwareversionen gesehen, die jünger sind als das, was allen oben genannten Archiven fehlt. Verwenden Sie es jedoch mit Vorsicht, da Ubuntu nicht zu 100% mit Debian kompatibel ist (aber in den meisten Fällen sollte es keine Probleme geben).

  6. Wenn das oben genannte fehlschlägt, erstellen Sie einfach Ihre eigenen Pakete, wie erwähnt .

Tshepang
quelle
Die Leute, die sagen, Debians Instabilität sei stabiler als die anderer Distributionen, scherzen bestenfalls. Instabile Änderungen jeden Tag, Stable ist ein festes Repository. Instabil bedeutet nicht, dass es abstürzt, aber es bedeutet, dass die Entwickler viele Änderungen an den Paketen vornehmen. Stabil bedeutet, dass es veröffentlicht wurde und nur Sicherheitskorrekturen hinzugefügt werden. Ich hatte nie seltsame Abstürze, die instabil liefen. Ich habe nach dem Upgrade Probleme mit dem Bruch von Paketen und der Abhängigkeit gesehen, Vorsicht ;-) Wie das alles im Vergleich zu den "stabilen" Releases anderer Distributionen ist, ist mir ein Rätsel. In diesem Zusammenhang gibt es kein "stabileres". Es ändert sich oder nicht.
Arjan Drieman
@ArjanDrieman: Eigentlich scherzen diese Leute nicht, und in diesem Zusammenhang beziehen sie sich darauf, dass es absturzsicherer ist.
Tshepang
Sie scherzen bestenfalls immer noch. Ich habe wirklich Leute gesehen, die darüber scherzten. Eine Mikroverteilungsflamme ;-) Ich habe im Laufe der Zeit ein paar Distributionen benutzt und hatte auch noch nie seltsame Abstürze bei den anderen. Leute, die das ernsthaft sagen, können es nicht mit Recherchen oder Statistiken belegen. Das könnte Unwissenheit, Arroganz, Vorurteile sein, irgendetwas ... aber ist das besser als ein Witz? Können Sie mir sagen, wer diese mysteriösen "Einige" sind?, Damit ich sie um ihre Forschung bitten kann? "Manche gehen sogar so weit" ... das sind Wieselwörter. Was möchten Sie in einer Antwort, Fakten oder einer populären Meinung und mehrdeutigen Behauptungen?
Arjan Drieman
1
@Arjan Drieman: Ich stimme tatsächlich instabil zu, kann "manchmal" seinem Namen gerecht werden. Sie tauschen Stabilität gegen Annäherung an den Rand, jeder, der behauptet, dass dies nicht der Fall ist, ist bestenfalls unaufrichtig. Insgesamt ist es überraschend stabil, aber Stabilität ist nicht die höchste Priorität für instabile. Ich stimme Ihnen auch in Bezug auf "rutschige" Worte zu. Es ist hier fast ein Verteidigungsmechanismus, da jede absolute / direkte Aussage sofort angegriffen wird.
JM Becker