Logo carnetderootxzz@carnetderoot.net"La simplification est la sophistication suprême" - Léonard De Vinci
dimanche 04 décembre 2016

:: Archlinux - Aide mémoire ::

Systemd

Commandes

systemctl                                 # Contrôle systemd et gère les unités.
journalctl                                # Consultation du journal de systemd.
loginctl                                  # Contrôle des sessions utilisateurs (systemd-logind).

Commandes système

systemctl reboot
systemctl poweroff
systemctl suspend
systemctl hibernate

Opérations basiques

Gestion des unités

systemctl                                 # Liste des unités
systemctl list-units
systemctl status <unit>                   # Affiche le statut de l'unité
systemctl list-dependencies [<unit>]      # Liste des dépendances d'une unité

Opérations

systemctl start <unit>                    # Démarre l'unité
systemctl stop <unit>                     # Arrête l'unité
systemctl restart <unit>                  # Redémarre l'unité
systemctl reload <unit>                   # Recharge l'unité
systemctl enable <unit>                   # Active l'unité au démarrage
systemctl disable <unit>                  # Désactive l'unité au démarrage

Maintenance

Lister les services en échec

$ systemctl --failed
  UNIT                         LOAD   ACTIVE SUB    DESCRIPTION
● systemd-modules-load.service loaded failed failed Load Kernel Modules

On récupère ainsi le nom du service en échec à partir duquel on va pouvoir demander plus de détails.

Détails sur le service en échec

$ systemctl status systemd-modules-load.service
● systemd-modules-load.service - Load Kernel Modules
   Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sun 2016-12-04 09:24:59 CET; 18min ago
     Docs: man:systemd-modules-load.service(8)
           man:modules-load.d(5)
  Process: 333 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)
 Main PID: 333 (code=exited, status=1/FAILURE)

Ces informations nous permettent de récupérer le PID du process incriminé, et de cibler plus précisément notre recherche :

$ journalctl _PID=333
-- Logs begin at Mon 2016-11-21 08:22:44 CET, end at Sun 2016-12-04 09:40:41 CET. --
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxdrv'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxpci'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxnetadp'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxnetflt'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxdrv'

Maintenant c'est déjà plus clair, le problème semble provenir de modules absents. Le nom de ces modules nous donne un indice sur l'application incriminée, ici VirtualBox.

Gestion du journal

$ journalctl --disk-usage                 # Taille occupée par les journaux sur le disque
$ journalctl --verify                     # Vérification de la "possible" corruption des fichiers journaux

Taille du journal

Editer le fichier /etc/systemd/journald.conf et modifier la valeur suivante :

[Journal]
...
SystemMaxUse=50M

Nettoyage du journal

$ sudo journalctl --vacuum-size=50M       # Suppression des journaux archivés jusqu'à ce que leur taille totale descende en deça de 50Mo
$ sudo journalctl --vacuum-time=2weeks    # Suppression des événements agés de plus de deux semaines

Gestion des paquets

Liste des miroirs

Générer la liste des miroirs

Site de référence : Archlinux - Pacman Mirrorlist Generator

Evaluer les miroirs

La liste des miroirs les plus rapides peut être déterminée à l'aide de l'utilitaire /usr/bin/rankmirrors.
Pour mettre à jour la liste des miroirs français en http/https et IPv4, lancer les commandes suivantes :

$ wget 'https://www.archlinux.org/mirrorlist/?country=FR&protocol=http&protocol=https&ip_version=4' -O mirrorlist.new
$ sed -i 's/^#Server/Server/' mirrorlist.new
$ rankmirrors -n 6 mirrorlist.new > mirrorlist
$ sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
$ sudo cp mirrorlist /etc/pacman.d/mirrorlist

Automatiser la mise à jour de la liste des miroirs

Installer l'utilitaire update-pacman-mirrorlist

$ yaourt -S update-pacman-mirrorlist

Adapter la configuration (si besoin) :

$ sudo vi /etc/update-pacman-mirrorlist
$ sudo vi /usr/lib/systemd/system/update-pacman-mirrorlist.timer

Activer et lancer le timer :

$ sudo systemctl enable update-pacman-mirrorlist.timer
$ sudo systemctl start update-pacman-mirrorlist.timer

Pacman

Opérations de base

Synchronisation (-S)

$ sudo pacman -Sy                      # Synchronise la liste des paquets
$ sudo pacman -Syu                     # Synchronise la liste des paquets et effectue une mise à jour
$ sudo pacman -Ss <package>            # Cherche un paquet contenant le terme "package"
$ sudo pacman -Si <package>            # Information sur un paquet
$ sudo pacman -S  <package>            # Installe "package"
$ sudo pacman -S --asdeps              # Installe un paquet comme dépendance

Mise à jour (-U)

$ sudo pacman -U  <package>            # Met à jour "package"

Requête (-Q)

$ sudo pacman -Q                       # Liste les paquets installés
$ sudo pacman -Ql <package>            # Liste les fichiers d'un paquet
$ sudo pacman -Qo /path/file           # Demande à quel paquet appartient le fichier
$ sudo pacman -Qdtq                    # Liste des dépendances inutiles

Suppression (-R)

$ sudo pacman -Rs <package>            # Supprime un paquet et ses dépendances
$ sudo pacman -Rsn <package>           # Supprime un paquet, sa configuration et ses dépendances
$ sudo pacman -Rs $(pacman -Qtdq)      # Suppression des dépendances inutiles

Création de la liste des paquets installés pour réinstallation

$ sudo pacman -Qqet | grep -v "$(pacman -Qqg base)" > pkglist

Réinstallation à partir de la liste des paquets

$ sudo pacman -S $(cat pkglist)

Gestion du cache de paquets

Suppression des paquest non-installés du cache (anciennes versions ou non installées sur le système) :

$ sudo pacman -Sc

Il est aussi possible de vider complètement le cache. Il s’agit d’une très mauvaise pratique qui empêche toute réinstallation de paquets depuis le cache et impose donc de les télécharger à nouveau. Vous ne devriez jamais utiliser cette commande à moins d’un besoin absolu de récupérer de l’espace disque.

$ sudo pacman -Scc

AUR

$ yaourt (utilise la même syntaxe que pacman)

Mise à jour du système

$ yaourt -Syua                         # Mise à jour du système (pacman + aur)

Local

Attention ! Pour des raisons de sécurité, éviter d'utiliser makepkg en root. Préférer l'utilisation de sudo.

Création du paquet

$ sudo makepkg -s

Installation du paquet créé

$ sudo pacman -U <package>-pkg.tar.gz