GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Debian – Wie installiere ich neuere Softwareversionen als Debian bereitstellt?

Angenommen, ich möchte eine neuere Softwareversion als für meine aktuelle Version eines Betriebssystems verfügbar ist, was kann ich tun?

Zu berücksichtigende Fälle:

  1. Es gibt halboffizielle/offizielle Quellen für zusätzliche Pakete
    , die für diese Version des Betriebssystems verfügbar sind. Z.B. backports.org für Debian
    oder PPAs für Ubuntu.
  2. Es sind keine neueren Versionen des Pakets für diese
    Version des Betriebssystems verfügbar, aber es sind neuere Versionen für
    neuere Versionen des Betriebssystems verfügbar. Dies ist der Standardfall für
    Rückportierungen.
  3. Es sind keine Paketversionen neuerer Versionen der
    Software verfügbar. Verfügbare Optionen sind das Packen der neueren
    Version.

Akzeptierte Antwort:

(Wenn Sie Fragen/Kommentare zu dieser Antwort haben, fügen Sie bitte einen Kommentar hinzu. Oder, wenn Sie genügend Repräsentanten haben, können Sie mich im Chat anpingen.)

Binärpakete direkt von einer neueren Version von Debian installieren – nicht die Antwort.

Angenommen, Sie führen eine Version einer Debian-basierten Distribution aus. Sie möchten eine neuere Version eines Pakets, als Ihnen zur Verfügung steht. Das erste, was jeder Anfänger versucht, ist es, das Binärpaket direkt auf Ihrer Debian-Version zu installieren. Dies kann funktionieren oder nicht, je nachdem, welche Version Sie ausführen und wie viel neuer das Paket ist. Im Allgemeinen wird dieses Verfahren nicht gut funktionieren.

Betrachten Sie zum Beispiel den Fall, in dem versucht wird, ein Binärpaket von Testing/Unstable direkt auf Stable zu installieren. Dies wird höchstwahrscheinlich nicht gut gehen, es sei denn, Testing/Unstable kommt in diesem Moment sehr nahe an Stable heran. Der Grund hat mit der Natur einer Linux-basierten Binärdistribution wie Debian zu tun. Solche Betriebssysteme hängen stark von gemeinsam genutzten Bibliotheken ab, und diese Abhängigkeiten sind oft sehr stark versionsabhängig; oft viel mehr als nötig. Debian hat derzeit keine gute Möglichkeit, Versionsabhängigkeiten „eng“ zu machen – eine Kurzform, um zu sagen, dass die Versionsabhängigkeit genau so restriktiv wie nötig ist.

Was bedeutet das für den Benutzer? Angenommen, Sie versuchen beispielsweise, slrn zu installieren von Debian Unstable zu Debian Stable. Wie würde das aussehen?

# apt-get install slrn/unstable
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Selected version '1.0.1-10' (Debian:testing [amd64]) for 'slrn'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 slrn : Depends: libc6 (>= 2.15) but 2.13-38+deb7u1 is to be installed
E: Unable to correct problems, you have held broken packages.

Trotz des von apt erzeugten Fehlers , gibt es hier keine beschädigten Pakete. Also, was ist schief gelaufen? Das Problem ist, dass die Version von libc6 dass die unstable slrn kompiliert wurde, ist anders (und hat eine höhere Versionsnummer) als die, die auf Debian Stable verfügbar ist. (libc6 ist die GNU C-Bibliothek. Die C-Bibliothek ist von zentraler Bedeutung für jedes Unix-ähnliche Betriebssystem, und die GNU-C-Bibliothek ist die Version, die Linux-basierte Betriebssysteme im Allgemeinen verwenden.)

Daher das instabile slrn erfordert eine höher nummerierte Version von libc6 als für stabil verfügbar ist. Beachten Sie, dass, weil ein Paket mit einer höheren Version der Bibliothek kompiliert wurde, nicht unbedingt eine höhere Version dieser Bibliothek erforderlich ist, aber es ist oft der Fall.

Die Syntax

apt-get install slrn/unstable

bedeutet:benutze den unstable slrn aber für alle anderen Pakete verwenden Sie nur die Versionen von stable. Genauer gesagt verwendet es Prioritätsnummern. Siehe man apt_preferences für Details.

Kann man auch machen

apt-get install -t unstable slrn

Dies funktioniert viel wahrscheinlicher, aber Sie möchten es im Allgemeinen nicht tun. Warum?

Das bedeutet:vorübergehend alle behandeln Pakete in Unstable gleichberechtigt mit den Paketen in Stable. Daher wird das instabile slrn hineingezogen ’s-Abhängigkeiten von Unstable, wenn sie eine höhere Versionsnummer haben, und das werden sie im Allgemeinen auch sein. Aus bereits erläuterten Gründen wird dies im Allgemeinen die GNU-C-Bibliothek einschließen. Nun, dieser Ansatz wird im Allgemeinen „erfolgreich“ sein, da die Abhängigkeiten per Definition erfüllt werden (unstables slrn hat Abhängigkeiten, die in Unstable erfüllt sind), aber Sie erhalten am Ende eine Mischung von Paketen, die plötzlich gezwungen sind, mit Versionen von Bibliotheken zu laufen, die sich von denen unterscheiden, für die sie gebaut wurden. Das wird wahrscheinlich nicht gut enden.

Verwandt:Limit-Find-Ausgang UND Signal 13 vermeiden?

Die Antwort lautet… RÜCKWÄRTS!

Also, was ist der richtige Weg, dies zu tun? Es dient dazu, die Debian-Quellen neuerer Versionen auf Ihrem System neu zu erstellen, allgemein als „Rückportierung“ bekannt.
Betrachten Sie die folgenden Fälle:

Es gibt halboffizielle/offizielle Quellen zusätzlicher Pakete für diese Version von Debian.

Die erste Anlaufstelle ist Debian Backports, die offizielle Seite für Debian-Backports.

Für ein konkretes Beispiel:

Fügen Sie die entsprechende Backports-Zeile für Ihre Veröffentlichung hinzu und aktualisieren Sie, um die neuen Pakete zu finden, und installieren Sie dann explizit etwas von Backports (da Backports standardmäßig deaktiviert sind).

echo "deb http://ftp.debian.org/debian stretch-backports main" | sudo tee /etc/apt/sources.list.d/stretch-backports.list
sudo apt-get update
sudo apt-get install -t stretch-backports git

Dadurch erhalten Sie die neueste stabile Version von Git, die nützliche neuere Funktionen als die in Stretch enthaltene stabile enthält (z. B. „include“, mit dem Sie mehrere Konfigurationsdateien kombinieren oder Ihren Benutzernamen für ~/work/projects/ vs. Projekte/).

Ein weiterer Ort, den Sie sich ansehen sollten, sind die verschiedenen PPAs von Ubuntu-Maintainern. Sie können nach „Paketname PPA“ suchen.

Es sind keine neueren Versionen des Pakets für diese Version des Betriebssystems verfügbar, aber es sind neuere Versionen für neuere Versionen/Releases des Betriebssystems verfügbar. Dies ist der Standardfall für die Rückportierung.

Backporting bedeutet, dass Sie die Debian-Quellen von einer neueren Version von Debian auf der Version, die Sie ausführen, neu erstellen. Dieses Verfahren kann je nach Paket einfach oder aufwendig und schwierig sein. Hier ist eine Übersicht, wie das geht.

Ein kurzes Backporting-Tutorial für Anfänger

Aus Gründen der Konkretheit gehe ich davon aus, dass Sie den aktuellen Debian-Stall ausführen, derzeit keuchend. Ich verwende das Paket slrn als Beispiel.

Beachten Sie zunächst, dass sich alle Debian-Paketdateien im debian/ befinden Unterverzeichnis des Quellverzeichnisses.

Prüfen Sie im ersten Schritt, ob eine neuere Version verfügbar ist. Sie können dies mit apt-cache policy tun .

apt-cache policy slrn

slrn:
  Installed: 1.0.0~pre18-1.3
  Candidate: 1.0.0~pre18-1.3
  Version table:
     1.0.1-10 0
         50 http://debian.lcs.mit.edu/debian/ testing/main amd64 Packages
         50 http://debian.lcs.mit.edu/debian/ unstable/main amd64 Packages
 *** 1.0.0~pre18-1.3 0
        500 http://debian.lcs.mit.edu/debian/ wheezy/main amd64 Packages
        100 /var/lib/dpkg/status
     1.0.0~pre18-1.1 0
        500 http://debian.lcs.mit.edu/debian/ squeeze/main amd64 Packages

Wir möchten 1.0.1-10 zurückportieren .

SCHRITT 1:

NB:Stellen Sie sicher, dass die Datei deb-src Zeilen für die Quellversion, die Sie herunterladen möchten, erscheint in Ihrer /etc/apt/sources.list . Zum Beispiel, wenn Sie die instabile Version von slrn herunterladen möchten , benötigen Sie den deb-src Zeile für instabil, oder es funktioniert nicht. Beachten Sie, dass Sie das entsprechende deb nicht benötigen Zeilen zum Herunterladen der Quellen, obwohl apt-cache policy verwendet diese Informationen, wenn Sie also nicht über das entsprechende deb verfügen Zeilen, dann apt-cache policy zeigt Ihnen nicht die relevante(n) Version(en) an. Wenn Sie die Datei deb haben vergessen Sie nicht, die neueren Versionen mit einem Eintrag in /etc/apt/preferences anzuheften oder ähnliches. Ein Eintrag in /etc/apt/preferences so (für unstable) funktioniert zum Beispiel.

Package: *
Pin: release a=unstable
Pin-Priority: 50

Wenn Sie Zeilen in /etc/apt/sources.list hinzufügen , vergessen Sie nicht, apt-get update auszuführen danach.

Laden Sie die Quellen für slrn herunter . Ein guter Ort ist /usr/local/src/slrn .

apt-get source slrn=1.0.1-10

SCHRITT 2:

Ändern Sie die Versionsnummer leicht, um Ihren Backport von der Upstream-Version zu unterscheiden. Führen Sie dch --bpo aus , wodurch automatisch ein Eintrag zum debian/changelog hinzugefügt wird Datei mit einer entsprechenden Versionsnummer, zum Beispiel

slrn (1.0.1-10~bpo10+1) UNRELEASED; urgency=low

  * Backport to buster.

 -- User <[email protected]>  Sun, 02 Feb 2014 23:54:13 +0530

SCHRITT 3:

Versuchen Sie, die Quellen zu erstellen. Wenn die für den Build erforderlichen Pakete nicht verfügbar sind, schlägt der Versuch fehl. Wechseln Sie in das Quellverzeichnis. Verwenden Sie debuild aus den devtools Paket.

cd slrn-1.0.1/
debuild -uc -us

Wenn die Build-Abhängigkeiten erfüllt sind, werden die Quellen einige Debs auf der Ebene über dem Quellverzeichnis erstellen und produzieren; in diesem Fall /usr/local/src/slrn .

SCHRITT 4:

Angenommen, die Build-Abhängigkeiten sind nicht erfüllt. Dann müssen Sie versuchen, die Build-Abhängigkeiten zu installieren. Dies kann funktionieren oder nicht, da die Abhängigkeiten möglicherweise nicht für Ihre Version verfügbar sind oder, falls verfügbar, möglicherweise nicht in der richtigen Version verfügbar sind.

NB:Es ist leider nicht ungewöhnlich, dass Debian-Pakete Versionen von Build-Abhängigkeiten erfordern, die höher als nötig sind. Es gibt in Debian keine automatisierte Möglichkeit, dies zu überprüfen, und oft ist es Paketbetreuern egal, solange es auf der entsprechenden Version/Veröffentlichung funktioniert. Nehmen Sie daher eine skeptische Haltung gegenüber Abhängigkeitsversionen ein und verwenden Sie Ihren gesunden Menschenverstand. Zum Beispiel werden weit verbreitete Pakete wie Python und die GNU-Tools nicht von sehr spezifischen Versionen ihrer Abhängigkeiten abhängen, unabhängig davon, was der Debian-Paketierer auflistet.

Siehe auch:Debian – Wie können wir vorhersagen, wann die nächste Debian-Veröffentlichung erscheinen wird?

In jedem Fall können Sie versuchen, sie zu installieren

apt-get build-dep slrn=1.0.1-10

Wenn dies erfolgreich ist, versuchen Sie erneut, das Paket zu erstellen (SCHRITT 2). Wenn dies fehlschlägt, ist weitere Arbeit erforderlich. Beachten Sie, dass debuild betrachtet die Build-Abhängigkeiten in debian/control Datei, und Sie können diese bei Bedarf ändern. Also lass uns jetzt darüber reden. Hier sind die Build-Abhängigkeiten für slrn.

Build-Depends: debhelper (>=9), libslang2-dev, libuu-dev,
 exim4 | mail-transport-agent, libgnutls-openssl-dev, po-debconf, autoconf,
 libcanlock2-dev, autotools-dev, dpkg-dev (>= 1.16.0), chrpath, dh-autoreconf, inn2-inews

Eine Alternative zur Verwendung von apt-get build-dep ist, diese manuell zu installieren, indem Sie

apt-get install debhelper libslang2-dev ...

Wenn Sie beginnen, diese Werte in der Steuerdatei zu ändern, sollten Sie auf eine manuelle Installation umstellen, da dann apt-get build-dep wird nicht mehr das Richtige tun.

Es sind keine Paketversionen neuerer Versionen der Software verfügbar. Verfügbare Optionen sind die neuere Version zu packen.

In vielen Fällen kann man das Paket aus früheren Versionen der Software in Verbindung mit neueren Quellen wiederverwenden. Dieser Ansatz kann zu Problemen führen, insbesondere Patches, die auf frühere Versionen der Software angewendet wurden, gelten hier möglicherweise nicht, sodass Sie sie möglicherweise mit den Quellen erneut synchronisieren müssen. Das Quellformat 3.0 (quilt), das jetzt zum Standard wird, verwendet quilt, und Patches befinden sich in debian/patches Verzeichnis.

Eine detaillierte Erörterung dieser Probleme ist jedoch für diesen Beitrag nicht vorgesehen.


Debian
  1. So installieren Sie Java unter Debian 9

  2. So installieren Sie R unter Debian 9

  3. So installieren Sie Docker und Docker Compose unter Debian 11

  4. So installieren Sie Debian-Pakete offline

  5. So installieren Sie RPM-Pakete auf Debian 11 Bullseye

So installieren Sie Pakete unter Debian 10

So installieren Sie Software über Flatpak auf Debian 10

So installieren Sie die neueste LibreOffice-Version unter Debian 10

So installieren Sie Backports und experimentelle Repositorys unter Debian 11

So installieren Sie die Nginx Mainline-Version unter Debian 9

Wie installiere ich Git unter Debian 10?