Différences entre les pages « Mise à niveau Debian Lenny vers Squeeze » et « Lxc »

De Cliss XXI
(Différence entre les pages)
Sauter à la navigation Sauter à la recherche
imported>VincentAdolphe
 
 
Ligne 1 : Ligne 1 :
__NOTOC__
+
== Construire un serveur LXC ==
  
Cette page regroupe quelques extraits qui nous ont paru les plus importants des [http://www.debian.org/releases/squeeze/i386/release-notes/index.fr.html notes de publication de Debian Squeeze], et en particulier des [http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.fr.html notes de mise à niveau depuis Debian Lenny], complétées de quelques remarques personnelles.
+
LXC offre les possibilités d'un chroot avec quelques points en plus:
 +
* séparation des process (une sorte de chroot des process)
 +
* virtualisation du réseau (il est possible de simuler un circuit réseau avec
 +
les bridges (brctl) le routage/NAT (iptables)
  
Si vous mettez à jour un système Debian, il est conseillé de lire vous-même [http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.fr.html notes de mise à niveau], car certaines informations utiles pour votre cas pourraient ne pas figurer ici.
+
LXC souffre encore de quelques problèmes de jeunesse:
 
+
* lxc-stop est un vilain kill -9 -1 exécuté dans le container. Il faudrait que lxc-stop fasse un shutdown propre (init 0)
 
+
* le système de fichier /sys montre des éléments faisant partie de l'hôte et n'est pas encore suffisamment étanche.
__TOC__
 
 
 
= Choses à connaître avant la mise à niveau =
 
 
 
Avant de procéder à la mise à jour de votre système, il est bon d'être au courant de différents points de nouveautés ou de points nécessitant une attention particulière. J'ai regroupé ici les points qui me semblaient les plus importants.
 
 
 
== Installation automatique des paquets recommandés ==
 
 
 
Lors de l'installation d'un paquet sous Squeeze, APT installe maintenant automatiquement les paquets recommandés par ce paquet. Les paquets recommandés permettent à un logiciel de proposer certaines fonctionnalités facultatives, sans toutefois obliger l'utilisateur à installer ces paquets s'il sait qu'il n'en aura pas besoin (contrairement à la liste des paquets dont ''depend'' un paquet). Il s'agit de la liste de paquets apparaissant dans la ligne commençant par « Recommends: » dans les informations de contrôle des paquets.
 
 
 
Si vous souhaitez n'installer que le minimum de paquets dans votre système, et que vous êtes capables de déterminer les commandes et paquets qui empêchent l'utilisation de certaines fonctionnalités de vos logiciels, vous pouvez désactiver cette installation des paquets recommandés en ajoutant une ligne à la configuration d'APT.
 
 
 
Vous pouvez par exemple l'ajouter dans un fichier du répertoire ''/etc/apt/apt.conf.d'' (j'ai l'habitude de créer le fichier ''/etc/apt/apt.conf.d/99local'' où je regroupe ma configuration locale d'APT. Le « 99 » indique que le fichier sera évalué après les autres fichiers du répertoire, permettant de redéfinir des configurations données dans les fichiers placés là par d'autres paquets du système).
 
APT::Install-Recommends "false";
 
 
 
== Amorçage par dépendances ==
 
 
 
Squeeze introduit une fonctionnalité intéressante d'amorçage (c'est à dire du démarrage du système et de ses services) par dépendances qui permet un démarrage plus rapide de la machine, voir [[script_rc_debian]].
 
 
 
« ''Cette fonctionnalité est activé par sysv-rc en utilisant insserv pour ordonner les scripts init.d en fonction de leurs dépendances déclarées [...] [Elle] est activée par défaut sur les nouvelles installations et, si possible, lors des mises à niveau. Pour la désactiver, indiquez''
 
CONCURRENCY=none
 
''dans /etc/default/rcS.
 
Pour de plus amples renseignements à propos de cette fonctionnalité, veuillez consulter les renseignements disponibles dans /usr/share/doc/insserv/README.Debian.'' »
 
 
 
== Configurations de clavier unifiées ==
 
 
 
Auparavant, il était nécessaire d'indiquer une configuration du clavier pour la console, et de refaire l'opération pour l'environnement graphique sous X, alors qu'il s'agit du même clavier. Ce n'est plus le cas sous Squeeze, où la configuration de ces deux systèmes ont été unifiées.
 
 
 
« ''les configurations de clavier ont été unifiées pour qu'à la fois la console et le serveur Xorg utilisent les mêmes réglages. Les configurations de clavier sont maintenant définies dans le fichier de configuration /etc/default/keyboard
 
qui écrase les configurations définies dans le fichier de configuration de Xorg.'' »
 
 
 
« ''Vous pouvez reconfigurer la disposition du clavier et les réglages associés en exécutant dpkg-reconfigure keyboard-configuration ou en modifiant vous-même le fichier de configuration /etc/default/keyboard.'' »
 
 
 
== La section proposed-updates ==
 
 
 
La section des dépôts de paquets Debian « proposed-updates » n'est « pas précisément une nouvelle fonctionnalité de Debian, mais elle est relativement passée inaperçue jusqu'ici. »
 
 
 
« ''Toutes les modifications de la distribution stable publiée, ainsi que celles destinées à l'ancienne version stable passent par une période étendue de tests avant d'être acceptées dans l'archive. Chacune des mises à jour de la version
 
stable (ou l'ancienne version stable) est appelée une mise à jour mineure (« point release »). La préparation de ces mises à jour mineures se fait par le mécanisme proposed-updates.'' »
 
 
 
« ''Si vous souhaitez participer aux tests de ces paquets avant qu'ils ne soient officiellement ajoutés à une mise à jour mineure, vous pouvez le faire en ajoutant la section proposed-updates au fichier sources.list :'' »
 
deb    <nowiki>http://mirrors.kernel.org/debian</nowiki> squeeze-proposed-updates main contrib
 
deb-src <nowiki>http://mirrors.kernel.org/debian</nowiki> squeeze-proposed-updates main contrib
 
 
 
Notez que, dans le fichier des dépôts Debian, les lignes commençant par « deb-src » ne sont utiles que si vous souhaitez télécharger les sources de certains paquets pour les examiner ou les recompiler. Si vous ne pensez pas avoir besoin des sources, vous pouvez omettre ou commenter ces lignes, cela accélèrera légèrement la mise à jour de la liste des paquets.
 
 
 
== La section stable-updates ==
 
 
 
Sous les versions précédentes de Debian, la mise à jour de certaines données qui nécessitaient une mise à jour régulière, comme les anti-virus ou les fuseaux horaires, était fournie par un dépôt dédié fourni par « volatile.debian.org ». Sous squeeze, ce dépôt disparait, et est remplacé par une extension du dépôt normal nommée « stables-updates » (ou « squeeze-updates » pour Squeeze).
 
 
 
« ''Cette voie sera utilisée pour les mises à jour que de nombreux utilisateurs voudront installer sur leurs systèmes avant la mise à jour mineure suivante, comme les mises à jour d'analyseurs de virus et données de fuseau horaire. Tous les paquets de squeeze-updates seront intégrés dans les mises à jour mineures.''
 
 
 
''Pour utiliser les paquets de squeeze-updates, vous pouvez ajouter une entrée au fichier sources.list :'' »
 
deb    <nowiki>http://mirrors.kernel.org/debian squeeze-updates</nowiki> main contrib
 
deb-src <nowiki>http://mirrors.kernel.org/debian squeeze-updates</nowiki> main contrib
 
 
 
« ''Quand un nouveau paquet devient disponible par squeeze-updates, ce sera annoncé sur la liste de diffusion debian-stable-announce.'' »
 
 
 
== La désactivation d'Ipv6 ne peut plus être effectuée de la même façon ==
 
 
 
IPv6 étant maintenant compilée dans le kernel plutôt qu'en module, l'ajout de directives dans ''/etc/modprobe.d'' pour désactiver le support IPv6 ne fonctionne plus.
 
Il faut maintenant passer par sysctl, et s'assurer de quelques points pour éviter des problèmes avec exim et ssh.
 
Tout ceci est détaillée sur le [http://wiki.debian.org/DebianIPv6#HowtoturnoffIPv6 wiki Debian].
 
 
 
En résumé, voici les points à suivre si vous voulez désactiver le support IPv6 (si vous ne savez pas si vous devez le faire, alors ne le faites pas, ça vous évitera des soucis potentiels avec certains logiciels).
 
* désactivez le module du noyau :
 
# echo net.ipv6.conf.all.disable_ipv6=1 > /etc/sysctl.d/disableipv6.conf
 
* commentez les adresses IPv6 figurant dans le fichier ''/etc/hosts''
 
* modifiez la configuration d'exim, qui ne fonctionnera sinon pas correctement sans le support IPv6 du noyau:
 
** ajoutez ''disable_ipv6 = true'' dans votre fichier de configuration d'exim
 
** lancez la commande ''update-exim4.conf''
 
** redémarrez exim (si vous ne redémarrez tout le système juste après)
 
* modifiez la configuration de SSH pour lui indiquer de ne plus rechercher les interfaces IPv6:
 
** ajoutez ''AddressFamily inet'' dans votre fichier ''/etc/ssh/sshd_config''
 
** redémarrez sshd (si vous ne redémarrez tout le système juste après)
 
* redémarrez votre système
 
 
 
== Réduire le temps d'indisponibilité des services ==
 
 
 
Si le système que vous mettez à jour est utilisé par d'autres utilisateurs, vous pourriez vouloir réduire autant que possible la durée d'indisponibilité de la machine. Voici ce que conseillent les notes de mise à niveau:
 
 
 
« ''Vous pouvez réduire le temps d'arrêt en faisant une mise à niveau minimale du système (consultez Section 4.4.4, « Mise à niveau minimale du système »), puis une mise à niveau du noyau et un redémarrage (consultez Section 4.4.5, « Mettre
 
à niveau le noyau et udev »), et ensuite une mise à niveau des paquets fournissant vos services critiques. Mettez-les à niveau avant de lancer la mise à niveau totale (Section 4.4.6, « Mettre à niveau le système ») pour vous assurer que ces services critiques sont lancés et sont disponibles pendant la mise à niveau, et réduisez ainsi leur temps d'arrêt.'' »
 
 
 
== Attention aux mises à jour à distance ==
 
 
 
Une mise à jour d'un système sans être connecté à sa console peut parfois poser des problèmes. Voici les recommandations des notes de mise à jour:
 
 
 
« ''Si vous effectuez une mise à niveau à distance par un lien ssh, il est fortement recommandé de prendre toutes les précautions nécessaires pour pouvoir accéder au serveur par un terminal série distant. Il est possible qu'après la mise à niveau du noyau et le redémarrage, les noms de quelques périphériques soient changés (comme décrit en Section 4.6.2, « Réordonnancement de l'énumération des périphériques ») et vous devrez corriger la configuration du système depuis une console locale. Par ailleurs, si le système est redémarré accidentellement au milieu de la mise à niveau, il est possible que vous deviez utiliser une console locale pour réparer le système.'' »
 
 
 
L'accès via VPN (avec des outils tels que tinc) risquent plus fortement encore de rentre impossible votre accès à distance lors de la mise à jour.
 
 
 
== Sources non officielles et rétroportages ==
 
 
 
Attention, les paquets non officiels et issus des rétroportages (''backports'') sont susceptibles d'être supprimés lors de la mise à jour. Si les dépôts utilisés proposent également une version des paquets pour Squeeze, vous devriez l'utiliser (ce sera normalement fait automatiquement). Les paquets rétroportés non officiels de versions plus récentes que celles qui sont dans Debian sont celles qui risquent le plus de poser problème.
 
 
 
Si vous utilisiez le dépôt de rétroportages pour Lenny (''lenny-backports''), il vous suffit normalement de le supprimer de la liste des dépôts, et les paquets issus de ce dépôts seront remplacés par des paquets issus de Squeeze.
 
 
 
Si vous utilisiez le nouveau dépôt de rétroportage étendu (« lenny-backports-sloppy ») proposant des paquets plus récents que ceux proposés dans Squeeze, ces paquets risquent d'être supprimés. Vous pourrez peut-être les réinstaller à partir du dépôt ''squeeze-backports'' (rétroportage prévu pour Squeeze) s'ils existent également dans ce dépôt.
 
 
 
= Procédure de mise à niveau =
 
 
 
== Choses à effectuer avant la mise à niveau ==
 
 
 
=== Sauvegardes ===
 
 
 
Comme avant toute modification conséquente d'un système, il est conseillé d'effectuer des sauvegardes. Vos données personnelles (dans ''/home'') ne risquent a priori rien du tout, mais en cas de problème au milieu de la mise à niveau (arrêt soudain de la machine au milieu de la manipulation de la base de données de paquets installés, par exemple), il pourrait être nécessaire de réinstaller certains fichiers du systèmes pour sauver votre installation.
 
 
 
« ''Ce que vous devriez principalement sauvegarder est le contenu des répertoires /etc et /var/lib/dpkg, du fichier /var/lib/apt/extended_states et la sortie de dpkg --get-selections "*" (les guillemets sont importants). Si vous utilisez
 
aptitude pour gérer les paquets du système, vous devriez aussi sauvegarder /var/lib/aptitude/pkgstates.'' »
 
 
 
Vous pourriez vouloir également sauvegarder vos configurations personnelles de certaines applications comme Gnome, KDE, ou les applications Mozilla (conservées dans votre répertoire personnel, dans les sous-répertoires cachés comme .gnome,
 
.kde, .mozilla) car ces applications ont tendance à écraser certains paramètres utilisateurs existants lorsqu'une nouvelle version est lancée pour la première fois, rendant complexe un retour éventuel à une version précédente.
 
 
 
=== S'assurer qu'aptitude n'a aucune action en cours ===
 
 
 
Avant de changer les dépôts pour les faire pointer sur ceux de squeeze, vérifiez qu'aptitude n'a aucune action en cours. Démarrez aptitude en mode interactif (par la commande « aptitude » seule), et appuyez sur « g » (pour Go). Si une action est en cours, vous pouvez soit l'annuler, soit l'effectuer. Si aucune n'est prévue, aptitude vous en avertira.
 
 
 
=== Désactiver l'étiquettage apt ===
 
 
 
Si vous avez utilisé l'étiquettage APT pour installer des paquets d'une autre version de la distribution (par exemple testing), supprime-le dans ''/etc/apt/preferences''.
 
En particulier, le dépôts des backports pour lenny nécessitait des instructions dans ce fichier ''/etc/apt/preferences'' pour permettre la mise à jour automatique lors de l'apparition d'une nouvelle version dans les backports. Ce n'est plus le cas dans les backports pour Squeeze, qui seront mis à niveau automatiquement. Vous pouvez donc supprimez les instructions relatives aux backports dans ''/etc/apt/preferences''.
 
 
 
=== Vérifier l'état des paquets ===
 
 
 
Il est recommandé de vérifier l'état des paquets, qui doivent tous être installés correctement avant la mise à jour (aucun ne doit être dans un état semi-installé ou semi-configuré).
 
 
 
==== Paquets dans état inconsistant ====
 
 
 
La commande suivante indiquera les paquets dans l'état « Half-Installed » ou « Failed-Config », ainsi que ceux qui sont dans un état d'erreur:
 
dpkg --audit
 
 
 
« Vous pouvez aussi vérifier l'état de tous les paquets du système en utilisant dselect, aptitude, ou avec des commandes comme :
 
dpkg -l | pager
 
# ou
 
dpkg --get-selections "*" > ~/paquets-actuels.txt
 
 
 
==== Paquets bloqués ====
 
 
 
Il est souhaitable d'enlever tous les blocages de paquets (paquets dans l'état ''hold'') avant de passer à la nouvelle version. Si un paquet essentiel pour la mise à niveau est bloqué, la mise à niveau va échouer. »
 
 
 
Vérifier les paquets bloqués, et les débloquer si nécessaire:
 
* par aptitude:
 
# vérifier:
 
aptitude search "~ahold" | grep "^.h"
 
# en débloquer:
 
aptitude unhold <package_name> <package_name> ...
 
* par apt-get:
 
# vérifier:
 
dpkg --get-selections | grep hold
 
# en débloquer:
 
echo package_name install | dpkg --set-selections
 
 
 
« ''Si vous aviez modifié et recompilé un paquet localement, sans changer son nom et sans mettre d'époque (« epoch ») dans la version, vous devez le bloquer pour éviter qu'il ne soit mis à niveau.
 
Vous pouvez activer un blocage sur un paquet pour apt-get en utilisant :''
 
echo package_name hold | dpkg --set-selections
 
''Remplacez hold par install pour débloquer un paquet.'' »
 
 
 
==== Paquets installés automatiquement ====
 
 
 
Si la mise à jour supprime des paquets transitoires de la version précédente du système et que leurs dépendances sont marqués comme installés automatiquement, il est possible que la mise à jour pourrait supprime ces paquets installés automatiquement. Il est donc conseillé de jeter un œil sur la liste des paquets marqués comme isntallé automatiquement, et démarquer les paquets qui vous semblent importants en dehors de toute dépendance:
 
* afficher les paquets marqués comme « installés automatiquement par dépendance »:
 
aptitude search 'i~M'
 
* les "démarquer":
 
aptitude unmarkauto <paquet>
 
 
 
=== Supprimer la section proposed-updates ===
 
 
 
« ''Si vous avez ajouté la section proposed-updates dans le fichier /etc/apt/sources.list, il est conseillé de la supprimer avant de tenter la mise à niveau. Il s'agit essentiellement d'une précaution pour éviter des conflits possibles.'' »
 
 
 
Cette section ''proposed-updates'' peut bien sûr être remise en place après la mise à niveau si vous souhaitez disposer des mises à niveau de Debian stable plus rapidement.
 
 
 
== Mise à niveau proprement dite ==
 
 
 
=== Préparer les sources d'APT ===
 
 
 
Modifiez les dépôts Debian désignés dans le fichier ''/etc/apt/sources.list''.
 
Vous devriez simplement à remplacer « lenny » par « squeeze », et supprimez les dépôts de rétroportage. Vous devriez obtenir quelque chose comme ceci:
 
deb <nowiki>http://ftp2.de.debian.org/debian/</nowiki> squeeze main
 
deb <nowiki>http://ftp2.de.debian.org/debian/</nowiki> squeeze-updates main
 
deb <nowiki>http://security.debian.org/</nowiki> squeeze/updates main
 
 
 
La première ligne désigne le dépôt principal, la seconde permet les mises à jour régulières de données volatiles (comme les anti-virus, les fuseaux horaires, etc.; si vous ne pensez pas en avoir besoin, vous n'avez pas besoin de l'ajouter), et la troisième permet les mise à jour de sécurité.
 
 
 
Notez que les lignes de vos dépôts peuvent peut-être être complétée par « contrib non-free » si vous utilisez des paquets non libres.
 
 
 
=== Enregistrer la session ===
 
 
 
Lors d'une mise à jour en ligne de commande, il est recommandé d'enregistrer la session de mise à jour pour pouvoir examiner ce qu'il s'est passé en cas de problème.
 
Vous pouvez par exemple utiliser la commande suivante avant la mise à jour:
 
script -t 2>~/upgrade-squeeze.time -a ~/upgrade-squeeze.script
 
Tapez « exit » une fois la mise à jour terminée.
 
Vous pourrez examiner la session dans le ficheir « upgrade-squeeze.script » de votre répertoire personnel (ou plutôt de celui de root, dans /root).
 
 
 
=== Se protéger d'une éventuelle déconnexion ===
 
 
 
Si vous mettez à jour un système distant, par exemple via ''ssh'', une coupure réseau pourrait interrompre brutalement la mise à niveau, et laisser votre système dans un état inconsistent. Pour éviter ce genre de chose, il est fortement recommandé d'utiliser un outil permettant d'éviter l'interruption de votre session sur la machine en cas de coupure réseau. L'outil idéal pour ça est ''screen''.
 
 
 
Installez le paquet ''screen'' et lancez la commande du même nom avant de commencer la mise à niveau. Si vous ne connaissez cet outil, la seule chose dont vous pourriez avoir besoin de connaître sont les options ''-r -D'' qui vous permet de vous reconnecter à une session déjà existante. En cas de déconnexion, il vous suffira simplement de vous reconnecter à la machine et de lancer ''screen -r -D'' pour accéder à la session qui a été coupée, que vous retrouverez intacte.
 
 
 
==== Utilisation de screen ====
 
 
 
Quitte à utiliser screen, voici les quelques combinaisons de touches de base qui vous permettront d'utiliser quelques-unes des fonctionnalités fournies par cet excellent outil (consultez le manuel de screen(1) pour plus de détails) :
 
* Ctrl-a d : détache la session actuelle. C'est à peu près le même effet qu'une coupure réseau. Vous pourrez vous reconnecter à cette session en lançant ''screen -r'';
 
* Ctrl-a c : crée une nouvelle fenêtre gérée par screen (terminez simplement le shell pour fermer la fenêtre; la fermeture de la dernière fenêtre termine screen);
 
* Ctrl-a " : affiche la liste des fenêtres ouvertes dans screen. Utilisez les flèches et la touche ''Entrée'' pour en changer.
 
 
 
=== Mettre à jour la liste des paquets ===
 
 
 
À ce stade, vous pouvez mettre à jour la liste des paquets. Ceci n'installe ou ne supprime bien sûr encore aucun paquet:
 
apt-get update
 
 
 
=== Vérifier l'espace disque disponible ===
 
 
 
Les paquets nécessaires à l'installation seront stockés dans /var/cache/apt/archives (et dans le sous-répertoire partial/ pendant le téléchargement).
 
La commande suivante pourra vous donner des indications sur l'espace nécessaire à la mise à jour:
 
apt-get -o APT::Get::Trivial-Only=true dist-upgrade
 
La commande affichera une liste des paquets à installer, mettre à jour, ou installer (qui n'est pas une liste définitive, notre but ici est uniquement d'avoir une idée de l'espace disque qui sera nécessaire à la mise à niveau), avec, à la fin, l'espace disque nécessaire. Par exemple:
 
...
 
XXX mis à jour, XX nouvellement installés, XX à enlever et X non mis à jour.
 
Il est nécessaire de prendre XXXMo/XXXMo dans les archives.
 
Après cette opération, XXXMo d'espace disque supplémentaires seront utilisés.
 
E: L'option --trivial-only a été indiquée mais il ne s'agit pas d'une opération triviale.
 
Si celle-ci affiche des erreurs, vous devrez peut-être effectuer une mise à jour minimale du système avant de pouvoir la lancer. Référez-vous au [http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.fr.html#sufficient-space notes de mise à jour] pour connaître les différentes méthodes pour gagner de la place avant la mise à jour .
 
 
 
=== Mise à jour les paquets ===
 
 
 
Bien que ''aptitude'' ait été l'outil recommandé lors de la mise à niveau de la version précédente de Debian, et soit toujours conseillé pour la gestion interactive des paquets, c'est cette fois ''apt-get'' qui est donnerait de meilleurs résultats:
 
« ''Le programme conseillé pour la gestion interactive des paquets en console est aptitude. Pour gérer les paquets avec une interface non interactive en ligne de commande, l'utilisation d'apt-get est conseillée. apt-get est également l'outil
 
conseillé pour mettre à niveau vers une nouvelle publication majeure.'' »
 
 
 
La commande aujourd'hui recommandée pour mettre à jour depuis Lenny est apt-get. On pourrait donc utiliser la commande ''apt-get dist-upgrade'' pour effectuer en une opération la mise à niveau de l'ensemble des paquets du système.
 
 
 
Cependant, les notes de mise à jour précisent que l'utilisation immédiate de cette commande pourrait amener à la suppression de certains paquets encore utiles. Il est donc recommandé d'effectuer la mise à jour en plusieurs étapes.
 
 
 
==== Mise à jour minimale du système ====
 
 
 
On commencera par une mise à jour minimale du système:
 
apt-get upgrade
 
« Cette commande met à niveau les paquets qui peuvent l'être sans entraîner l'installation ou la suppression d'autres paquets. »
 
 
 
==== Mise à jour du noyau ====
 
 
 
Il est ensuite fortement recommandé d'installer un nouveau noyau et le paquet ''udev'', pour s'assurer de leur compatibilité mutuelle. Il faudra ensuite redémarrer le système.
 
 
 
Voici les explications détaillées données dans [http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.fr.html#upgrading-udev les notes de mise à niveau de l'incompatilité entre la nouvelle version de udev et du noyau fourni sous Lenny]:
 
« ''La version du paquet udev de Squeeze nécessite un noyau 2.6.26 ou plus récent avec l'option CONFIG_SYSFS_DEPRECATED désactivée et les options CONFIG_INOTIFY_USER et CONFIG_SIGNALFD activées. Sachant que l'option CONFIG_SYSFS_DEPRECATED est activée dans le noyau Debian standard de Lenny (version 2.6.26), et que la version d'udev fournie par Lenny n'offre pas toutes les fonctionnalités attendues par les derniers noyaux, il faut faire très attention lors de la mise à niveau pour garder le système amorçable.'' »
 
 
 
Concrètement, le démarrage du système avec le paquet ''udev'' de Squeeze pourrait poser des problèmes lors du renommage de périphériques réseau, ou de l'assignation de groupes ou de permissions additionnels à certains périphériques de bloc, et pourrait causer des dysfonctionnements difficiles à repérer.
 
 
 
Pour effectuer cette mise à niveau du noyau, exécutez :
 
apt-get install linux-image-2.6-variante
 
(voir  [http://debian.org/releases/squeeze/i386/release-notes/ch-upgrading.fr.html#kernel-metapackage les notes de mise à niveau] pour déterminer la variante)
 
 
 
« Juste après la mise à niveau du noyau, vous devriez aussi installer le nouveau udev, afin de minimiser le risque d'incompatibilité entre le vieux udev et le nouveau noyau [8]. Vous pouvez le faire en lançant : »
 
apt-get install udev
 
 
 
==== Redémarrage du système ====
 
 
 
Une fois le noyau et udev mis à niveau, '''le système doit être redémarré''' pour pouvoir utiliser le nouveau noyau et la nouvelle version de udev. Redémarrez donc votre machine de la manière habituelle, ou tapez la commande ''reboot''.
 
 
 
==== Mise à jour du reste du système ====
 
 
 
Si vous souhaitez minimiler le temps d'indisponibilité de certains services fonctionnant sur le système que vous mettez à jour, vous pouvez en forcer la mise à jour maintenant. Par exemple, si vous souhaitez que votre serveur LDAP soit indisponible un minimum de temps, lancez la commande suivante qui en forcera la mise à jour immédiate (ainsi que celle des paquets dont il dépend):
 
apt-get install slapd
 
 
 
Une fois vos éventuels services critiques mis à jour, vous pouvez maintenant continuer avec la mise à niveau principale. Exécutez :
 
apt-get dist-upgrade
 
 
 
Notez qu'il peut y avoir des cas où certains paquets ne seront pas mis à jour, comme le précise [http://www.debian.org/releases/squeeze/i386/release-notes/ch-upgrading.fr.html#upgrading-full les notes de mise à niveau]:
 
''« Les paquets déjà installés ayant une nouvelle version, mais qui ne peuvent être installés sans modifier l'état d'un autre paquet, seront laissés dans leur version actuelle (et affichés comme retenu — « held back »). Cela peut être résolu soit en utilisant aptitude et en choisissant d'installer ces paquets, soit en essayant apt-get -f install paquet. »''
 
Note: je ne suis pas sûr de bien comprendre cette note. Elle semble expliquer qu'un paquet nécessitant l'installation ou la mise à jour d'un autre paquet ne sera pas installé et laissé dans l'état « held back ». Je pensais pourtant que l'installation ou la mise à jour des paquets dépendants était justement rendue possible par l'utilisation de la sous-commandes « dist-upgrade » d' ''apt-get'' au lieu de « upgrade ». Quoiqu'il en soit, je n'ai pas encore rencontré de paquet retenu en « held back », ça ne doit donc pas arriver très souvent, il ne semble pas y avoir de quoi s'alarmer :) (mais si vous avez une explication, n'hésitez pas à contacter Cliss XXI, je suis preneur).
 
 
 
=== Après la mise à niveau ===
 
 
 
==== Terminer la mise à niveau de Grub ====
 
 
 
Une fois la commande ''apt-get dist-upgrade'' terminée, votre système est à niveau. Il vous reste cependant à terminer la mise à niveau de GRUB si vous êtes passé en version 2: si, lors de l'installation de GRUB 2, vous avez opté pour le chaînage avec la version existante de GRUB, et que vous n'avez pas eu de problème lors du redémarrage, vous pouvez terminer la migration complète vers GRUB2 en lançant la commande:
 
upgrade-from-grub-legacy
 
 
 
==== De beaux fond d'écrans ====
 
 
 
Le paquet ''desktop-base'' fournit les fonds d'écran officiels choisis pour Squeeze, dans le répertoire ''/usr/share/images/desktop-base''. Ce paquet est installé automatiquement si vous utilisez une configuration de machine de bureau (avec Gnome ou KDE), sinon vous devrez l'installer manuellement à l'aide de la commande:
 
aptitude install desktop-base
 
Grub trouvera automatiquement l'image à utiliser (il s'agit de ''/usr/share/images/desktop-base/spacefun-grub.png'') pour son fond d'écran lors de la mise à jour de sa configuration via la commande ''update-grub'' (qui est lancée à l'installation du paquet).
 
 
 
==== Mise à niveau du serveur MySQL ====
 
 
 
Si le paquet ''mysql-server-5.0'' était installé sur la machine, ce paquet aura été déinstallé sans que la version 5.1 ait été installée. Vous devrez donc en demander explicitement l'installation:
 
aptitude install mysql-server-5.1
 
Cette opération supprimera le paquet ''mysql-client-5.0'' et installera ''mysql-client-5.1''. Les bases de données existantes ne sont pas impactées par cette mise à jour, vous les retrouverez telles qu'elles étaient, et les bases de données interne de MySQL (utilisée pour d'authentification, etc.) seront mises à jour automatiquement.
 
 
 
==== Évolution de la configuration d'apticron ====
 
 
 
Si vous utilisez le paquet ''apticron'' qui vous permet facilement de recevoir chaque jour par mail la liste des paquets qui doivent être mis à jour sur votre système, vous devrez supprimer le fichier cron de la version précédente, qui fait maintenant doublon avec le nouveau fichier cron. Vous recevriez alors deux mails au lieu d'un.
 
Il suffit de supprimer le fichier ''/etc/cron.d/apticron'' si vous ne l'avez pas modifié (la mise à jour ne l'a pas supprimé à cause de cette éventualité). C'est maintenant ''/etc/cron.daily/apticron'' qui lancera ''apticron'' chaque matin.
 
rm /etc/cron.d/apticron
 
 
 
Une fois ceci terminé, votre système est à niveau. Mais si vous souhaitez conserver un système Debian sain et optimal, lisez les informations ci-dessous sur les composants obsolètes et les changements importants de Squeeze.
 
 
 
== Composants obsolètes ==
 
 
 
Un nombre important de fonctions seront rendues obsolètes dans les versions de Debian après Squeeze (la version 7.0 s'appellera '''Wheezy''). Si vous ne savez pas ce que ces informations signifient, c'est que vous n'êtes certainement pas concernés. Dans le cas contraire, vous devriez prendre des mesures ou prévoir des mesures pour la prochaine version de Debian.
 
 
 
Notes importantes:
 
* Debian 6.0 est la dernière version à supporter les solutions de virtualisation OpenVZ et Linux-Vserver. Les utilisateurs sont invités à migrer vers des solutions comme KVM, Linux Container ou Xen;
 
* gdm3 remplacera gdm dont il est une réécriture complète. Voir [http://debian.org/releases/squeeze/i386/release-notes/ch-information.fr.html#gnome-desktop-changes les notes de mises à niveau] pour des informations complètes sur les changements dans Gnome;
 
 
 
Voici une liste de paquets importants rendus obsolètes:
 
* plone (dont la méthode d'installation recommandées est le « Unified Installer for Linux » proposé par les développeurs de plone)
 
* nessus, remplacé par OpenVAS: openvas-server et openvas-client;
 
* postgresql-8.3, remplacé par son successeur postgresql-8.4; la mise à niveau doit se faire manuellement (elle est généralement bien prise en charge par les scripts de mise à niveau du paquet);
 
* mysql-server-5.0, remplacé par mysql-server-5.1;
 
* python2.4, dont le successeur est python2.6 ;
 
* Java 5, notamment sun-java5-jre et sun-java5-bin, remplacé par Java6: sun-java6-jre et paquets associés; Vous pouvez aussi opter pour ''openjdk'' (notamment fourni par ''openjdk-6-jre''), qui est une implémentation libre de la JDK d'Oracle;
 
* apt-proxy n'est plus fourni, utilisez à la place apt-cacher-ng, apt-cacher ou approx;
 
* certains pilotes graphiques comme xserver-xorg-video-cyrix,  xserver-xorg-video-i810 xserver-xorg-video-imstt, xserver-xorg-video-nsc, xserver-xorg-video-sunbw2, et xserver-xorg-video-vga. vous devriez utiliser xserver-xorg-video-all à la place
 
* usplash, remplacé par plymouth
 
 
 
 
 
En outre, vous pouvez nettoyer votre système en supprimant les paquets marqués « obsolètes », qui ne seront bientôt plus supportés par Debian (généralement un an après la sortie de la version stable). La suppression de ces paquets est notamment possible grâce à la commande
 
apt-get autoremove
 
Vous pouvez aussi utiliser les paquets comme ''deborphan'' (particulièrement recommandé), ''debfoster'', ou ''cruft'' (plus expérimental). Attention toutefois aux faux-positifs que peuvent générer ces outils: certains paquets qu'ils mentionnent pourraient encore être importants (examinez leur description pour estimer leur importance).
 
Par exemple, la commande ''deborphan'' liste tous les paquets (par défaut uniquement des librairies, pas les logiciels) qui ne sont plus utilisés par d'autres paquets du système, et que vous devriez pouvoir supprimer sans problème.
 
 
 
D'autres paquets ont été renommés, et les anciens paquets sont devenus des paquets ''transitoires'', c'est à dire que leur seule fonctionnalité est de déclencher l'installation des paquets au nouveau nom. Une fois les nouveaux paquets installés, les paquets transitoires peuvent être supprimés.
 
Les nouveaux paquets ayant été installé par effet des dépendances, et non pas par une demande explicite de l'administrateur, il faut toutefois prendre soin de marquer ces nouveaux paquets comme nécessaires par eux-même (et non pas comme de simples dépendances des anciens paquets).
 
 
 
Exemple: sur un serveur, vous voudrez peut-être supprimer les paquets <tt>dhcp3-client</tt>, <tt>dhcp3-common</tt>, et <tt>dhcp3-server</tt> qui ne sont plus que des paquets transitoires car ils ont été respectivement renommés en  <tt>isc-dhcp-client</tt>, <tt>isc-dhcp-common</tt>, et <tt>isc-dhcp-server</tt>.
 
Cependant, pour éviter qu' ''aptitude'' ne propose la suppresson des nouveaux paquets lorsqu'on demandera la suppression des paquets transitoires (puisqu'ils ont été installés sur uniquement pour répondre aux dépendances de ces paquets tansitoires), il est nécessaire de les marquer comme étant des paquets installés manuellement (plutôt qu'automatiquement):
 
aptitude unmarkauto isc-dhcp-client isc-dhcp-common isc-dhcp-server
 
On peut ensuite supprimer normalement les paquets transitoires:
 
# aptitude purge dhcp3-client dhcp3-common dhcp3-server
 
Les paquets suivants seront ENLEVÉS :
 
  dhcp3-client{p} dhcp3-common{p} dhcp3-server{p}
 
0 paquets mis à jour, 0 nouvellement installés, 3 à enlever et 4 non mis à jour.
 
Il est nécessaire de télécharger 0 o d'archives. Après dépaquetage, 184 ko seront libérés.
 
Voulez-vous continuer ? [Y/n/?] Y
 
...
 
 
 
== Changements importants amenés par Squeeze ==
 
 
 
Voici quelques-uns des changements importants amenés par Debian 6.0
 
 
 
=== Déconnexion lors de la mise à niveau de KDE ===
 
 
 
KDE passe de la version 3 à 4.4. Si vous mettez à jour en utilisant cette interface, vous risquez d'être déconnecté et de perdre des données. Préférez une mise à jour en ligne commande.
 
 
 
=== Changements dans Gnome ===
 
 
 
Plusieurs changements importants ont lieu pour Gnome, qui passe en 2.30:
 
* en particulier, il est recommandé d'installer le paquet gdm3 après la mise à jour (des incompatibilités empêchent un remplacement automatique) car cette ancienne version de gdm ne sera bientôt plus supportée.
 
* des autorisations sont maintenant données automatiquement à l'utilisateur connecté à la console.
 
 
 
=== Changement de NetworkManager ===
 
 
 
La modification la plus important sous Gnome est l'interaction entre network-manager et ifupdown:
 
« ''Lors de la mise à niveau du paquet network-manager, les interfaces configurées dans /etc/network/interfaces pour utiliser DHCP sans autre option seront désactivées dans ce fichier, et à la place prises en charge par NetworkManager. Par conséquent, les commandes ifup et ifdown ne fonctionneront plus. Ces interfaces peuvent être gérées à la place avec les interfaces pour NetworkManager, voyez la documentation de NetworkManager.''
 
 
 
''Inversement, toute interface configurée dans /etc/network/interfaces avec plus d'options sera ignorée par NetworkManager. Cela s'applique en particulier aux interfaces sans fil utilisées durant l'installation de Debian (voyez le bug nº 606268).'' »
 
 
 
=== Gestion du branchement à chaud de périphériques de saisie ===
 
 
 
Des changements dans la gestion des branchement à chaud de périphériques de saisie ont été introduits: « ''Le serveur X Xorg inclus dans Debian 6.0 fournit une prise en charge améliorée pour le branchement à chaud des périphériques d'entrée (souris, claviers, tablettes, etc.). Les vieux paquets xserver-xorg-input-kbd et xserver-xorg-input-mouse ont été remplacés par xserver-xorg-input-evdev, qui nécessite un noyau avec l'option CONFIG_INPUT_EVDEV activée. En plus, quelques codes de touche (« keycode ») produits par ce pilote sont différents de ceux traditionnellement associés avec les mêmes touches. Les utilisateurs de programmes comme xmodmap et xbindkeys devront ajuster leur configuration en accord avec les nouveaux codes de touche.'' ».
 
 
 
Cela signifie que vous pouvez supprimer les paquets ''xserver-xorg-input-kbd'' et ''xserver-xorg-input-mouse'' (ainsi que xserver-xorg-input-all, s'il est installé) puisqu'ils sont remplacés par ''xserver-xorg-input-evdev''. Attention: assurez-vous que vous avez bien installé un noyau issu de Squeeze, ou dont l'option CONFIG_INPUT_EVDEV est activée, sinon vous risquez de ne plus avoir de clavier ou de souris fonctionnels.
 
 
 
=== Arrêt du serveur X par Ctrl+Alt+Retour arrière ===
 
 
 
L'arrêt du serveur X (« zapping ») est désactivé par défaut: « ''Traditionnellement, la combinaison Ctrl+Alt+Retour arrière devrait tuer le serveur X. Cette combinaison n'est plus active par défaut, mais peut être réactivée en reconfigurant le paquet keyboard-configuration (pour tout le système), ou en utilisant l'application de configuration de clavier de votre environnement de bureau.'' »
 
 
 
 
 
= Problèmes possibles pendant une mise à niveau =
 
 
 
* le noyau Linux inclus dans Squeeze ne prend plus en charge cryptoloop. Si vous utilisez cette technologie, vous devez migré vers ''dm-crypt'' avant de mettre votre système à niveau;
 
* la mise à niveau vers Squeeze peut demander la suppression de paquets sur le système. Ces suppressions sont généralement noramales, mais suivez les conseils des notes de mises à jour (résumées pour la plupart dans ce document) et examinez attentivement les suppressions de paquets proposées lors de la mise à jour avant de les accepter. Certaines suppressions de paquets importants sont normales: « ''On peut s'attendre à la suppression de certains paquets courants comme autofs (remplacé par autofs5), dhcp3 (remplacé par isc-dhcp), madwifi-source, python-setuptools et python2.4 (remplacé par python2.6) voir aussi [http://debian.org/releases/squeeze/i386/release-notes/ch-upgrading.fr.html#obsolete les mises à niveau]'' »
 
* erreurs lors de l'utilisation d'aptitude ou d'apt-get: Si une opération utilisant aptitude, apt-get ou dpkg échoue avec l'erreur suivante :
 
E: Dynamic MMap ran out of room
 
: cela signifie que l'espace de cache par défaut est insuffisant. Commentez certaines lignes de /etc/apt/sources.list, ou augmenter la taille du cache, par exemple avec une commande du type
 
echo 'APT::Cache-Limit "12500000";' >> /etc/apt/apt.conf
 
* changements des fichiers de configuration: La mise à jour vous proposera de remplacer certains fichiers de configuration localement modifiés dans les répertoires /etc/init.d ou le fichier /etc/manpath.config. Cette mise à jour doit généralement être acceptée. Les anciennes versions des fichiers remplacées seront conservés avec une extension « .dpkg-old »
 
* il est recommandé d'installer un métapaquet linux-image-2.6-*, si ce n'est pas déjà fait, et de mettre à jour le noyau et redémarrer le système avant la mise à jour des autres paquets, comme indiqué plus haut;
 
* réordonnancement de l'énumération des périphériques: si votre machine dispose de plusieurs cartes réseau, les périphériques correspondants (par exemple eth0, eth1, etc.) pourraient être inversés. Des règles udev existantes dans le fichier /etc/udev/rules.d/70-persistent-net.rules devraient cependant éviter ce changement inopportun;
 
* le nom des périphériques de stockage pourrait également changer. Pour éviter ce changement, il est recommandé d'utiliser les noms de périphériques qui sont garantis stables, comme les alias UUID [9] dans le dossier /dev/disk/by-uuid/ ou les nom de périphériques LVM dans /dev/mapper/. Ce changement sera proposé par le processus de mise à jour, ou vous pouvez l'effectuer auparavant en suivant les instructions du [http://debian.org/releases/squeeze/i386/release-notes/ch-upgrading.fr.html#avoid-problems-before-upgrading paragraphe 4.7.1 des notes de mise à niveau].
 
 
 
 
 
 
 
= Memento des opérations à effectuer =
 
 
 
Voici un memento des opérations à effectuer, qui peut servir de guide lors de la mise à jour d'un système. Il est fortement déconseillé de suivre aveuglement ces instructions sans avoir lu auparavant le reste de de document. Certaines étapes représente un choix de Cliss XXI, qui ne sera pas forcément adapté à votre situation.
 
 
 
* Empêcher si nécessaire l'installation automatique des paquets recommandés:
 
grep APT::Install-Recommends /etc/apt/apt.conf.d/*
 
: puis, si nécessaire:
 
echo "APT::Install-Recommends \"false\";" >> /etc/apt/apt.conf.d/99local
 
 
 
* Sauvegarder la base des paquets debian installés (par exemple dans ''/var/local/backups/system''):
 
test -d /var/local/backups/system || mkdir -p /var/local/backups/system
 
rsync -avR /etc /var/lib/dpkg /var/lib/apt/extended_states /var/lib/aptitude/pkgstates /var/local/backups/system
 
dpkg --get-selections "*" > /var/local/backups/system/packages-$(date +%Y%m%d).selections
 
 
 
* S'assurer qu'aptitude n'a aucune action en cours:
 
** lancer ''aptitude''
 
** dans l'interface, tapez « ''g'' »
 
** si aptitude propose des actions, les annuler ou les appliquer
 
** quitter aptitude
 
 
 
* Désactiver l'étiquettage APT non nécessaire: éditer ''/etc/apt/preferences'' et supprimer les étiquettages qui entrerait en conflit, en particulier ceux relatifs à squeeze, testing, à lenny-backports.
 
 
 
* Vérifiez l'état des paquets et les débloquer si nécessaire:
 
dpkg --audit
 
aptitude search "~ahold" | grep "^.h"
 
#aptitude unhold package_name
 
dpkg --get-selections | grep hold
 
#echo package_name install | dpkg --set-selections
 
 
 
* Supprimer la section ''proposed-updates'' dans le fichier ''/etc/apt/sources.list'' (à réactiver par la suite si nécessaire)
 
 
 
* Changer les sources d'APT dans le fichier ''/etc/apt/sources.list'' pour quelque chose comme:
 
deb <nowiki>http://ftp.fr.debian.org/debian/</nowiki> squeeze main
 
deb <nowiki>http://ftp.fr.debian.org/debian/</nowiki> squeeze-updates main
 
deb <nowiki>http://security.debian.org/</nowiki> squeeze/updates main
 
 
 
* Enregistrez éventuellement la session:
 
script -t 2>~/upgrade-squeeze.time -a ~/upgrade-squeeze.script
 
 
 
* Lancez screen si vous ne l'utilisez pas déjà
 
 
 
* Effectuer la mise à jour des paquets:
 
apt-get update
 
 
 
* Vérifiez l'espace disque nécessaire à la mise à jour:
 
apt-get -o APT::Get::Trivial-Only=true dist-upgrade
 
: si ça ne fonctionne pas, essayer simplement la commande <tt>apt-get dist-upgrade</tt> en répondant 'n' quand apt-get demande s'il faut poursuivre, puisqu'on veut juste avoir une estimation de la place nécessaire à la mise à jour.
 
: Comparez à la valeur donnée dans la colonne « Disp. » par la commande 
 
df -h
 
: observez en particulier la taille disponible dans <tt>/var</tt> (puisuque les paquets sont temporairement stockés dans /var/apt/archives).
 
 
 
* Effectuer la mise à jour minimale du système:
 
apt-get upgrade
 
 
 
* Effectuer la mise à jour du noyau et de udev:
 
apt-get install linux-image-2.6-686 udev
 
: ou bien
 
apt-get install linux-image-2.6-amd64 udev
 
 
 
* Installez GRUB2 (ça permet de le tester lors du redémarrage):
 
apt-get install grub-pc
 
 
 
* Vérifiez bien que grub2 a installé ce qu'il fallait, et redémarrez le système:
 
reboot
 
 
 
* Effectuer la mise à jour les services sensibles du système:
 
apt-get install ...
 
 
 
* Effectuer la mise à jour du reste du système
 
apt-get dist-upgrade
 
 
 
* Si le redémarrage sous Grub2 s'est bien déroulé, terminez la migration:
 
upgrade-from-grub-legacy
 
 
 
* Nettoyez le système des paquets inutiles:
 
apt-get autoremove
 
: et éventuellement à l'aide de deborphan (à utiliser avec précausion !):
 
aptitude install deborphan
 
deborphan # vérifier la liste de paquets
 
aptitude purge $(deborphan)
 
deborphan --find-config # vérifiez la liste des paquets
 
aptitude purge $(deborphan --find-config)
 
 
 
* Pour les machines sous Gnome, passer sous gdm3:
 
aptitude install gdm3
 
 
 
* Pour les machines sous X:
 
** Suppression de ''xserver-xorg-input-kbd'' et ''xserver-xorg-input-mouse'' (remplacés par ''xserver-xorg-input-evdev'')
 
aptitude purge xserver-xorg-input-kbd xserver-xorg-input-mouse
 
** Suppression de xserver-xorg-input-wacom si vous n'avez pas de tablette wacom, car ce paquet génère des erreurs pas jolies au démarrage de la machine, à cause de ''udev'' (n'ayant pas de tel tablette, je supprime simplement le paquet au lieu de régler le problème ^^).
 
aptitude purge xserver-xorg-input-all xserver-xorg-input-wacom
 
 
 
* Si le serveur MySQL était installé sur la machine, il faut effectuer explicitement l'installation de la version 5.1 (ceci mettra à jour le client MySQL). :
 
aptitude install mysql-server-5.1
 
 
 
* Si vous utilisiez ''apticron'', c'est maintenant ''/etc/cron.daily/apticron'' qui le lancera chaque jour, mais l'ancien fichier ''/etc/cron.d/apticron'' est devenu inutile et fera doublon:
 
rm /etc/cron.d/apticron
 
 
 
* Profitez de votre belle Squeeze toute neuve, et du beau boulot effectué par la communauté Debian !
 

Version du 28 février 2012 à 17:07

Construire un serveur LXC

LXC offre les possibilités d'un chroot avec quelques points en plus:

  • séparation des process (une sorte de chroot des process)
  • virtualisation du réseau (il est possible de simuler un circuit réseau avec

les bridges (brctl) le routage/NAT (iptables)

LXC souffre encore de quelques problèmes de jeunesse:

  • lxc-stop est un vilain kill -9 -1 exécuté dans le container. Il faudrait que lxc-stop fasse un shutdown propre (init 0)
  • le système de fichier /sys montre des éléments faisant partie de l'hôte et n'est pas encore suffisamment étanche.