Debian ist auf Stabilität bedacht und daher kommt in den "stable" Tree ( momentan: Etch, aka Debian 4.0 [vormals: Sarge, aka Debian 3.1] ) nur das, was auch sicher läuft. Im "testing" Tree ist das, was keine kritischen Fehler mehr besitzt, im "unstable" Tree das, was für die Entwickler funktioniert und von anderen getestet werden soll, und im "experimental" Tree werden z.B. neue Versionen des Paketmanagements und größere Änderungen am Gesamtsystem getestet, und Beta-Versionen von bekannten Anwendungen zur Verfügung gestellt.

Man möchte manchmal eine Version eines Paketes aus "testing" oder "unstable" haben, ohne gleich das ganze System zu aktualisieren - das würde aber passieren, wenn man seine /etc/apt/sources.list auf "unstable" zeigen ließe. Alternativ kann man sich den Krempel natürlich mit apt-get -b source install $PAKETNAME selbst kompilieren lassen, aber dafür fehlen fast immer -zig Entwicklerbibliotheken, die für nix anderes benötigt werden.

1. Erste Möglichkeit: pinning

siehe auch ../AptPinning -> ToDo: zusammenlegen

Für sowas gibt es das pinning feature vom apt Paketmanager, welches sinnigerweise aber erst ab der in "woody" vorhandenen apt-Version unterstützt wird :-)

Das funktioniert z.B. so: Angenommen, man installiert normalerweise aus "testing", aber will ein Paket aus "unstable" haben (z.B. weil man ein bestimmtes Feature braucht). Man schreibt in seine /etc/apt/preferences

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

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

trägt eine passende Zeile für "unstable" in seine /etc/apt/sources.list ein, und kann dann mittels apt-get -t unstable install $PAKETNAME ein Paket aus "unstable" installieren, während aber bei "normalem Betrieb" alles aus "testing" geholt wird. Abhängigkeiten werden dabei selbstverständlich automatisch beachtet, wie immer.

Ja, so einfach ist das. Debian ist halt genial. :-)

Leider gibt es bisher keine Möglichkeit, ein Paket X aus Quelle X1 und ein anderes Paket Y aus Quelle X2 zu installieren. Das wäre dann wirklich genial. Wenn ich mich irre, bitte ergänzen!

Und würde das helfen?

Package: xyz
Pin: origin www.backports.org
Pin-Priority: 905

Check mit apt-cache policy

 905 http://www.backports.org woody/mozilla-thunderbird Packages
     origin www.backports.org

eben Debian.

2. Zweite Möglichkeit: Default-Release

Schreibe einfach in deine /etc/apt/apt.conf

DPkg::Default-Release "testing";

Dann wird standardmäßig aus "testing" installiert und nur bei Bedarf was neueres. :-)

3. Andere Möglichkeit: Verschiedene Versionen in verschiedenen Partitionen

Wenn man stable installiert hat und nur mal kucken möchte, was es alles so in testing (oder unstable) neues gibt, kann man sich das auch einfach parallel in einer anderen Partition installieren (sofern man noch genügend Platz auf der Platte hat).

3.1. Altes System auf neue Partition kopieren

3.1.1. Partition erstellen + formatieren

Die LinuxPartitionierung kann man mit cfdisk vornehmen.

Anschließend formatieren mit mke2fs.

3.1.2. Neue Partition mounten

Die neue Partition in etc/fstab eintragen, z.B. so:

/dev/hde7       /mnt/testing    ext3    errors=remount-ro       0       0

3.1.3. Daten rüberkopieren

Jetzt kann man (fast) den kompletten Verzeichnisbaum auf die neue Partition kopieren. Davon ausnehmen muss man das Verzeichnis /mnt/testing (siehe Beispiel oben) und /proc.

> cp -xvRp / /mnt/testing

Das gilt nur wenn das Quellsystem vorher nur aus einer Partition bestand.

3.1.4. Konfiguration anpassen

3.1.4.1. lilo.conf

/mnt/testing/etc/lilo.conf anpassen:

# Specifies the device that should be mounted as root. (`/')
#
root=/dev/hde5

dort eintragen: /dev/hde7

und anschließend LILO laufenlassen:

# lilo -C /mnt/testing/etc/lilo.conf

Vielleicht sollte man zur Sicherheit vorher noch eine BootDiskette erstellen, damit man zur Not wieder auf das alte zurückgreifen kann.

3.1.4.2. /etc/fstab

# mv /mnt/testing/mnt/testing /mnt/testing/mnt/stable

Auf der neuen Partition fstab anpassen: einfach die Einträge von alter und neuer Partition vertauschen, also z.B. aus

/dev/hde5       /               ext3    errors=remount-ro       0       1
/dev/hde7       /mnt/testing    ext3    errors=remount-ro       0       0

wird

/dev/hde7       /               ext3    errors=remount-ro       0       1
/dev/hde5       /mnt/stable     ext3    errors=remount-ro       0       0


OffeneFrage: Was muss man noch alles anpassen?

3.2. Von neuer Partition booten

# reboot

3.3. Neues System upgraden

In /etc/apt/sources.list woody ersetzen durch testing.

# apt-get update
# apt-get distupgrade

Dann fängt der an, einiges an Pakete zu saugen, nach ca. 1 Stunde (je nach Internetzugang) darf man ein Frage- und Antwort-Spiel machen (wobei die Default-Antworten wahrscheinlich meistens nicht so verkehrt sind).

Irgendein Paket fehlt dann noch, empfohlen wurde apt-get -f install. Danach lief's weiter.

4. Andere Möglichkeit (Alternative): Verschiedene Versionen in verschiedenen Partitionen

Ich wollte den Debian Installer des Testing-Zweig probieren ohne dabei meine Stable-Installation zu zerstören und habe dabei folgendes gemacht:

  1. Neue Partition erzeugt.
  2. Debian Installer aufgerufen und als Ziel die neue Partition angegeben. Die vorhandene Swap-Partition habe ich auch hier als Swap angegeben (d.h. beide Installationen können sich eine Swap-Partition teilen).
  3. Der Debian Installer hat mir Grub als Bootmanager auf meine Bootpartition geschrieben und damit meinen vorhandenen Lilo überschrieben. Also danach mittels rescue-disk wieder in das alte Debian gebootet und im /etc/lilo.conf die neue Testing als weiteres Image eingetragen. Wichtig ist, dass man die neue Partition mountet und das vmlinuz von dort ins lilo.conf reinschreibt, also z.B.:

image=/mnt/vmlinuz
        root=/dev/hdd6
        label=Debian testing
        read-only
  1. Danach lilo aufrufen und man kann ab jetzt beim booten zwischen Stable und Testing wählen.

5. Fazit

Läuft alles noch nicht so superrund, d.h. es ist ganz praktisch zu wissen, dass man noch die alte, stabile Version in der Hinterhand hat. Aber ganz spannend ist das natürlich schon. Und falls das jemals wieder alles richtig laufen sollte, kann man ja mal unstable ausprobieren ... ;)

Debian/MehrereVersionen (zuletzt geändert am 2008-04-22 12:26:38 durch SebastianWild)