[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Summary:Re: Bug#762194: Proposal for upgrades to jessie



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…

Reply to: