Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
atelier:chantier:maintenir-debian-sid [09/01/2021 21:14] cyrille [Le fichier sources.list] |
atelier:chantier:maintenir-debian-sid [11/01/2021 21:05] cyrille [Des utilitaires pratiques] |
||
---|---|---|---|
Ligne 8: | Ligne 8: | ||
* Création par [[user>cyrille]] 09/01/2021 | * Création par [[user>cyrille]] 09/01/2021 | ||
* Testé par <...> le <...> FIXME | * Testé par <...> le <...> FIXME | ||
- | * Commentaires sur le forum : [[:url-invalide | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) FIXME | + | * Amélioré par [[user>David5647]], [[user>vv222]], [[user>--gilles--]] |
+ | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=352031 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) FIXME | ||
**Nota :** | **Nota :** | ||
Ligne 21: | Ligne 22: | ||
===== Installer SID ===== | ===== Installer SID ===== | ||
- | Le plus simple est de récupérer une **iso de testing**, de l'installer puis de modifier le sources.list afin de le faire correspondre à celui d'une SID et de l'upgrader en SID. | + | La documentation officielle recommande soir de partir d'une **debian stable** soit d'une **debian testing** et de l'upgrader en sid en modifiant le source list. |
+ | |||
==== Le fichier sources.list ==== | ==== Le fichier sources.list ==== | ||
Ligne 31: | Ligne 34: | ||
</code> | </code> | ||
ou | ou | ||
+ | <code root> | ||
+ | cat /etc/apt/sources.list | ||
+ | deb http://deb.debian.org/debian/ unstable main non-free contrib | ||
+ | </code> | ||
+ | ou | ||
<code root> | <code root> | ||
apt edit-sources | apt edit-sources | ||
Ligne 39: | Ligne 46: | ||
* Éviter, notamment le dépôt **deb-multimedia**. | * Éviter, notamment le dépôt **deb-multimedia**. | ||
- | ====== Maintenir sa SID ====== | + | ==== L'upgrade en SID ==== |
+ | Exécutez les opération de mise à jour suivantes: | ||
+ | <code root>apt apt update | ||
+ | apt full-upgrade</code> | ||
- | ===== Installer apt-listbugs ===== | + | Vous devriez vous retrouver en SID |
+ | ==== L'iso mini.iso ==== | ||
+ | Alternative : partir d'un de ces mirroirs debian https://www.debian.org/mirror/list en suivant **debian/dists/unstable/main/installer-*/current/images/netboot/** | ||
- | C'est le paquet essentiel pour maintenir une debian SID à jour. Une fois les paquets à mettre à jour, télécharger, il scannera les changelog à la recherche des bugs existants et non résolus. Si bug(s) il y a, vous serez prévenu sur quel paquet et ce sera à vous d'opter pour la bonne solution : installer ou non le paquet. | + | Durant l'installation choisissez « **Advanced options** » -> « **Expert install** » ; |
+ | À l'étape « **Choose a mirror of the Debian archive** » choisissez la version « **sid - unstable** ». | ||
+ | ===== Maintenir sa SID ===== | ||
- | ===== Gel / dégel de paquet ===== | ||
+ | ==== Installer apt-listbugs ==== | ||
- | On appelle gel de paquet la mise en place d'un marqueur afin qu'apt ne prennent pas en compte ce paquet lors de la mise à jour. | ||
- | __**Geler un paquet:**__ | + | C'est le paquet essentiel pour maintenir une debian SID à jour. Une fois les paquets à mettre à jour, télécharger, il scannera les changelog à la recherche des bugs existants et non résolus. Si bug(s) il y a, vous serez prévenu sur quel paquet et ce sera à vous d'opter pour la bonne solution : installer ou non le paquet. |
- | **Syntaxe avec aptitude:** | + | Il est recommandé de mettre à jour sa SID **au moins une fois semaine**. |
- | <code root> | + | |
- | aptitude hold <le_paquet_a_geler> | + | |
- | </code> | + | |
- | **Sinon passer par apt-mark** | + | ==== Que faire en cas de paquet(s) buggué(s) ==== |
- | <code root> | + | |
- | apt-mark hold <le_paquet_a_geler> | + | |
- | </code> | + | |
- | __**Pour dégeler un paquet:**__ | + | Plusieurs étapes sont alors à respecter : |
+ | * Lecture du rapport de big | ||
+ | * Pin les paquets problématiques | ||
+ | * //Alternative// : Geler / dégeler les paquets (**hold**/**unhold**) | ||
- | **Syntaxe avec aptitude:** | + | ==== Etape 1 : Lecture du rapport de bug ==== |
- | <code root> | + | |
- | aptitude unhold <le_paquet_a_geler> | + | |
- | </code> | + | |
- | **Sinon passer par apt-mark:** | + | La première chose à faire est de lire la remontée de bug et de voir si le bug vous concerne. |
- | <code root> | + | |
- | apt-mark unhold <le_paquet_a_geler> | + | |
- | </code> | + | |
- | __**Connaître la liste des paquets geler de votre système:**__ | + | * Soit l'architecture de votre système n'est pas concernée |
+ | * Soit le paquet est présent mais pas utilisé car présence de beaucoup de paquets redondants | ||
+ | * Soit l'une utilisation de ce paquet est très basique du paquet et le bug ne l'impacte pas | ||
+ | * Soit l'utilisation de ce paquet sera laissée de côté le temps de la résolution (exemple bz2 est bugué, tant pis xz prendra le relais pendant quelques temps) | ||
+ | * Soit le bug est classé **serious** mais n'est pas sérieux | ||
+ | * Soit le bug ne touche pas directement le paquet mais une de ses extensions que vous n'utilisez pas ou une version que vous n'utilisez pas. | ||
- | **Avec aptitude:** | + | En fonction du bug, vous déciderez donc |
- | <code root> | + | * d'installer quand ce paquet (votre cas sus-cité) |
- | aptitude search "~ahold" | + | * de ne pas installer ce paquet. |
- | </code> | + | |
- | **Avec dpkg:** | + | On se rend souvent compte qu'à peine ~10% des bugs signalés par **apt-listbugs** nous concernent vraiment. |
- | <code root> | + | |
- | dpkg --list | grep ^hi | + | |
- | </code> | + | |
- | **Avec apt-mark** | + | ==== Etape 2 : apt-listbugs et pin de paquet buggué ===== |
- | <code root> | + | |
- | apt-mark showhold | + | |
- | </code> | + | |
+ | Dans le cas où le bug affecterait le programme dans votre utilisation. L'outil apt-listbugs permet de le marquer comme non upgradable le temps de la mise à jour. Le système installera alors les paquets non buggués et laissera en attente les autres paquets, **//pinnés//** buggués. | ||
- | ===== Mettre à jour sa SID ===== | + | Concrétement quand **apt-listbugs** listera des bugs, il suffira de répondre "**p**" (pour "**pin**") ce qui va étiqueter ces paquets via un fichier sous **/etc/apt/preferences.d/**, de manière à en empêcher la mise-à-jour vers la version qui a un souci. Une fois le bug corrigé, le fichier sous **/etc/apt/preferences.d/** est automatiquement mis à jour. |
- | C'est l'étape délicate, si vous ne savez pas quoi faire : | + | ==== Alternative non recommandée : Gel / dégel de paquet ==== |
- | * Ne pas mettre à jour | + | |
- | * Geler les paquets problématiques | + | |
+ | Une autre méthode mais qui semble non recommandée est le **gel / dégel** de paquet via l'attribut **hold** / **unhold** d'**aptitude** ou de **apt-mark** | ||
- | La procédure est ensuite la même que pour toutes Debian. | + | On appelle gel de paquet la mise en place d'un marqueur afin qu'apt ne prenne pas en compte ce paquet lors de la mise à jour. |
- | <code root> | + | |Action| aptitude | apt-mark | |
- | apt update | + | |Geler un paquet| aptitude hold <le_paquet_a_geler> | apt-mark hold <le_paquet_a_geler> | |
- | </code> | + | |Degeler un paquet| aptitude unhold <le_paquet_a_geler> | apt-mark unhold <le_paquet_a_geler> | |
+ | |Lister les paquets gelés| aptitude search "~ahold" | apt-mark showhold | | ||
- | <code root> | ||
- | apt upgrade | ||
- | Lecture des listes de paquets... Fait | ||
- | Construction de l'arbre des dépendances | ||
- | Lecture des informations d'état... Fait | ||
- | Calcul de la mise à jour... Fait | ||
- | Les paquets suivants ont été conservés : | ||
- | apt apt-utils cups-client exim4-daemon-light libcups2 libcurl3-gnutls | ||
- | libgnutls-dane0 libgnutls30 libjs-jquery libnm0 libnss-systemd | ||
- | libpam-systemd libsmbclient libsystemd0 libwbclient0 network-manager ppp | ||
- | samba-libs systemd systemd-timesyncd wget | ||
- | Les paquets suivants seront mis à jour : | ||
- | binutils binutils-common binutils-x86-64-linux-gnu cpp-10 cups-common dpkg | ||
- | dpkg-dev dput findutils firefox-esr firefox-esr-l10n-fr firmware-iwlwifi | ||
- | firmware-misc-nonfree g++-10 gcc-10 gcc-10-base giblib1 ispell kmod | ||
- | libapt-pkg6.0 libasan6 libatomic1 libaudit-common libaudit1 libbinutils | ||
- | libcc1-0 libctf-nobfd0 libctf0 libdpkg-perl libdw1 libelf1 libgcc-10-dev | ||
- | libgcc-s1 libgfortran5 libgomp1 libhttp-message-perl libitm1 libjs-sphinxdoc | ||
- | libkmod2 libllvm11 liblsan0 libmaxminddb0 libproxy-tools libproxy1v5 | ||
- | libpulse-dev libpulse-mainloop-glib0 libpulse0 libpulsedsp libquadmath0 | ||
- | libstdc++-10-dev libstdc++6 libtsan0 libubsan1 libvdpau1 libvulkan1 libx11-6 | ||
- | libx11-data libx11-dev libx11-xcb1 libzmq5 locate logrotate media-types | ||
- | patch publicsuffix pulseaudio pulseaudio-utils python3-pil python3-psutil | ||
- | ruby-rubygems vdpau-driver-all xserver-common xserver-xorg-core | ||
- | xserver-xorg-legacy | ||
- | 74 mis à jour, 0 nouvellement installés, 0 à enlever et 21 non mis à jour. | ||
- | Il est nécessaire de prendre 166 Mo dans les archives. | ||
- | Après cette opération, 613 ko d'espace disque supplémentaires seront utilisés. | ||
- | Souhaitez-vous continuer ? [O/n] | ||
- | </code> | ||
- | A cette étape, répondez OUI. | ||
- | Les mises à jour sont alors téléchargées et le changelog de chaque paquet sera lu afin de voir si des bugs existent ou non. | + | Une fois le tag hold positionner, reprendre la procédure autant de fois qu'il y a des paquets buggués. |
+ | |||
+ | ==== Cas pratique ==== | ||
<code root> | <code root> | ||
- | Souhaitez-vous continuer ? [O/n] y | + | apt update |
- | Réception de :1 http://deb.debian.org/debian sid/main amd64 dpkg amd64 1.20.7.1 [2464 kB] | + | apt upgrade |
- | [ .. ] | + | [....] |
- | Réception de :74 http://deb.debian.org/debian sid/main amd64 xserver-xorg-core amd64 2:1.20.10-2 [3595 kB] | + | 22,0 Mo réceptionnés en 6s (3626 ko/s) |
- | 166 Mo réceptionnés en 29s (5636 ko/s) | + | |
Récupération des rapports de bogue… Fait | Récupération des rapports de bogue… Fait | ||
Analyse des informations Trouvé/Corrigé… Fait | Analyse des informations Trouvé/Corrigé… Fait | ||
bogues de gravité serious sur firefox-esr (78.6.0esr-1 → 78.6.1esr-1) <En attente de traitement> | bogues de gravité serious sur firefox-esr (78.6.0esr-1 → 78.6.1esr-1) <En attente de traitement> | ||
b1 - #979612 - firefox-esr: after upgrade from 78.6.0esr-1~deb10u1 to 78.6.1esr-1~deb10u1 gnome interface behave erratically | b1 - #979612 - firefox-esr: after upgrade from 78.6.0esr-1~deb10u1 to 78.6.1esr-1~deb10u1 gnome interface behave erratically | ||
- | Résumé : | + | Résumé : |
firefox-esr(1 bogue) | firefox-esr(1 bogue) | ||
- | Êtes-vous certain(e) de vouloir installer/mettre à niveau les paquets ci-dessus ? [Y/n/?/...] | + | Êtes-vous certain(e) de vouloir installer/mettre à niveau les paquets ci-dessus ? [Y/n/?/...] </code> |
- | </code> | + | |
- | + | ||
- | En cas de bug, vous verrez cette dernière ligne apparaitre, si pas de bug la mise à jour se poursuivra. | + | |
- | + | ||
- | Dans ce le cas d'un bug, comme ici, stopper la mise à jour | + | |
+ | A cette étape, il faut être prudent, saisissez ? pour voir les choix offerts | ||
<code root> | <code root> | ||
- | Êtes-vous certain(e) de vouloir installer/mettre à niveau les paquets ci-dessus ? [Y/n/?/...] N | + | Êtes-vous certain(e) de vouloir installer/mettre à niveau les paquets ci-dessus ? [Y/n/?/...] ? |
- | **************************************************************** | + | y - poursuivre l'installation avec APT. |
- | ****** Sortie sur erreur pour interrompre l'installation. ****** | + | n - interrompre l'installation avec APT. |
- | **************************************************************** | + | <num> - interroger le numéro de bogue indiqué |
- | E: Le sous-processus /usr/bin/apt-listbugs apt a renvoyé un code d'erreur (10) | + | (utilise querybts en tant qu'utilisateur ragnarok). |
- | E: Failure running script /usr/bin/apt-listbugs apt | + | #<num> - identique à <num>. |
+ | b<id> - comme <num>, mais interrogeant le bogue identifié par <id>. | ||
+ | r - afficher les listes de bogues. | ||
+ | c - créer la liste de bogues en HTML. | ||
+ | w - afficher la liste des bogues en HTML | ||
+ | (utilise sensible-browser en tant qu'utilisateur ragnarok). | ||
+ | d <num>… - éviter les bogues <num> en épinglant les paquets affectés | ||
+ | (APT doit être relancé pour activer cette option). | ||
+ | d b<id>… - éviter les bogues identifiés par <id> en épinglant les paquets | ||
+ | affectés (APT doit être relancé pour activer cette option). | ||
+ | p <pqt>… - épingler les paquets <pqt> | ||
+ | (APT doit être relancé pour activer cette option). | ||
+ | p - épingler tous les paquets ci-dessus | ||
+ | (APT doit être relancé pour activer cette option). | ||
+ | i <num> - marquer comme étant ignoré le bogue numéro <num>. | ||
+ | i b<id> - marquer comme étant ignoré le bogue identifié par <id>. | ||
+ | i - marquer tous les bogues ci-dessus comme ignorés. | ||
+ | u - annuler toutes les opérations éviter/épingler/ignorer | ||
+ | effectuées jusqu'à présent. | ||
+ | ? - afficher cette aide. | ||
</code> | </code> | ||
- | Geler le paquet qui pose soucis: | + | Si vous voulez voir le détail du bug, saisissez le numéro de bug. Par exemple, dans le cas sus-cité |
- | <code root> | + | |
- | root@valhalla:~# apt-mark hold firefox-esr: | + | |
- | firefox-esr passé en figé (« hold »). | + | |
- | root@valhalla:~# apt-mark showhold | + | |
- | firefox-esr | + | |
- | libgnutls30 | + | |
- | libjs-jquery | + | |
- | </code> | + | |
- | Relancer la mise à jour: | + | |
- | <code root> | + | |
- | apt upgrade | + | |
- | </code> | + | |
- | Si de nouveaux bugs sortent, recommencer ces étapes autant de fois que nécessaire. | + | <code root>Êtes-vous certain(e) de vouloir installer/mettre à niveau les paquets ci-dessus ? [Y/n/?/...] #979612 |
+ | Retrieving report #979612 from Debian bug tracking system...</code> | ||
- | Votre système est alors à jour | + | Le rapport de bug s'affichera automatiquement. Saisissez "**q**" pour quitter. |
- | La prochaine mise à jour | + | Si le rapport ne vous concerne pas, vous pouvez accepter la mise à jour du paquet, sinon épingler ce paquet (letttre "**p**") |
- | Dégeler les paquets gelés avant la prochaine mise à jour afin de les réinjecter dans le processus (si les bugs ont été corrigés, pas de soucis, sinon les regeler en suivant les recommandations sus-citées). | + | |
- | **Exemple** | ||
- | <code root> | ||
- | apt unhold firefox-esr libgnutls30 libjs-jquery | ||
- | apt update | ||
- | apt upgrade | ||
- | </code> | ||
- | ======= Des utilitaires pratiques ======= | + | ===== Des utilitaires pratiques ===== |
On peut utiliser ces utilitaires en parallèle : | On peut utiliser ces utilitaires en parallèle : | ||
- | ===== apt-listchanges ===== | + | ==== apt-listchanges ==== |
- | **apt-listchanges** : à l'issue de la mise à jour, les changements importants apportés seront affichés à l'écran (appui sur q pour quitter l'affichage) | + | **apt-listchanges** : à l'issue de la mise à jour, les changements importants apportés seront affichés à l'écran (appui sur **q** pour quitter l'affichage) |
- | ===== needrestart ===== | + | ==== Relire un log ou un bug ==== |
+ | |||
+ | **Un changelog** | ||
+ | |||
+ | Si jamais vous avez regardé trop vite la description et souhaitez la revisionner plus tard, utiliser l'attribut **changelog** d'**apt** ou d'**aptitude**. | ||
+ | |||
+ | Exemple: | ||
+ | <code user>apt changelog apt</code> | ||
+ | |||
+ | Affichera<code> | ||
+ | apt (2.1.16) unstable; urgency=medium | ||
+ | |||
+ | [ Faidon Liambotis ] | ||
+ | * Various fixes to http and connect method | ||
+ | - basehttp: also consider Access when a Server's URI | ||
+ | - connect: convert a C-style string to std::string | ||
+ | - connect: use ServiceNameOrPort, not Port, as the cache key | ||
+ | |||
+ | [ Julian Andres Klode ] | ||
+ | * patterns: Add dependency patterns ?depends, ?conflicts, etc. | ||
+ | Note that the -broken- variants are not implemented yet. | ||
+ | * Rewrite of the kernel autoremoval code: | ||
+ | - Determine autoremovable kernels at run-time (LP: #1615381), this fixes the | ||
+ | issue where apt could consider a running kernel autoremovable | ||
+ | - Automatically remove unused kernels on apt {full,dist}-upgrade. | ||
+ | This helps ensuring that we don't run out of /boot space. | ||
+ | - Only keep up to 3 (not 4) kernels. | ||
+ | Ubuntu boot partitions were sized for 3 kernels, not 4.</code> | ||
+ | Appuyer sur "**q**" pour quitter. | ||
+ | |||
+ | **Un bug** | ||
+ | |||
+ | Pour revoir un bug, utiliser apt-listbugs: | ||
+ | |||
+ | <code user>apt-listbugs list apt | ||
+ | Récupération des rapports de bogue… Fait | ||
+ | Analyse des informations Trouvé/Corrigé… Fait | ||
+ | bogues de gravité serious sur apt (→ ) <En attente de traitement> | ||
+ | b1 - #922223 - apt: terminate called after throwing an instance of 'std::logic_error' ... Aborted | ||
+ | bogues de gravité serious sur apt (→ ) <Résolus dans une version donnée> | ||
+ | b2 - #931566 - Don't complain about suite changes (Acquire::AllowReleaseInfoChange::Suite should be "true") (Corrigé : apt/2.1.10) | ||
+ | Résumé : | ||
+ | apt(2 bogues)</code> | ||
+ | |||
+ | |||
+ | 2 options complémentaires sont intéressantes : | ||
+ | |||
+ | **-s <gravités>** : Restreindre l'affichage aux bogues avec ces gravités | ||
+ | (ou "all" pour les voir tous) | ||
+ | |||
+ | **-S <états>** : Restreindre l'affichage aux bogues correspondant à ces états | ||
+ | [pending,forwarded,pending-fixed,fixed,done]. | ||
+ | |||
+ | |||
+ | |||
+ | ==== needrestart ==== | ||
**needrestart** : si la mise à jour a touché des programmes nécessitant la redémarrage de services, vous serez notifié et on vous demandera si vous désirez ou non redémarrer ces services (oui en général) | **needrestart** : si la mise à jour a touché des programmes nécessitant la redémarrage de services, vous serez notifié et on vous demandera si vous désirez ou non redémarrer ces services (oui en général) | ||
- | ===== Full Upgrade mensuel & autoremove ===== | + | ==== Full Upgrade mensuel & autoremove ==== |
__**Full-upgrade:**__ | __**Full-upgrade:**__ | ||
Ligne 257: | Ligne 282: | ||
</code> | </code> | ||
+ | ==== Vider le cache d'apt ==== | ||
+ | Comme les mises à jour sont fréquentes, pensez à vider régulièrement le cache d'apt. | ||
+ | |||
+ | Ne vider pas trop vite le cache d'apt, car il se peut que vous soyez amener à réinstaller un paquet dans une version précédente sans connexion internet (cas rare mais possible). | ||
+ | |||
+ | <code user>apt clean</code> | ||
+ | |||
+ | ==== Sauvegarde du système ==== | ||
+ | |||
+ | La documentation officielle préconise une sauvegarde du système et la réalisation d'instantanées avec un outil style **timeshift** afin de se prémunir de toutes mauvaises surprises. Personnellement, je ne le fais pas, mais c'est vrai que cela peut être un filet supplémentaire. | ||