On Fri, 28 Nov 2014, Stephan Seitz wrote:
> Of course not. syslog-ng was not replaced by rsyslog when Debian changed the
> default syslog.
Note that syslog-ng was not the default, but sysklogd (which was)
wasn’t replaced either. Thankfully.
> The grub1 bootloader was not replaced when Debian changed to
> grub2.
Actually, it was, unless you installed the fresh “grub-legacy”
package before upgrading, which was mostly a no-op though. And
forgetting to do so *did* hose some obscure systems.
So, the GRUB 0.x → GRUB2 change is actually a g̲o̲o̲d̲ example of
why the init system ought to be kept on upgrade.
I’ve attached the company-internal documentation (minus one
person name) of the process I used to upgrade virtually all
of our lenny machines straight to wheezy (we mostly skipped
squeeze altogether). It’s MediaWiki syntax. It’s German but
you’ll get rough ideas, enough LC_ALL=C dpkg/apt in there.
bye,
//mirabilos
--
tarent solutions GmbH
Rochusstraße 2-4, D-53123 Bonn • http://www.tarent.de/
Tel: +49 228 54881-393 • Fax: +49 228 54881-235
HRB 5168 (AG Bonn) • USt-ID (VAT): DE122264941
Geschäftsführer: Dr. Stefan Barth, Kai Ebenrett, Boris Esser, Alexander Steeg
= Debian Lenny → Wheezy Upgrade =
[[Category:HowTos]]
sudo su -
exec mksh -l
== Vorab zu prüfen ==
Wenn irgendwelche Software händisch installiert ist, die Python < 2.6 braucht,
abbrechen oder vorher sicherstellen, daß die Software hinterher mit Python 2.7
ⓐ noch läuft und ⓑ man die auch dagegen neukompilieren und installieren kann!
== Sicherstellen, daß das lenny komplett up-to-date ist ==
* '''Mindestens einen 2.6.32 Kernel, ggfs. aus lenny-backports, booten!'''
* Nachgucken, welche PostgreSQL-Version(en) installiert und/oder aktiv sind.
* System aktualisieren und aufräumen:
agus
apt-get --purge dist-upgrade
apt-get --purge autoremove
apt-get --purge clean
dpkg --audit
Gern auch „von Hand“ mit '''dselect''' interaktiv.
== ggfs. Pakete auf „hold“ setzen ==
for x in mailman; do print $x hold; done | dpkg --set-selections
== squeeze sources.list draufkopieren ==
Je nach Location (extern vs. im tarent-Netz):
* admin/unix/sources.list/squeeze
* admin/unix/sources.list/squeeze.tarent
Die '''/etc/apt/sources.list''' hierdurch ersetzen. Alle lokalen Anpassungen
sind eh’ in '''/etc/apt/sources.list.d/*.list'''.
Außerdem die /etc/apt/preferences und ggfs. /etc/apt/preferences.d/**
leeren/reviewen.
== dpkg aktualisieren, grub-legacy beibehalten, apt-listbugs entfernen ==
apt-listbugs entfernen – es geht während des Upgrades von squeeze auf wheezy
zwischendrin kaputt, weil seine Dependencies nicht korrekt sind und die Ruby
1.8 → 1.9.1(really-1.9.3) Migration im Weg ist. Außerdem nervt das eh immer nur.
agus
apt-get --purge install dpkg apt-listbugs- grub- grub-legacy
== apt aktualisieren ==
Potentiell ein bißchen tricky, durch einen Bug in APT selber.
apt-get --purge install apt
agus
Wenn das nicht klappt:
apt-get --purge install apt -o APT::Immediate-Configure=no
agus
== System temporär auf squeeze heben ==
Potentiell ein bißchen tricky, durch einen Bug in APT selber.
apt-get --purge dist-upgrade
Falls Fehler auftreten, iterativ so lösen:
* E: Could not perform immediate configuration on 'perl'. Please see man 5
apt.conf under APT::Immediate-Configure for details. (2)
* E: Could not perform immediate configuration on 'perl-modules'. Please see
man 5 apt.conf under APT::Immediate-Configure for details. (2)
apt-get --purge install perl -o APT::Immediate-Configure=no
apt-get --purge dist-upgrade
* E: Could not perform immediate configuration on 'g++-4.4'. Please see man 5
apt.conf under APT::Immediate-Configure for details. (2)
apt-get --purge install build-essential -o APT::Immediate-Configure=no
apt-get --purge dist-upgrade
== Platz schaffen ==
'''Achtung:''' (hier noch) keine postgresql-* Pakete von „autoremove“ entfernen
lassen!
apt-get --purge autoremove
apt-get --purge clean
== ggfs. Pakete auf „hold“ setzen ==
''(wo nötig, Beispiel siehe oben)''
== wheezy sources.list draufkopieren ==
Je nach Location (extern vs. im tarent-Netz):
* admin/unix/sources.list/wheezy
* admin/unix/sources.list/wheezy.tarent
Die '''/etc/apt/sources.list''' ersetzen. Alle lokalen Anpassungen sind eh’ in
'''/etc/apt/sources.list.d/*.list'''.
Außerdem ''erneut'' die /etc/apt/preferences und ggfs.
/etc/apt/preferences.d/** leeren/reviewen (da tarent-server für squeeze sie
noch mit Leben füllen könnte).
== tar und danach(!) dpkg aktualisieren ===
agus
apt-get --purge install tar
apt-get --purge install dpkg
dpkg --audit
Manchmal mag dpkg nicht, das sieht dann so aus:
The following packages have unmet dependencies:
libc6-dev : Breaks: gcc-4.4 (< 4.4.6-4) but 4.4.5-8 is to be installed
E: Broken packages
Demfalls hilft i.d.R. ein Entfernen von gcc-4.4 (braucht das noch wer? in
wheezy nichtmals m68k…):
apt-get --purge install dpkg gcc-4.4-base- -o APT::Immediate-Configure=no
dpkg --audit
gcc-4.3 wird dabei auch direkt entfernt, aber das gibt’s in wheezy eh’ nicht
mehr.
== apt aktualisieren ==
'''Achtung:''' (hier noch) keine postgresql-* Pakete von „autoremove“ entfernen
lassen!
apt-get --purge install apt
agus
apt-get --purge autoremove
apt-get --purge clean
Was wenn…
* E: Could not perform immediate configuration on 'perl'. Please see man 5
apt.conf under APT::Immediate-Configure for details. (2)
apt-get --purge install apt -o APT::Immediate-Configure=no
agus
apt-get --purge autoremove
apt-get --purge clean
== System auf wheezy heben ==
Anmerkung: die Datei /etc/default/rcS beim Upgrade durch die Systemkopie
ersetzen lassen.
print FANCYTTY=0 >>/etc/lsb-base-logging.sh
apt-get --purge dist-upgrade
perl -pi -e 's/#su/su/g' /etc/logrotate.d/mailman
print '/VERBOSE=/s/^.*$/VERBOSE=yes/\nwq' | ed -s /etc/default/rcS
print '/FSCKFIX=/s/^.*$/FSCKFIX=yes/\nwq' | ed -s /etc/default/rcS
print '/RAMTMP=/s/^.*$/RAMTMP=yes/\nwq' | ed -s /etc/default/tmpfs
== Kernel und Kernelmetapakete aufräumen ==
Anmerkung: wie auch schon weiter oben, ein „install“ mit Minus am Ende entfernt
das Paket stattdessen. Daher diese Konstruktion.
=== amd64 ===
apt-get --purge install linux-image-amd64 linux-image-2.6-amd64-
Falls Backports-Kernel gebootet wurde, noch den Nichtbackportskernel von
squeeze entfernen, der ggfs. temporär installiert wurde:
apt-get purge linux-image-2.6.32-5-amd64
=== i386 ===
apt-get --purge install linux-image-686-pae linux-image-686-bigmem- \
linux-image-686- linux-image-2.6-686-bigmem- linux-image-2.6-686-pae- \
linux-image-2.6-686-
Falls Backports-Kernel gebootet wurde, noch den Nichtbackportskernel von
squeeze entfernen, der ggfs. temporär installiert wurde:
apt-get --purge install linux-image-2.6.32-5-686-
== PostgreSQL migrieren ==
=== Neue leere Cluster entfernen ===
Zunächst muß mindestens der beim Erstinstallieren der neuen PostgreSQL-Version
9.1 erstellte „main“-Cluster entfernt werden (ggfs. auch ein 8.4-Cluster, falls
8.4 beim Beginn dieser Prozedur noch nicht in Benutzung war):
pg_dropcluster --stop 9.1 main
=== Dienste stoppen ===
Alle Dienste, die PostgreSQL benutzen, stoppen – z.B:
/etc/init.d/tomcat5.5 stop
/etc/init.d/postfix stop
/etc/init.d/mailman stop
/etc/init.d/apache2 stop
Auch PostgreSQL selber einmal stoppen und wieder starten, um ⓐ sicherzustellen,
daß es geht, und ⓑ zu verifizieren, welche(r) Cluster noch aktiv ist/sind
(sollte exakt der Info von vor dem Beginn dieser Prozedur entsprechen, z.B. nur
ein 8.4/main. Dies tötet auch alte Verbindungen.
/etc/init.d/postgresql stop
/etc/init.d/postgresql start
Dann den/die alte(n) Cluster upgraden:
pg_upgradecluster 8.4 main
Nun noch Dienste wieder starten, die PostgreSQL benutzen; gucken, ob noch alles
tut, sodaß danach (mit pg_dropcluster oder a-g --purge autoremove) die alte DB
entsorgt werden kann. Zum Beispiel:
/etc/init.d/apache2 start
== Aufräumen ==
Die Systemshell /bin/sh (nicht Loginshell, die kann sich jeder selber
aussuchen) wieder auf mksh setzen:
ln -sf mksh-static /bin/sh
ln -sf mksh.1.gz /usr/share/man/man1/sh.1.gz
Konfigurationsdateien wie ''/etc/nscd.conf'' prüfen.
Pakete reviewen, die nicht im Status install oder hold sind (mit „dpkg --purge“
entfernen, nicht mit APT):
dpkg -l | grep -ve ^ii -e ^hi | less +-S
Mit APT aufräumen:
agus
apt-get --purge dist-upgrade
apt-get --purge autoremove
apt-get --purge clean
Alte Pakete händisch entfernen, hier eine Auswahl:
for maybepkg in gcc-4.{2,3,4,5}-base libdb4.{2,3,4,5,6,7,8} tcl8.4 lzma diff \
python2.{4,5,6}-minimal libssl0.9.8 git-core viewvc debconf-english \
dhcp3-client dhcp3-common libxapian15 libvolume-id0 mktemp gs-common \
libnspr4-0d libnss3-1d ttf-liberation libjpeg62 module-init-tools; do \
apt-get purge $maybepkg; \
done
Wenn OpenJDK drauf ist, kann i.d.R. auch gcj-4.{1,2,3,4,5,6,7}-base und
libgcj-common entfernt werden, ansonsten nur gcj-4.{1,2,3,4,5,6}-base (auf
i386/amd64).
Dann gegebenenfalls noch mit '''dselect''' interaktiv aufräumen.
== Abschließen ==
Nun in den neuen Kernel (3.2) rebooten, alle alten Kernelimages und -header
entfernen, und APT nochmals treten:
agus
apt-get --purge dist-upgrade
apt-get --purge autoremove
apt-get --purge clean
dpkg --audit
== Anwendersoftware aktualisieren ==
Sun J2SDK 1.5 und 1.6 sowie Oracle Java 6 gibt’s nicht mehr; stattdessen ist
jetzt OpenJDK 6 (Paket: openjdk-6-jre-headless oder openjdk-6-jdk) aktuell und
OpenJDK 7 (Paket: openjdk-7-jre-headless oder openjdk-7-jdk) sogar federführend.
Ein Paket tomcat5.5 möchte gerne durch tomcat6 oder tomcat7 (damit läuft das
alte Alfresco aber nicht) ersetzt werden; das Debian-Paket
libpostgresql-jdbc-java bringt in /usr/share/java/postgresql* einen
JDBC-Treiber mit, der auch mit PostgreSQL 9.1 funktioniert.
$person ansprechen, ein Domisol/Alfresco zu fixen.
Und so weiter…