Si vous utilisez une Slackware plutôt ancienne et si vous envisagez un saut de plusieurs numéros de version, la meilleure solution pour vous sera d'installer une Slackware récente à partir de zéro. Bien trop de changements intrusifs auront été faits à la distribution si votre Slackware date de quelques années. Cela rendrait la mise à jour à la main difficile et le succès n'en serait pas garanti.
Dans ces cas là, il vaut mieux faire une sauvegarde de la liste de vos paquets (“ls -lart /var/log/packages
”), sauvegarder également votre répertoire “/etc
” ainsi que (mais vous l'avez déjà fait) vos données personnelles. Après avoir formaté votre disque dur et fait l'installation à partir d'un support bootable, dans environ une heure vous pourrez reprendre vos activités.
Si vous voulez passer à la version suivante de Slackware, vous pouvez le faire à la main en suivant les instructions données dans le fichier “UPGRADE.TXT
” que vous trouverez à la racine du DVD/CD1 Slackware . Des instructions avancées et bon nombre de conseils sont disponibles à “CHANGES_AND_HINTS.TXT
” au même endroit. On peut aussi faire ce type de mise à niveau en utilisant slackpkg. Il allègera grandement votre tâche.
Je fais (alienbob) toujours appel à slackpkg (avec soin) pour passer d'une version stable de mes systèmes Slackware à la version suivante. J'appelle cette action une “mise à jour du système”.
Vous pouvez employer le même procédé pour migrer vers slackware-current, maintenir à jour un système slackware-current, ou bien franchir le pas depuis une slackware-pas-si-current vers la version stable qui vient de sortir.
Se contenter de lancer slackpkg en espérant que tout aille pour le mieux, ça ne marche pas. Il faut prendre en compte plusieurs données importantes. À retenir absolument:
Pourquoi donc? C'est simple - vous feriez la mise à jour de centaines de paquets et il vous faudrait être préparé à la situation peu probable de votre ordinateur ne fonctionnant plus après une mise à niveau du système. Ce à quoi vous ne voulez pas être confronté, c'est votre système qui ne booterait plus du tout. Il se peut qu'une nouvelle version de slackware installe un noyau qui refuse de démarrer votre ordinateur (ce risque est faible mais toutefois…soyez prévenu). C'est pourquoi vous devez conserver votre “ancien” noyau actif installé et garder une section pour lui dans votre fichier /etc/lilo.conf
. De cette façon, si le nouveau noyau ne réussit pas à booter, vous pouvez vous rabattre sur l'ancien et commencer à chercher ce qui n'allait pas.
Fondamentalement, vous devez prendre les mêmes précautions quand vous compilez un nouveau noyau vous-même.
Si votre ordinateur est équipé d'une carte vidéo à processeur Nvidia ou Ati et si vous avez installé les pilotes d'accélération graphique de ces sociétés (avec seulement les binaires aux sources privatives), ne tentez pas de démarrer une session X après la mise à niveau vers la version plus récente de Slackware.
Ces pilotes dépendent de la version du noyau, de la version de Mesa et du serveur X-org. Il vous faut réinstaller le binaire du pilote avant de démarrer le mode graphique. De plus, les paquets Slackware de Mesa et Xorg-server écrasent de toute façon des fichiers essentiels de ces pilotes propriétaires qui permettent l'accélération graphique.
Si vous voulez savoir comment gérer ces pilotes binaires, nous donnons des indications plus détaillées dans l'article “Proprietary Graphics Drivers” du présent Wiki.
Si vous mettez à niveau Slackware (voir ci-dessous la démarche), une des premières étapes sera de mettre à jour slackpkg. La commande upgradepkg
installera un fichier /etc/slackpkg/mirrors.new
. C'est le fichier qui contient les URLs des miroirs qui diffusent la nouvelle version de Slackware. Vous comparerez cette liste et sa version plus ancienne afin d'en fusionner les contenus.
Veillez bien à ne décommenter qu' une seule ligne qui pointe vers un miroir pour la bonne édition de Slackware avec la version et l'architecture de votre choix.
Les actions suivantes devraient convenir dans tous les cas:
/etc/slackpkg/blacklist
”: kernel-generic kernel-generic-smp kernel-huge kernel-huge-smp kernel-modules kernel-modules-smp
Pour éviter une mise à niveau accidentelle du noyau que vous utilisez.
[0-9]+_SBo [0-9]+alien [0-9]+compat32
installpkg
” pour installer ces nouveaux paquets du noyau (n'utilisez pas “upgradepkg
” parce que cela effacerait votre noyau actif). slackpkg
pour cette étape.slackpkg
: # slackpkg update
slackpkg
lui-même vers la version la plus récente (y compris les URL's pour la nouvelle version de Slackware et chacune des règles de mise à jour qui s'appliquent à la nouvelle version). Si vous ne réussisez pas à effectuer cette étape, slackpkg
va se mettre à jour lui-même en pleine mise à jour du système, et s'arrêter après ceci… # slackpkg upgrade slackpkg # slackpkg new-config
Cette dernière commande new-config
est là pour que vous puissiez voir la différence entre les anciens et les nouveaux fichiers de configuration de slackpkg
, tout particulièrement /etc/slackpkg/mirrors
et /etc/slackpkg/blacklist
sont des fichiers que vous devez vérifier. Il est généralement recommandé d'écraser /etc/slackpkg/slackpkg.conf
.
glibc
. Pour éviter l'échec de la mise à niveau, il vous faut mettre à jour le paquet glibc-solibs
à la main, tout de suite après la mise à jour de slackpkg
: # slackpkg upgrade glibc-solibs
Permettez moi de donner un exemple d'une telle défaillance potentielle: quand slackpkg install-new
installe le paquet libusb-compat
, votre commande gpg
s'arrête parce qu'elle est liée dynamiquement à libusb.so dans la version ancienne qui va être écrasée par le nouveau paquet libusb-compat
. La nouvelle bibliothèque a besoin du nouveau paquet glibc
, gpg
s'arrête à cause de l'erreur de lien aux bibliothèques et slackpkg
stoppera la mise à jour du système parce qu'il lui faut vérifier la signature gpg de chaque paquet avant de le mettre à niveau. Par la mise à niveau du paquet glibc-solibs
on évite les erreurs de lien aux bibliothèques en donnant les symboles corrects de “GLIBC
”.
Slackpkg
va mettre à jour l'ordinateur vers la nouvelle version de Slackware: # slackpkg install-new # slackpkg upgrade-all # slackpkg clean-system
slackpkg install-new
) installera chaque paquet repéré par la chaîne “Added.
” trouvée dans le fichier Slackware ChangeLog.txt. Cette commande n'installera aucun autre paquet qui ne soit déjà installé. slackpkg install-new
” n'ajoutera pas les paquets KDE à votre ordinateur tout à coup.slackpkg upgrade-all
) va comparer chacun des paquets Slackware officiels qui sont actuellemnt installés dans votre système avec la liste de paquets de votre miroir Slackware. Si une version différente est disponible, cette version sera (téléchargée et) mise à niveau. 1)slackpkg clean-system
) vous présentera une vue d'ensemble de tous les paquets qui sont actuellement installés dans votre système mais qu'on ne retrouve pas dans l'édition de Slackware Linux vers laquelle vous faites une mise à niveau. Ce qui signifie que la liste obtenue vous indiquera tous les paquets qui ont été retirés de la Slackware. Pour Slackware 14 , c'est le cas de kdeaccessibility
, kdebase
, … Un autre exemple de paquet qu'on ne retrouve plus dans Slackware 14 est ntfsprogs
. En fait ce paquet n'a pas été enlevé, mais renommé… pour Slackware cela équivaut à une suppression de paquet suivie d'un ajout. slackpkg
enlève tous les paquets obsolètes. .new
”. Dans certains paquets il y a des fichiers de configuration qui ont été renommés (à l'intérieur du paquet) par une extension “.new
” pour qu'un fichier de configuration existant (contenant vos réglages personnels) ne soit pas écrasé imprudemment pendant la mise à niveau. Slackpkg va rechercher la présence de ces fichiers à extension “.new
” dès la fin d'une mise à niveau ou d'une installation et il vous demande comment vous souhaitez en disposer. .new
”, en laissant l'ancien fichier en place, pour juger plus tard si les changements ne sont pas trop intrusifs..new
” en lançant la commande * # slackpkg new-config
vous pourrez alors utiliser l'interface commode de slackpkg pour fusionner les modifications.
mkinitrd_command_generator.sh
” vous aidera à créer un “initial ramdisk” si nécessaire. Exécutez ce script avec la version du nouveau noyau en paramètre et il vous donnera un exemple de commande “mkinitrd
” qui fonctionnera pour votre configuration système et vos réglages matériels particuliers: # /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 3.2.29
et donnera en sortie les précisions ci-dessous (la version de noyau 3.2.29 correspond à la Slackware 14)
# # mkinitrd_command_generator.sh revision 1.45 # # This script will now make a recommendation about the command to use # in case you require an initrd image to boot a kernel that does not # have support for your storage or root filesystem built in # (such as the Slackware 'generic' kernels'). # A suitable 'mkinitrd' command will be: mkinitrd -c -k 3.2.29 -f ext4 -r /dev/sdb2 -m usb-storage:pcmcia_core:pcmcia:mmc_core:ssb:modprobe:usbhid:ehci-hcd:ohci-hcd:mbcache:jbd2:ext4 -u -o /boot/initrd.gz
Vous pouvez copier et coller cette ligne de commande dans votre console, et lui faire créer un “initial ramdisk” pour vous.
mkinitrd -c -k 3.2.29 -f ext4 -r /dev/sdb2 -m usb-storage:pcmcia_core:pcmcia:mmc_core:ssb:modprobe:usbhid:ehci-hcd:ohci-hcd:mbcache:jbd2:ext4 -u -o /boot/initrd_3.2.29.gz
/etc/lilo.conf
” en indiquant une section pour le nouveau noyau (n'enlevez pas votre noyau actif!). Le script “mkinitrd_command_generator.sh
” peut vous aider à trouver le bon bloc à ajouter à /etc/lilo.conf
. Par exemple, la commande: # /usr/share/mkinitrd/mkinitrd_command_generator.sh -l /boot/vmlinuz-generic-3.2.29
produira en sortie les indications suivantes que vous pouvez copier/coller:
# Linux bootable partition config begins # initrd created with 'mkinitrd -c -k 3.2.29 -f ext4 -r /dev/sdb2 -m usb-storage:pcmcia_core:pcmcia:mmc_core:ssb:modprobe:usbhid:ehci-hcd:ohci-hcd:mbcache:jbd2:ext4 -u -o /boot/initrd.gz' image = /boot/vmlinuz-generic-3.2.29 initrd = /boot/initrd.gz root = /dev/sdb2 label = 3.2.29 read-only # Linux bootable partition config ends
Notez que cette commande ajoute une ligne “initrd” à la section du noyau. Si mkinitrd
attribue un nom unique à votre ramdisk, écrivez bien ce nom là dans la section de /etc/lilo.conf qui convient.
Vous n'avez pas besoin de la ligne “initrd” dans le cas où vous utilisez un noyau “huge” ('énorme' car il inclut déjà un maximum de modules).
lilo
” pour que le changement soit permanent et que le nouveau noyau soit ajouté au menu de démarrage de lilo. Si vous mettez à niveau un ordinateur tournant sous Slackware 64-bit multilib, alors il y a plusieurs autres points à considérer.
Une installation multilib, cela signifie que vous avez remplacé les paquets gcc
et glibc
de la Slackware 64-bit par leurs versions multilib (ie.e. qui peuvent traiter aussi bien les binaires 32-bit que les 64-bit). Et par ailleurs, vous avez installé un ensemble de paquets Slackware 32-bit “convertis” pour votre Slackware 64-bit multilib. Ces modifications sont toutes nécessaires pour pouvoir utiliser et compiler des logiciels 32-bit.
En mettant à jour un tel système, vous devez bien sûr mettre à jour les paquets standard de Slackware, mais il vous faut mettre à jour séparément les paquets spécifiques multilib grâce aux nouvelles versions qui sont disponibles à http://slackware.com/~alien/multilib/
compat32-tools
pour Slackware 14.0 vous pouvez simplement ajouter deux lignes au fichier /etc/slackpkg/blacklist
: [0-9]+alien [0-9]+compat32
Ensuite il vous faudra télécharger et mettre à niveau à la main les paquets multilib. Dans l'exemple suivant je prends la Slackware 14.0 comme version vers laquelle vous allez mettre à niveau.
# rsync -av rsync://taper.alienbase.nl/mirrors/people/alien/multilib/14.0/ multilib-14.0/
Cette commande va créer un nouveau sous-répertoire “multilib-14.0
” dans votre répertoire courant, avec tous les paquets à l'intérieur.
gcc
et glibc
existants, ainsi que les outils compat32 (compat32-tools
): # cd multilib-14.0 # upgradepkg --install-new *.t?z
# upgradepkg --install-new slackware64-compat32/*-compat32/*.t?z
Sinon vous pouvez lancer le script “massconvert32.sh
” qui a été installé en tant qu'élément du paquet compat32-tools
. En lui passant un répertoire de paquets Slackware 32-bit (ou l'URL d'un miroir Slackware 32-bit) en paramètre, il créera un ensemble de paquets convertis “compat32
” que vous pourrez alors installer. Vous n'aurez à procéder ainsi que si vous pensez que le contenu du répertoire “slackware64-compat32
” n'est pas à jour.
Slackware installait habituellement un binaire Java Run-time Engine dans les distributions avant la Slackware 14.0 (les binaires de JRE provenaient dans les premiers temps de Sun et plus tard de chez Oracle qui avait acheté la société Sun).
Mais Oracle modifia la licence de redistribution de telle sorte que Slackware (exactement comme toutes les autres distributions) n'était plus autorisée à fournir ces binaires Java dans la distribution. Quand vous procédez à une mise à niveau du système vers Slackware 14.0, une ancienne version du JRE reste dans votre arborescence. Cette version “6u25” présente plusieurs failles de sécurité critiques, il vous faut donc l'enlever manuellement de votre ordinateur aussi vite que possible par l'appel de la commande:
removepkg jre
Si vous avez besoin de Java, jetez donc un coup d’œil dans le répertoire “/extra/source/java
” de la version Slackware 14 de notre distribution. Vous y trouverez un script qui permet de créer un paquet Slackware à partir du logiciel le plus récent de Java fourni par l'éditeur Oracle, que vous installerez ensuite en utilisant la commande “installpkg
”. Voyez aussi notre article de Wiki “Java in Slackware”