[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Ceci est une ancienne révision du document !


Mise à jour de la Slackware vers une nouvelle version

Mise à niveau ou bien installation depuis zéro

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 à la version stable qui vient de sortir.

Considérations sur le noyau

Se contenter de lancer slackpkg en espérant que tout aille pour le mieux, ça ne marche pas. Il faut tenir compte de plusieurs considérations. À retenir absolument:

Ne faites jamais la mise à jour du noyau que vous utilisez.

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.

Considérations sur les pilotes vidéo

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.

Considérations sur slackpkg

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.

Mise à jour du système avec slackpkg

Les actions suivantes devraient convenir dans tous les cas:

  • Blacklister ces paquets relatifs au noyau, dans “/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.

  • Blacklister des paquets venant de dépôts tiers en ajoutant les lignes qui conviennent pour leurs repo tags (“identifiants de dépôts”). Voici par exemple comment blacklister SlackBuilds.org, AlienBOB et multilib:
    [0-9]+_SBo
    [0-9]+alien
    [0-9]+compat32
  • Si un ou plusieurs noyau(x) ont été ajoutés à l'édition de Slackware vers laquelle vous mettez à niveau, alors utilisez “installpkg” pour installer ces nouveaux paquets du noyau (n'utilisez pas “upgradepkg” parce que cela effacerait votre noyau actif).
    Il vous faudra installer au moins un noyau (kernel-generic, kernel-generic-smp, kernel-huge, ou kernel-huge-smp) et le paquet correspondant des modules du noyau (kernel-modules ou kernel-modules-smp).
    Vous ne pouvez pas employer slackpkg pour cette étape.
  • Maintenant que nous disposons du ou des nouveau(x) noyau(x) avec les modules en place, nous pouvons commencer la mise à niveau des autres paquets. D'abord réactualisons la base de données de paquets de slackpkg:
    # slackpkg update
  • Quand slackpkg a mis à jour sa base de données interne, la première chose à faire est de mettre à niveau 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.

  • Habituellement, une nouvelle édition de Slackware a une nouvelle version des bibliothèques de GNU C. Les nouveaux paquets sont compilés en liaison avec cette nouvelle version de 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 l'ordinateur à jour vers la nouvelle version de Slackware:
    # slackpkg install-new
    # slackpkg upgrade-all
    # slackpkg clean-system
    • La première de ces trois commandes (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é.
      Par exemple si vous n'aviez pas KDE précédemment installé, la commande “slackpkg install-new” n'ajoutera pas les paquets KDE à votre ordinateur tout à coup.
    • La seconde commande (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)
    • La troisième commmande (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.
      La commande vous montrera également les paquets provenant de dépôts tiers (autres que slackware.com)! Utilisez cette commande avec prudence: vous devez désélectionner chaque paquet que vous voulez garder (i.e. tous les paquets issus de dépôts extérieurs), puis cliquez “OK” pour que slackpkg enlève tous les paquets obsolètes.
  • Une mise à niveau de cette importance aura installé plusieurs fichiers “.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.
    Il vous est conseillé de mettre à niveau vers les nouvelles versions des fichiers de configuration quand c'est possible, parce que, souvent elles amélioreront votre configuration logicielle. Slackpkg vous permet de voir les différences entre les anciens et les nouveaux fichiers et même, de fusionner les deux fichiers. Vous pouvez aussi décider de garder le fichier “.new”, en laissant l'ancien fichier en place, pour juger plus tard si les changements ne sont pas trop intrusifs.
    À tout moment vous pouvez déclencher une vérification sur les fichiers “.new” en lançant la commande
      * # slackpkg new-config

    vous pourrez alors utiliser l'interface commode de slackpkg pour fusionner les modifications.

  • Vous devriez alors probablement décider d'installer un noyau générique, particulièrement si vous employez LVM ou RAID, ou si vous avez installé Slackware sur un disque chiffré par LUKS. C'est aussi le conseil donné dans le README qui est sur le DVD/CD Slackware. Par contre - si votre configuration système est simple et votre matériel très récent, vous pouvez vous en tenir au noyau énorme (“huge” kernel).
    N'oubliez pas qu'on ne peut pas utiliser un 'initial ramdisk' avec un noyau 'archi-complet' (“huge”), mais il est impératif de créer un nouvel 'initial ramdisk' quand on va utiliser un noyau générique!
    If you are uncertain at this point how that must be accomplished, then you should make sure that you are booting a “huge” kernel which won't require an initial ramdisk.
    However, the “mkinitrd_command_generator.sh” script can help you here. Run this script with the new kernel version as a parameter and it will show you an example “mkinitrd” command which will work for your particular hardware setup and system configuration:
    # /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 3.2.29

    will give this as output (the kernel version 3.2.29 is that of 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

    You can copy and paste this command line in your console, and let it create an initial ramdisk for you.

If you were already running a generic kernel and therefore already have an initrd, we strongly advise you to create a new initrd with a new unique name! For instance, you can copy the above example and modify the name of the initrd file as follows:
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
  • After you decided what kernel you are going to use and have created an initial ramdisk, you must update your “/etc/lilo.conf” file with a section for the new kernel (don't remove your running kernel!). The “mkinitrd_command_generator.sh” script can help you finding the right block to append to /etc/lilo.conf. For instance, the command:
    # /usr/share/mkinitrd/mkinitrd_command_generator.sh -l /boot/vmlinuz-generic-3.2.29

    will result in the following output which you can copy/paste:

    # 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

    Note that this command adds a “initrd” line to the kernel section. If you let mkinitrd create a unique name for your initial ramdisk, then be sure to apply that name in the above section.
    The “initrd” line is not needed if you are going to run a “huge” kernel.

  • Finally, run the “lilo” command to make the change permanent and add the new kernel to the lilo boot menu.
    Remember, you should always be able to boot back into a previous kernel in case the new Slackware kernel gives you a hard time.
Bottom-line: you can trust slackpkg to perform a system upgrade safely, but it will need your brains and care.

Multilib considerations

If you are upgrading a multilib 64-bit Slackware computer, there are additional considerations to make.

A multilib installation means that you have replaced Slackware's 64-bit gcc and glibc packages with multilib versions (ie.e. supporting both 32-bit and 64-bit binaries). Also, you have installed a set of “converted” 32-bit Slackware packages on your 64-bit multilib Slackware. These modifications are all needed to allow you to run and compile 32-bit software.

When upgrading such a system, you must of course upgrade the standard Slackware packages, but separately you must upgrade the multilib-specific packages with new versions which you can obtain from http://slackware.com/~alien/multilib/

  • First (if you use slackpkg), you must blacklist all these multilib packages so that they will not be accidentally replaced or removed during a system upgrade. If you don't blacklist them, you will face a lot of manual de-selections in “slackpkg clean-system”.
    Starting with the release of compat32-tools for Slackware 14.0 you can simply add two lines to the /etc/slackpkg/blacklist file:
    [0-9]+alien
    [0-9]+compat32

    Then you will manually have to download and upgrade the multilib packages. In the below example I will use Slackware 14.0 as the release to which you will be upgrading.

  • Download the multilib packages suitable for your new Slackware release from a mirror, like this:
    # rsync -av rsync://taper.alienbase.nl/mirrors/people/alien/multilib/14.0/ multilib-14.0/

    This command will create a new subdirectory “multilib-14.0” in your current directory with all packages inside

  • install/upgrade the existing gcc and glibc packages, and compat32-tools:
    # cd multilib-14.0
    # upgradepkg --install-new *.t?z
  • Upgrade the set of converted 32-bit Slackware packages (often referredto as the “compat32” packages):
    # upgradepkg --install-new slackware64-compat32/*-compat32/*.t?z

    Alternatively you can run the “massconvert32.sh” script which will have been installed as part of the compat32-tools package. Pass it a 32-bit Slackware package directory (or a 32-bit Slackware mirror URL) as parameter and that will create a set of converted “compat32” packages which you can then install. You would only have to do this if you suspect that the content of the “slackware64-compat32” directory is not up to date.

Java considerations

Slackware used to install a Java Run-time Engine prior to the 14.0 release (the JRE binaries were originally Sun's and later distributed by Oracle after it bought Sun).
But Oracle changed the re-distribution license so that Slackware (just like all other distributions) was no longer permitted to ship these Java binaries as part of the distribution. When you perform a system upgrade to Slackware 14.0, an old version of the JRE will stay behind on your system. This version “6u25” has several critical vulnerabilities and you should remove it manually from your computer as fast as possible, using the command

removepkg jre

If you need Java then please have a look in the “/extra/source/java” directory of the Slackware 14 release. You will find a script there to create a Slackware package from the most recent Java software from Oracle, which you can then install using the “installpkg” command. See also our Wiki article “Java in Slackware

Sources

1)
La gestion des paquets dans Slackware n'est pas fondée sur la notion de “version inférieure” ni “version supérieure”. Les outils pour gérer les paquets tiennent uniquement compte de “version différente” et de ce fait “rétrograder” des paquets (revenir à une version antérieure) est tout aussi aisé que mettre à niveau vers une version plus récente!
 fr:howtos:slackware_admin:systemupgrade ()
Cette traduction est plus ancienne que la page originale et est peut-être dépassée. Voir ce qui a changé.