Inhaltsverzeichnis
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:
- Neue Partition erzeugt.
- 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).
- 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
- 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 ...