Wie kann ich Debian stable ausführen, aber einige Pakete aus dem Test installieren?

206

Angenommen, Sie betreiben einen Server und möchten nicht von Stable (Lenny) auf Testing (Squeeze) aktualisieren, um nur ein oder zwei erforderliche Pakete zu installieren.

Was ist der beste Weg, um nur bestimmte Pakete von Testing zu installieren?

Gareth
quelle
2
Dies ist, was die neueste offizielle Dokumentation sagt: Pakete aus gemischten Archivquellen .
Alexey

Antworten:

183

Viele Menschen scheinen Angst davor zu haben, Stable mit Testing zu vermischen, aber ehrlich gesagt ist das Testen für sich genommen ziemlich stabil, und mit den richtigen Einstellungen und der Überprüfung der Lösung können Sie die "Stabilitätsverschiebung" vermeiden, die Ihre Kernpakete auf den instabilen Pfad bringt.

"Testen ist ziemlich stabil?" , du fragst. Ja. Damit ein Paket von Unstable zu Testing migriert werden kann, muss es an 10 aufeinanderfolgenden Tagen keine offenen Fehler aufweisen. Es besteht die Möglichkeit, dass jemand, insbesondere bei den populäreren Paketen, einen Fehlerbericht für eine instabile Version einreicht, wenn etwas nicht stimmt.

Auch wenn Sie die Umgebungen nicht mischen möchten, ist es immer noch schön, die Option dort zu haben, falls Sie auf etwas stoßen, das eine neuere Version erfordert als das, was in stable enthalten ist.

Folgendes empfehle ich zum Einrichten:

Erstellen Sie zunächst die folgenden Dateien in /etc/apt/preferences.d:

stable.pref:

# 500 <= P < 990: causes a version to be installed unless there is a
# version available belonging to the target release or the installed
# version is more recent

Package: *
Pin: release a=stable
Pin-Priority: 900

testing.pref:

# 100 <= P < 500: causes a version to be installed unless there is a
# version available belonging to some other distribution or the installed
# version is more recent

Package: *
Pin: release a=testing
Pin-Priority: 400

unstable.pref:

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

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

experimental.pref:

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=experimental
Pin-Priority: 1

(Haben Sie keine Angst vor dem instabilen / experimentellen Material hier. Die Prioritäten sind niedrig genug, dass dieses Material niemals automatisch installiert wird. Sogar der Testzweig wird sich verhalten, da nur die Pakete installiert werden, die Sie sein möchten im Test.)

Erstellen Sie nun ein passendes Set für /etc/apt/sources.list.d:

stable.list: Kopieren Sie von Ihrem Original /etc/apt/sources.list. Benenne die alte Datei in so etwas wie um sources.list.orig.

testing.list: Wie stable.list, außer mit testing.

unstable.list: Wie stable.list, außer mit unstableund Sicherheitslisten entfernen.

experimental.list: Wie unstable.list, außer mit experimental.

Sie können auch ein oldstableIn sources.lists.dund hinzufügen preferences.d(verwenden Sie eine Priorität von 1), obwohl dieser Moniker dazu neigt, abzulaufen und vor dem nächsten stabilen Zyklus zu verschwinden. In solchen Fällen können Sie http://archive.debian.org/debian/die Debian-Version (Etch, Lenny usw.) verwenden und hartcodieren.

Um die Testversion eines Pakets zu installieren, verwenden Sie einfach aptitude install lib-foobar-package/testingoder springen Sie einfach in die Benutzeroberfläche von aptitude und wählen Sie die Version in den Paketdetails aus (drücken Sie die Eingabetaste für das betreffende Paket).

Wenn Sie Beschwerden über Paketkonflikte erhalten, schauen Sie sich zuerst die Lösungen an. In den meisten Fällen lautet die erste "Diese Version nicht installieren". Erfahren Sie, wie Sie die Auswahlmöglichkeiten für das Akzeptieren / Ablehnen von Resolvern pro Paket verwenden. Wenn Sie beispielsweise foobar-package / testing installieren und die erste Lösung "foobar-package / testing nicht installieren" lautet, markieren Sie diese Auswahl als abgelehnt, und die anderen Lösungen wechseln nie wieder auf diesen Pfad. In solchen Fällen müssen Sie wahrscheinlich ein paar andere Testpakete installieren.

Wenn es zu haarig wird (wie wenn versucht wird, libc oder den Kernel oder ein anderes großes Kernsystem zu aktualisieren), können Sie diese Upgrade-Pfade entweder ablehnen oder einfach das anfängliche Upgrade ganz beenden. Denken Sie daran, dass nur dann ein Upgrade auf Testing / Unstable durchgeführt wird, wenn Sie dies zulassen.

BEARBEITEN: Einige Prioritäts-Pins wurden behoben und die Liste aktualisiert.

Brendan Byrd
quelle
4
Haben Sie ausgeführt, apt-get updatenachdem Sie die Konfigurationsdateien erstellt haben?
Flow
3
Mit dieser Methode bekomme ich (wie mir scheint) inkonsistente Verhaltensweisen. "apt-get install -t testet appX" gibt nicht das Gleiche wie "apt-get install appX / testing" (siehe serverfault.com/q/646934/132528 ) - Ich vermute, dass es nur um die Art und Weise dieser Methode geht bewirkt, dass die Prioritäten gelöst werden, obwohl es für mich nicht intuitiv ist?
Eugenevd
7
WICHTIG: Der Autor hat einen Festlegungspräferenzwert für Stable / Security gewählt, der höher ist als der Standardversionswert. Weitere Informationen finden Sie unter serverfault.com/a/653552/120130
Alex Ryan,
7
Diese Antwort hat mein System kaputt gemacht. Nach einem Versuch habe sudo apt-get updateich einen Update-Fehler bekommen. Dann neu gestartet, was gab mir Xsession error, neu gestartet, und jetzt habe ich keine gui. das /dev/sda1/ist jetzt voll. Toll.
Luchonacho
3
Ich werde den Leuten empfehlen, die negativen Kommentare zu diesem Beitrag zu beachten. Ich habe es gerade beim letzten Debian 9-Update mitbekommen, das durch Zurücksetzen dieser Änderungen korrigiert wurde. Beachten Sie die Ratschläge in Debians Artikel zu diesem Thema: wiki.debian.org/DontBreakDebian (scrollen Sie zu Don't make a FrankenDebian)
Brandon Arnold
98

In /etc/apt/apt.conf.dden folgenden Datei

99defaultrelease:

APT::Default-Release "stable";

in /etc/apt/sources.list.d- füge Urls für testing / unstable Quellen

stable.list:

deb     http://ftp.de.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/    stable main contrib non-free

deb     http://security.debian.org/         stable/updates  main contrib non-free

testing.list:

deb     http://ftp.de.debian.org/debian/    testing main contrib non-free
deb-src http://ftp.de.debian.org/debian/    testing main contrib non-free

deb     http://security.debian.org/         testing/updates  main contrib non-free

Lauf

apt-get update

und dann installieren, was Sie mit brauchen

apt-get -t testing install something

Seien Sie sehr, sehr vorsichtig, wenn Sie Dinge installieren, die viele Abhängigkeiten haben. Tun Sie dies vorzugsweise nicht in der Produktion.

Sie können Ihr Glück auch in Backports oder einem ähnlichen Repository versuchen .

pQd
quelle
1
Beeindruckend. Das war schnell. Ich habe gepostet, um die Informationen zu teilen, auf die ich gerade gestoßen bin! Schön!
Gareth
Ich habe die apt.conf-Methode noch nie benutzt. Es scheint einfacher zu sein, als die Voreinstellungsdateimethode, gibt Ihnen aber weniger genaue Kontrolle. - Coops
Coops
4
Answer muss aktualisiert werden. Diese Konfiguration wird die Dinge komplett zerstören, da Squeeze stabil und Lenny oldstable geworden ist.
El Yobo
1
Nicht mehr verwendbar, bitte aktualisieren
Lothar
4
In neueren Debian-Releases gibt es keine apt.conf-Datei. Bearbeiten Sie stattdessen /etc/apt/apt.conf.d/70debconf
Hayden Thring
49

apt_präferenzen

Definieren Sie in der Datei / etc / apt / preferences die Standardstufe, auf die das System sicher aktualisieren soll:
man apt_preferences

Mit apt_preferences kann man viel anfangen, aber der Einfachheit halber ...

Ich musste ein einzelnes Paket (autoMysqlBackup) installieren, das nur in Testing verfügbar war. Die Lösung bestand darin, Folgendes zu / etc / apt / preferences hinzuzufügen:

Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

Mit mehreren zu /etc/apt/sources.list hinzugefügten Repositorys wird Aptitude jetzt nur auf die angegebene Version aktualisiert, obwohl die Repositorys der späteren Versionen aufgelistet sind (in diesem Fall "stable").

deb http://mirror.aarnet.edu.au/debian/ lenny main
deb-src http://mirror.aarnet.edu.au/debian/ lenny main
deb http://mirror.aarnet.edu.au/debian/ squeeze main
deb-src http://mirror.aarnet.edu.au/debian/ squeeze main

Um dieses Paket zu installieren, müssen Sie lediglich Folgendes tun:

$ aptitude install -t testing packageName 
Gareth
quelle
Dies ist auch eine gute Methode, die nicht so einfach ist wie apt.conf, aber Sie können alle Ihre verschiedenen Quellen auf relative Weise steuern.
Coops
2
Dies ist zu kompliziert für die Aufgabe ... Mit APT :: Default-Release wird die Pin-Priorität des Releases auf 990 gesetzt (ähnlich wie bei 900) und das negative Pinning für den Rest wird nicht wirklich benötigt. Während eines dist-Upgrades hat das stable-Paket ohnehin Priorität. Sobald Sie etwas explizit in der Befehlszeile auflisten, wird die negative Pinning-Priorität meistens ignoriert.
Raphaël Hertzog
Ich bin mir nicht sicher, wie ich dir antworten soll @Raphael. Es scheint eine sehr elegante Art, Dinge zu tun. Ich habe vor Jahren Apt Pinning benutzt, aber ich habe es nie wirklich verstanden. Die Beispiele, die ich oben verwendet habe, stammen direkt aus der Manpage apt_preferences.
Gareth
2
Bestätigen Sie dies funktioniert auf Squeeze
tomfanning
3
@Lothar: Es funktioniert unter Debian 6. Nur weil die Datei nicht existiert, heißt das nicht, dass sie nicht funktioniert. Erstellen Sie einfach die Datei und fügen Sie die Einstellungen hinzu. Zitat aus der Manpage: "Wenn es keine Voreinstellungsdatei gibt oder wenn es keinen Eintrag in der Datei gibt, der für eine bestimmte Version gilt, ist die dieser Version zugewiesene Priorität die Priorität der Distribution, zu der diese Version gehört."
Rzetterberg
13

Für das, was es wert ist, ist der allgemeine Rat, den ich immer gesehen habe: "Mischen Sie sich nicht mit irgendetwas stabil." Die meisten Tutorials zu gemischten Systemen sind für das Mischen von Tests und Instabilitäten gedacht.

Die Argumentation scheint zu sein, dass, wenn Sie Stable mit Testing mischen, sehr einfache Pakete (wie libc6) Updates benötigen (um Software von Testing zu installieren), und sobald diese Basispakete zu Testing wechseln, kann das gesamte System auf diese Weise driften.

Hier sind zwei Alternativen:

  1. Verwenden Sie Backports .
  2. Installieren Sie eine Quelltextzeile aus dem Test und versuchen Sie, die gewünschte spätere Version aus dem Quelltext zu erstellen .
Telemachus
quelle
1
Genau. Ich habe gerade versucht, libdvdread4 vom Testen zu aktualisieren, weil ein Fehler in der Version in wheezy / stable aufgetreten ist. Es will aber die neueste libc einspielen. Also habe ich mir einfach das Quellpaket für libdvdread4 aus stable geholt und es mit der 1-zeiligen Quelländerung gepatcht und neu erstellt. Viel besser als alle möglichen Pakete aus dem Test herauszuholen. Jetzt sind alle Pakete noch die "stabilen" und ich habe nur die 1-Zeilen-Änderung, die ich brauche.
Dienstag,
12

Die Debian-Dokumentation ist umfangreich in diesem Thema und ich rate nachdrücklich, sich damit zu befassen, da sie die Schönheit des Debian-Systems wirklich enthüllen wird.

Werfen Sie einen Blick auf Wie man ein gemischtes System verwaltet . Hier erfahren Sie alles, was Sie wissen müssen.

Tomdeb
quelle
1
Dies scheint die gleiche Methode zu sein, die in der Antwort von @pQd verwendet wurde, daher gilt dies nicht für debian> = 6.0. Auch der Linktitel sagt jetzt "obsolete Dokumentation". Auch meistens nur link antworten.
Dequis
Während @dequis darin recht hat, dass der Link veraltet zu sein scheint, habe ich nur die Anweisungen auf einem Debian 8 (Testen) befolgt, um ein Paket von Unstable zu installieren, und alles scheint perfekt zu funktionieren. Hat jemand einen aktuellen Dokumentationslink?
Domsson
1
Dies ist wahrscheinlich das, wonach Sie suchen: debian.org/doc/manuals/debian-reference/…
tomdeb
7

Eine andere Möglichkeit, die verhindern könnte, dass zu viele Abhängigkeiten von Testing oder Sid installiert werden, ist folgende: Sie weisen apt-get an, die Quelle des Pakets von Testing oder Sid abzurufen und ein Paket für Ihr System mit Debian-Werkzeugen zu erstellen (Sie müssen nicht manuell basteln mit Quellen).

Zitiert von hier:
https://wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F

Wie portiere ich ein Sid-Paket in einen Test- oder Stable-Zustand zurück?

Installieren Sie die Debian-Quelle (und die Entwicklungstools, insbesondere debhelper, devscripts und build-essential) und erstellen Sie dann das Paket.

Schritt für Schritt:

add a deb-src line for sid to your sources.list

apt-get update

apt-get build-dep PACKAGE_NAME

apt-get -b source PACKAGE_NAME 

Die resultierenden Debs sollten sich im aktuellen Verzeichnis befinden und können mit dpkg -i the.deb installiert werden.

gerlos
quelle
4

Ich habe es für einen längeren Zeitraum getan, um sicher zu sein, dass es sicher genug ist und bequem gemacht werden kann. Mit dem folgenden Setup wird die stabile Version standardmäßig installiert. In Aptitude können Sie jedoch auch eine backportierte oder eine instabile Version auswählen, wenn dies gewünscht wird:

Bildbeschreibung hier eingeben

Es müssen vier Dinge bearbeitet werden, das Standard-Pinning-Release muss festgelegt werden, die Quellen müssen Backports und Unstable hinzugefügt werden, die Pinning-Priorität von Backports / Unstable-Paketen muss gesenkt werden, und die Einstellungen für die Eignungsanzeige müssen geändert werden, um das Pinning anzuzeigen.

  • Erstellen Sie ein '/etc/apt/apt.conf.d/10defaultrelease' und machen Sie den Inhalt wie folgt:
Apt :: default-Release "stable";
  • Bearbeiten Sie Ihre '/etc/apt/sources.list' , um instabile Quellen und Backports hinzuzufügen, sodass sie ungefähr so aussehen:
# deb cdrom: [Debian GNU / Linux 6.0.0 _Squeeze_ - Offizielle Multi-Architektur amd64 / i386 NETINST # 1 20110205-14: 45] / squeeze main

deb http://ftp.us.debian.org/debian/ squeeze main
deb-src http://ftp.us.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze / updates main
deb-src http://security.debian.org/ squeeze / updates main

# squeeze-update, früher bekannt als 'volatile'
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

# Backports quetschen
# http://backports.debian.org/Instructions/
deb http://backports.debian.org/debian-backports squeeze-backports main

# instabil
# http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/ unstable main
deb-src http://ftp.us.debian.org/debian/ unstable main

# nicht frei ab. Sonne Java
#deb http://ftp.us.debian.org/debian/ squeeze non-free
# deb-src http://ftp.us.debian.org/debian/ squeeze non-free
  • etc/apt/preferencesPinning-Datei bearbeiten - Wenn die Datei nicht existiert, erstelle sie.
# Prioritäten beim Festlegen von Paketen
# Siehe http://wiki.debian.org/AptPreferences und http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences
#
# In der Nussschale wird die höchste PIN installiert
#
# Folgende Pining-Standardeinstellungen gelten zusätzlich zu unseren Einstellungen:
# 990 - für Versionen, die nicht installiert sind, aber zu unserer `APT :: Default-Relase" stable "-Einstellung gehören.
# 500 - für Versionen, die nicht installiert sind und nicht zur Zielversion gehören
# 100 - für Pakete, die bereits installiert sind, bedeutet dies auch andere Versionen desselben Pakets
# 1 - für experimentelle Pakete; Pakete mit "NotAutomatic: yes"
#
# Unsere Pinnings
# 400 - Backports, die sicher installiert werden können, ohne dass andere Pakete aktualisiert werden müssen
# 50 - Instabile Pakete, deren Installation im Detailfenster erzwungen wird, können zu Konflikten führen

Paket: *
Pin: Freigabe n = Squeeze-Backports
Pin-Priorität: 400

Paket: *
Pin: lasse a = instabil los
  • Erstellen Sie '/etc/apt/apt.conf.d/100guiconf' und richten Sie Aptitude so ein , dass die Fixierungsinformationen angezeigt werden.
Aptitude :: UI :: Paket-Anzeige-Format "% c% a% M% p% Z% v% V% i";
Daniel Sokolowski
quelle
1
Nur ein Update, bei dem ich mich zusätzlich dazu entschieden habe, alle meine Systempakete in den Entwicklungs-Repositorys "testing" auszuführen. Also source.listsollte es Codenamen sagen jessiestatt squeeze. Debians Politik testingist nahezu stabil und Pakete waren fast so neu wie aus dem unstableRepository. Mir geht hier der Speicherplatz aus, schauen Sie sich also bitte Folgendes an: wiki.debian.org/DebianReleases , wiki.debian.org/StableUpdates und wiki.debian.org/StableProposedUpdates ; Die letzten beiden sind zusätzliche Repository-Quellen.
Daniel Sokolowski
2

Wenn Ihre Paketauswahl umfangreicher ist oder die Installation auf mehreren Computern wiederholt wird, können Sie ein privates Repository einrichten, das eine Teilmenge der offiziellen Repositorys widerspiegelt. Dies erfordert ein wenig Arbeit bei der Konfiguration des Repositorys, aber die Belohnung lässt sich mit einem Minimum an Konfiguration auf jedem Client und wiederholbaren Ergebnissen bei Dutzenden von Installationen einfach verwalten. Ich finde dies hilfreich, auch wenn nur ein oder zwei Pakete installiert werden, und verwende diese Methode zur Automatisierung und Wartung von Cloud-Installationen. Ein einzelner Server auf einem billigen VPS kann Dutzende privater Repositorys verwalten.

So konfigurieren Sie Ihren privaten Repository-Server:

# Install aptly.
apt-get install aptly

# Create local mirror (choose a source mirror near you).
aptly mirror create -filter="mirror-contains-no-packages" stretch-roundcube http://httpredir.debian.org/debian stretch main

# Configure filters for local mirror.
aptly mirror edit -filter="Name (% roundcube*)" stretch-roundcube

# Update local mirror.
aptly mirror update stretch-roundcube

# Drop previously published repositories and mirrors, if running these commands in a script.
aptly publish drop stretch

# Drop snapshot, if running these commands in a script.
aptly snapshot drop stretch-roundcube

# Create new snapshot.
aptly snapshot create stretch-roundcube from mirror stretch-roundcube

# Publish snapshot.
aptly publish snapshot -architectures=i386,amd64 -distribution=stretch -component=roundcube -label="Your Name" -origin="Your Name" stretch-roundcube

Konfigurieren Sie anschließend den gewünschten Webserver für die Bereitstellung der statischen Repository-Dateien. Schützen Sie das Repository möglicherweise mit einem Sicherheitszertifikat und einer grundlegenden Authentifizierung.

Um Ihr privates Repository automatisch zu verwalten und Updates vom Upstream abzurufen, fügen Sie die obigen Informationen in ein Skript ein und führen Sie sie von einem Cron-Job aus.

So konfigurieren Sie Ihren Client-Computer auf Ihrem Client-Computer:

# Configure private repository without authentication.
echo 'deb http://private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list

# Configure private repository with authentication.
echo 'deb https://hostname:[email protected]/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
apt-get install apt-transport-https

# Update.
apt-get update

# Install package.
apt-get install roundcube

Gehen Sie wie folgt vor, um Ihren Clientcomputer zu warten und alle Updates für Ihr privates Repository auf Ihrem Clientcomputer abzurufen:

# Update.
apt-get update

# Upgrade.
apt-get upgrade
Daniel Kauffman
quelle
1

Eine andere Möglichkeit ist, stattdessen das Quellpaket aus dem Test herunterzuladen. APT kann das Quellpaket nach dem Herunterladen automatisch erstellen. Auf diese Weise werden Ihre Stable-Pakete durch das Testen von Updates nicht beeinträchtigt. Der einzige Nachteil ist, dass es mehr Zeit braucht, als nur das Binärpaket herunterzuladen und zu installieren.

Um APT so zu konfigurieren, dass Quellpakete aus dem Test heruntergeladen werden, fügen Sie einfach Folgendes hinzu:

deb-src http://<your debian mirror here> testing main

Wenn Sie nur den aktuellen und nicht den zukünftigen Tests folgen möchten, ersetzen Sie "testing" durch den aktuellen Codenamen (ab diesem Zeitpunkt ist es "buster").

temy
quelle