Frage Wie kann ich Debian stabil laufen lassen, aber einige Pakete vom Testen installieren?


Angenommen, Sie führen einen Server aus, und Sie möchten kein Upgrade auf Test (Squeeze) von Stable (Lenny) durchführen, um nur ein oder zwei erforderliche Pakete zu installieren.

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


180
2018-06-09 07:53


Ursprung


Dies ist, was die neueste offizielle Dokumentation zu sagen hat: Pakete aus gemischten Quellen von Archiven. - Alexey


Antworten:


Viele Leute scheinen Angst davor zu haben, stabil mit Tests zu mixen, aber ehrlich gesagt ist das Testen selbst ziemlich stabil, und mit den richtigen Einstellungen und der Überprüfung der Lösung können Sie die "Stabilitätsdrift" vermeiden, die Ihre Kernpakete auf den instabilen Pfad bringt.

"Testen ist ziemlich stabil ??", du fragst. Ja. Damit ein Paket von Unstable zu Testing migrieren kann, muss es 10 Tage lang keine offenen Bugs haben. Es besteht die Möglichkeit, dass jemand, insbesondere für die populäreren Pakete, einen Fehlerbericht für eine instabile Version einreicht, wenn etwas nicht stimmt.

Selbst 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 benötigt, als in stable.

Folgendes empfehle ich für die Einrichtung:

Erstellen Sie zuerst die folgenden Dateien in /etc/apt/preferences.d:

security.pref:

Package: *
Pin: release l=Debian-Security
Pin-Priority: 1000

stable.pref:

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

testing.pref:

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

unstable.pref:

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

experimental.pref:

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

(Haben Sie keine Angst vor dem instabilen / experimentellen Zeug hier. Die Prioritäten sind niedrig genug, dass es niemals automatisch solche Sachen installieren wird. Selbst der Test-Zweig wird sich verhalten, da er nur die Pakete installiert, die Sie sein wollen beim Testen.)

Erstellen Sie nun einen passenden Satz für /etc/apt/sources.list.d:

security.list:

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

stable.list:

deb     http://mirror.steadfast.net/debian/ stable main contrib non-free
deb-src http://mirror.steadfast.net/debian/ stable main contrib non-free
deb     http://ftp.us.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.us.debian.org/debian/    stable main contrib non-free

testing.list: Gleich wie stable.list, außer mit testing.

unstable.list: Gleich wie stable.list, außer mit unstable.

experimental.list: Gleich wie stable.list, außer mit experimental.

Sie können den steadfast.net-Spiegel mit allem ersetzen, was Sie wollen. Ich würde empfehlen, zu verwenden netselect-apt um den schnellsten Spiegel herauszufinden, und benutze das für deine erste Wahl. Das ftp.us.debian.org kann als Backup verwendet werden. Es ist auch wichtig, die Begriffe zu verwenden stable, testing, unstableusw., statt squeeze, wheezy, sidusw., seit stable ist ein bewegliches Ziel und wenn es an der Zeit ist, auf die neueste Version zu aktualisieren, wird apt / aptitude das automatisch herausfinden.

Sie können auch eine hinzufügen oldstable im sources.lists.d und preferences.d (Verwenden Sie eine Priorität von 1), obwohl dieser Verweis tendenziell ablaufen und vor dem nächsten stabilen Zyklus verschwinden wird. In solchen Fällen können Sie verwenden http://archive.debian.org/debian/ und "hardcode" die Debian-Version (Etch, Lenny usw.).

Um die Testversion eines Pakets zu installieren, verwenden Sie einfach aptitude install lib-foobar-package/testingoder springen Sie einfach in die GUI von aptitude und wählen Sie die Version innerhalb der Paketdetails aus (drücken Sie die Eingabetaste auf dem Paket, das Sie gerade betrachten).

Wenn Sie sich über Paketkonflikte beschweren, sehen Sie sich zuerst die Lösungen an. In den meisten Fällen wird der erste sein "Installieren Sie diese Version nicht". Erfahren Sie, wie Sie die Auswahlmöglichkeiten für die Annahme / Ablehnung von Aufträgen pro Paket verwenden. Wenn Sie beispielsweise foobar-package / testing installieren und die erste Lösung lautet: "foobar-package / testing" nicht installieren, dann markieren Sie diese Option als abgelehnt, und die anderen Lösungen wechseln nie wieder in diesen Pfad. In solchen Fällen müssen Sie wahrscheinlich einige andere Testpakete installieren.

Wenn es zu haarig wird (wie es ist, libc oder den Kernel oder ein anderes riesiges Kernsystem zu aktualisieren), dann können Sie entweder diese Upgrade-Pfade ablehnen oder das ursprüngliche Upgrade ganz zurückgeben. Denken Sie daran, dass es nur auf Test / Unstable aktualisiert wird, wenn Sie es erlauben.


166
2018-04-23 02:38



Danke, benutze diese Methode und alles funktioniert so, wie ich es erwartet habe! - Brad F Jacobs
Ich versuche, dies zu verwenden, aber ich bin nicht in der Lage, irgendwelche Abhängigkeiten aufzulösen. Es scheint, als würde weder apt-get, noch aptitude nach den Abhängigkeiten in den Testing Repos suchen. Gibt es eine Möglichkeit, das zu lösen? - Tamás Szelei
Bist du gerannt apt-get update nachdem Sie die Konfigurationsdateien erstellt haben? - Flow
WICHTIG: Der Autor wählte einen Pinning Preference Wert für stable / security höher als der Default Release Wert ... siehe serverfault.com/a/653552/120130 Für mehr Information - Alex Ryan
Diese Antwort hat mein System zerstört. Nach einem Versuch zu tun sudo apt-get updateIch habe einen Updatefehler erhalten. Dann neu gestartet, was mir gegeben hat Xsession error, neu gestartet, und jetzt habe ich keine gui. das /dev/sda1/ ist jetzt voll. Großartig. - luchonacho


Im /etc/apt/apt.conf.d Fügen Sie die folgende Datei hinzu

99defaultrelease:

APT::Default-Release "stable";

im /etc/apt/sources.list.d - Fügen Sie URLs für Tests / instabile Quellen hinzu

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 Sie, was Sie brauchen mit

apt-get -t testing install something

Sei sehr vorsichtig, wenn du Sachen installierst, die viele Abhängigkeiten haben. Tun Sie dies vorzugsweise nicht bei der Produktion.

Sie können auch Ihr Glück versuchen Rückportierungen oder ähnliches Repository.


90
2018-06-09 07:57



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 Methode apt.conf nie zuvor benutzt. Es scheint einfacher zu sein, dass die Voreinstellungsdatei-Methode Ihnen aber weniger genaue Kontrolle gibt. - Kästen - Coops
Antwort muss aktualisiert werden; Diese Konfiguration wird die Dinge komplett durchbrechen, jetzt da Squeeze stabil geworden ist und Lenny zu Oldstable geworden ist. - El Yobo
Nicht mehr nutzbar, bitte updaten - Lothar
In neueren Debian-Versionen gibt es keine apt.conf-Datei, stattdessen bearbeiten Sie /etc/apt/apt.conf.d/70debconf - Hayden Thring


apt_preferences

Definieren Sie die Standardstufe, auf die das System in der Datei / etc / apt / preferences 'safe-upgrade' ausführen soll:
Mann apt_preferences

Sie können mit apt_preferens viel tun, 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

Wenn mehrere Repositories zu /etc/apt/sources.list hinzugefügt werden, wird aptitude nur noch auf die angegebene Version aktualisiert, auch wenn die späteren Release-Repositorys aufgelistet sind (in diesem Fall "stabil").

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 nur Folgendes tun:

$ aptitude install -t testing packageName 

46
2018-06-09 08:04



Dies ist auch eine gute Methode, nicht so schnell wie apt.conf, aber Sie können alle Ihre verschiedenen Quellen relativ steuern. - Coops
Das ist zu kompliziert für die Aufgabe ... Mit APT :: Default-Release wird die Pin-Priorität des Releases auf 990 gesetzt (ähnlich wie Sie es auf 900 setzen) und das negative Pinning für den Rest wird nicht wirklich benötigt. Bei stor-upgrades hat das stable-Paket sowieso Priorität und sobald Sie etwas explizit in der Kommandozeile auflisten, wird seine 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 apt vor Jahren gepinnt, aber ich habe es nie wirklich "verstanden". Die Beispiele, die ich oben verwendet habe, stammen direkt von der Manpage apt_preferences. - Gareth
Bestätigen Sie, dass dies bei Squeeze funktioniert - tomfanning
@Lothar: Es funktioniert auf 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 von der man-Seite: "Wenn es keine Einstellungsdatei gibt oder wenn es keinen Eintrag in der Datei gibt, der für eine bestimmte Version gilt, dann ist die Priorität, die dieser Version zugewiesen ist, die Priorität der Distribution, zu der diese Version gehört." - rzetterberg


Die Debian-Dokumentation ist umfangreich in dem Thema und ich rate dringend zu graben, wie es wirklich die Schönheit des Debian-Systems enthüllen wird.

Schau es dir an Wie man ein gemischtes System behältEs erklärt alles, was Sie wissen müssen.


12
2018-06-09 08:24



Dies scheint die gleiche Methode zu sein, die in der Antwort von @pQd verwendet wird, so dass sie nicht für debian> = 6.0 gilt. Auch der Linktitel sagt jetzt "veraltete Dokumentation". Meist auch nur antworten. - dequis
Während @dequis Recht hat, dass der Link veraltet zu sein scheint, habe ich einfach die Anweisungen auf einem Debian 8 (testing) befolgt, um ein Paket von unstable zu installieren, und alles scheint einfach perfekt zu funktionieren. Jeder hat einen aktuellen Dokumentationslink? - domsson
Dies ist wahrscheinlich das, wonach Sie suchen:debian.org/doc/manuals/debian-reference/... - tomdeb


Für was es wert ist, ist der allgemeine Ratschlag, den ich immer gesehen habe, "vermische dich nicht mit irgendetwas." Die meisten gemischten Systemtutorials sind für das Mischen von Tests und Unstable gedacht.

Die Argumentation scheint zu sein, dass sehr einfache Pakete (wie libc6) Updates benötigen (um Software aus dem Test zu installieren), und wenn diese Basispakete zum Testen übergehen, kann das ganze System auf diese Weise driften.

Hier sind zwei Alternativen:

  1. Benutzen Rückportierungen.
  2. Installieren Sie eine Quellzeile vom Testen und versuchen Sie es Erstellen Sie die spätere Version aus der Quelle.

10
2018-06-09 13:09



Genau. Ich habe gerade versucht, libdvdread4 wegen eines Fehlers in der Version in wheezy / stable zu aktualisieren. Es will aber die neueste libc einbringen. Also habe ich einfach das Quellpaket von libdvdread4 aus stable geholt und es mit der 1 Zeilen Quelländerung gepatcht und neu aufgebaut. Viel besser, als alle möglichen Pakete aus dem Test zu ziehen. Jetzt sind alle Pakete immer noch die "stabilen" und ich habe nur die 1-Zeilen-Änderung, die ich brauche. - dgrant


Ein anderer Weg, der verhindern könnte, zu viele Abhängigkeiten von Testing oder Sid zu installieren, ist folgendes: Sie sagen apt-get, die Quelle des Pakets von Testing oder Sid zu bekommen und ein Paket für Ihr System mit Debian-Tools zu erstellen (keine Notwendigkeit, manuell zu basteln mit Quellen).

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

Wie kann ich ein Sid-Paket zu Testing oder Stable zurückportieren?

Installieren Sie die Debian-Quelle (und insbesondere die Entwicklungstools)   debhelper, devscripts und build-essential) und 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   installiert mit dpkg -i the.deb.


7
2018-03-13 17:02





Ich habe es für einen längeren Zeitraum getan, um sicher zu sein zu sagen, dass es sicher genug ist und bequem gemacht werden kann. Bei der folgenden Konfiguration wird standardmäßig die stabile Version installiert, Aptitude erlaubt Ihnen jedoch auch, die zurückportierte oder unstable Version zu wählen, falls dies gewünscht wird:

enter image description here

Es gibt vier Dinge, die bearbeitet werden müssen, die Standard-Pinning-Version muss eingestellt werden, die Quellen müssen Backports und Unstable hinzugefügt haben, die Pinning-Priorität von Backports / Unstable-Paketen gesenkt werden und die Aptitude-Anzeigeeinstellungen müssen geändert werden, um Pinning anzuzeigen.

  • Ein ... kreieren '/etc/apt/apt.conf.d/10deferrelease' und mache es wie folgt:
Apt :: default-Freigabe "stable";
  • Bearbeiten Sie Ihre '/etc/apt/sources.list' um Unstable hinzuzufügen und Quellen zurück zu portieren, so dass es ungefähr so ​​aussieht:
# 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, bisher bekannt als 'volatile'
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

# Squeeze Backports
# http://backports.debian.org/Instruktionen/
deb http://backports.debian.org/debian-backports squeeze-backports main

# instabil
# http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/instal main
deb-src http://ftp.us.debian.org/debian/instabilität main

# nicht frei ex. Sonne Java
#deb http://ftp.us.debian.org/debian/ squeeze non-free
# deb-src http://ftp.us.debian.org/debian/ squeeze non-free
  • Bearbeiten etc/apt/preferences Datei pinnen - wenn die Datei nicht existiert, erstellen Sie sie.
# Fixierungs-Prioritäten für Pakete
# 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
#
# Pining Standard sind wie folgt, die zusätzlich zu unseren Einstellungen sind:
# 990 - für Version, die nicht installiert sind, aber gehören zu unserer 'APT :: Default-Relase "stable" `Einstellung.
# 500 - für Versionen, die nicht installiert sind und nicht zum Ziel-Release gehören
# 100 - für bereits installierte Pakete bedeutet dies auch andere Versionen des gleichen Pakets
# 1 - für experimentelle Pakete; Pakete mit "NotAutomatic: ja"
#
# Unsere Pinnings
# 400 - Backports, die sicher installiert werden können, ohne dass andere Pakete aktualisiert werden müssen
# 50 - instabile Pakete, die im Detailbildschirm erzwungen werden, können zu Konflikten führen

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

Paket: *
Pin: release a = instabil
  • Erstellen '/etc/apt/apt.conf.d/100guiconf' und um Aptitude einzurichten, so dass Pinning-Informationen angezeigt werden.
Aptitude :: UI :: Paket-Anzeige-Format "% c% a% M% p% Z% v% V% i";

4
2018-02-04 22:59



Nur ein Update, das zusätzlich zu den oben genannten, habe ich beschlossen, alle meine System-Pakete von den "Test" -Entwicklungs-Repositories laufen zu lassen. Also rein source.list es sollte Codename sagen jessie anstatt squeeze. Debians Politik testing ist fast stabil und Pakete sind fast so neu wie von der unstable Repository. Mir geht der Platz aus. Bitte sehen Sie sich an: wiki.debian.org/DebianReleases, wiki.debian.org/StableUpdates, und wiki.debian.org/StableProposedUpdates; Die letzten beiden sind zusätzliche Repository-Quellen. - Daniel Sokolowski


Wenn Ihre Paketauswahl komplizierter ist oder die Installation auf mehreren Computern wiederholt wird, sollten Sie ein privates Repository einrichten, das eine Teilmenge der offiziellen Repositorys spiegelt. Dies erfordert ein wenig Arbeit, um das Repository zu konfigurieren, aber die Belohnung ist einfach zu verwalten mit einem Minimum an Konfiguration auf jedem Client und wiederholbaren Ergebnissen bei Dutzenden von Installationen. 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 von privaten Repositories 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 Ihren bevorzugten Webserver für die Bereitstellung der statischen Repository-Dateien. Schützen Sie das Repository möglicherweise mit einem Sicherheitszertifikat und einer Standardauthentifizierung.

Um Ihr privates Repository automatisch zu verwalten und Updates von Upstream einzuholen, legen Sie das oben genannte in ein Skript und führen Sie einen Cron-Job aus.

So konfigurieren Sie Ihren Clientcomputer auf Ihrem Clientcomputer:

# 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:password@private.repository.example.com/ 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

So pflegen Sie Ihren Clientcomputer und holen Sie alle Aktualisierungen Ihres privaten Repositorys auf Ihrem Clientcomputer ein:

# Update.
apt-get update

# Upgrade.
apt-get upgrade

2
2017-07-06 18:53