first commit
This commit is contained in:
commit
1018867e92
7 files changed
+1374
No files matched your search
@@ -0,0 +1,474 @@
|
|||||||
|
# Easy Slack !
|
||||||
|
|
||||||
|
**Easy Slack** rassemble mes notes pour installer et configurer simplement une **Slackware64 15.0**, que ce soit pour une station de travail avec KDE Plasma ou pour un serveur sans interface graphique.
|
||||||
|
|
||||||
|
L'idée est de rester simple, aussi proche que possible des outils fournis par Slackware, tout en arrivant rapidement à un système agréable à utiliser.
|
||||||
|
|
||||||
|
Ce guide ne couvre pas :
|
||||||
|
|
||||||
|
* le Secure Boot ;
|
||||||
|
* les partitions chiffrées.
|
||||||
|
|
||||||
|
## Table des matières
|
||||||
|
|
||||||
|
* [Installation](#installation)
|
||||||
|
* [Configuration avant le premier démarrage](#configuration-avant-le-premier-démarrage)
|
||||||
|
* [Utilisateur](#utilisateur)
|
||||||
|
* [Station de travail KDE Plasma](#station-de-travail-kde-plasma)
|
||||||
|
* [Fin](#fin)
|
||||||
|
* [Après l'installation](#après-linstallation)
|
||||||
|
* [Maintenance](#maintenance)
|
||||||
|
* [SlackBuilds.org et sbopkg](#slackbuildsorg-et-sbopkg)
|
||||||
|
* [Outils supplémentaires](#outils-supplémentaires)
|
||||||
|
* [Documentation](#documentation)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Partitionner le(s) disque(s)
|
||||||
|
|
||||||
|
Créez une nouvelle table de partitions GPT avec `fdisk`, puis partitionnez avec `cfdisk`.
|
||||||
|
|
||||||
|
L'installateur se chargera de formater les partitions si nécessaire.
|
||||||
|
|
||||||
|
Le schéma ci-dessous est celui que j'utilise. Une partition `/boot` séparée n'est pas obligatoire, mais je la conserve ici pour avoir une organisation identique entre mes machines.
|
||||||
|
|
||||||
|
#### UEFI
|
||||||
|
|
||||||
|
* 512M pour la partition EFI montée sur `/boot/efi` ;
|
||||||
|
* 1G pour la partition `/boot` ;
|
||||||
|
* le reste comme partition racine `/` ;
|
||||||
|
* éventuellement une partition `/home`.
|
||||||
|
|
||||||
|
La partition EFI doit être de type **EFI System**.
|
||||||
|
|
||||||
|
#### BIOS
|
||||||
|
|
||||||
|
Sur une machine BIOS utilisant GPT :
|
||||||
|
|
||||||
|
* 2M pour une partition **BIOS boot** non formatée ;
|
||||||
|
* 1G pour la partition `/boot` ;
|
||||||
|
* le reste comme partition racine `/` ;
|
||||||
|
* éventuellement une partition `/home`.
|
||||||
|
|
||||||
|
La petite partition BIOS boot permet à GRUB de s'installer correctement sur un disque GPT. C'est notamment utile sur certains VPS.
|
||||||
|
|
||||||
|
### Installer le système
|
||||||
|
|
||||||
|
Lancez simplement :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# setup
|
||||||
|
```
|
||||||
|
|
||||||
|
Et bienvenue dans les années 90, laissez-vous guider !
|
||||||
|
|
||||||
|
Au moment de choisir les séries de paquets :
|
||||||
|
|
||||||
|
* pour une station de travail KDE Plasma, je n'installe pas `E/` ni `XFCE/` ;
|
||||||
|
* pour un serveur sans interface graphique, je n'installe pas `E/`, `KDE/`, `T/`, `TCL/`, `X/`, `XAP/`, `XFCE/` ni `Y/`.
|
||||||
|
|
||||||
|
Slackware recommande une installation complète car elle ne gère pas automatiquement les dépendances. La sélection ci-dessus est donc volontaire et suppose de savoir quels composants seront utilisés.
|
||||||
|
|
||||||
|
Passez également l'installation de `lilo` ou `elilo` : GRUB sera installé juste après.
|
||||||
|
|
||||||
|
> Attention à ne pas redémarrer : le système n'est pas encore bootable.
|
||||||
|
|
||||||
|
## Configuration avant le premier démarrage
|
||||||
|
|
||||||
|
### Connexion
|
||||||
|
|
||||||
|
Vérifiez la connexion Internet :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# ping -c 3 www.slackware.com
|
||||||
|
```
|
||||||
|
|
||||||
|
Si le réseau n'est pas configuré, repérez l'interface adéquate :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# ip addr
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis lancez `dhcpcd` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# dhcpcd <interface>
|
||||||
|
```
|
||||||
|
|
||||||
|
La connexion devrait être fonctionnelle.
|
||||||
|
|
||||||
|
### Chroot
|
||||||
|
|
||||||
|
Le nouveau système est monté dans `/mnt` par l'installateur.
|
||||||
|
|
||||||
|
Montez les pseudo-systèmes nécessaires :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# mount -t proc /proc /mnt/proc
|
||||||
|
# mount --rbind /sys /mnt/sys
|
||||||
|
# mount --rbind /dev /mnt/dev
|
||||||
|
# mount --rbind /run /mnt/run
|
||||||
|
```
|
||||||
|
|
||||||
|
Copiez temporairement la configuration DNS :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# cp /etc/resolv.conf /mnt/etc/resolv.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis entrez dans le nouveau système :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# chroot /mnt /bin/bash
|
||||||
|
# source /etc/profile
|
||||||
|
```
|
||||||
|
|
||||||
|
En UEFI, vérifiez que la partition EFI est bien montée :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# findmnt /boot/efi
|
||||||
|
```
|
||||||
|
|
||||||
|
### Locale
|
||||||
|
|
||||||
|
Éditez le fichier :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# nvi /etc/profile.d/lang.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
et utilisez par exemple :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
export LANG=fr_FR.UTF-8
|
||||||
|
```
|
||||||
|
|
||||||
|
Si `csh` ou un de ses dérivés est utilisé, adaptez également `/etc/profile.d/lang.csh`.
|
||||||
|
|
||||||
|
### Synchronisation de l'heure
|
||||||
|
|
||||||
|
Pour synchroniser automatiquement l'horloge avec le pool public NTP, éditez le fichier :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# nvi /etc/ntp.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Le pilote d'horloge locale fourni dans le fichier par défaut est désormais déconseillé. Commentez :
|
||||||
|
|
||||||
|
```text
|
||||||
|
#server 127.127.1.0
|
||||||
|
#fudge 127.127.1.0 stratum 10
|
||||||
|
```
|
||||||
|
|
||||||
|
et ajoutez à la place :
|
||||||
|
|
||||||
|
```text
|
||||||
|
tos orphan 10
|
||||||
|
```
|
||||||
|
|
||||||
|
Laissez les quatre lignes `server` du pool public commentées et ajoutez :
|
||||||
|
|
||||||
|
```text
|
||||||
|
pool pool.ntp.org
|
||||||
|
tos minclock 4 minsane 3
|
||||||
|
tos maxclock 8
|
||||||
|
```
|
||||||
|
|
||||||
|
Dans la section des restrictions, conservez les règles existantes et ajoutez :
|
||||||
|
|
||||||
|
```text
|
||||||
|
restrict source limited kod nomodify notrap noquery
|
||||||
|
```
|
||||||
|
|
||||||
|
Cette règle autorise les associations dynamiques créées par `pool` sans retirer les restrictions appliquées par défaut aux autres sources.
|
||||||
|
|
||||||
|
Activez ensuite le service `ntpd` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# chmod +x /etc/rc.d/rc.ntpd
|
||||||
|
```
|
||||||
|
|
||||||
|
Il sera démarré automatiquement avec le système. Une fois le service lancé, les associations peuvent être vérifiées avec :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# ntpq -n -p
|
||||||
|
```
|
||||||
|
|
||||||
|
### Slackpkg
|
||||||
|
|
||||||
|
Éditez le fichier :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# nvi /etc/slackpkg/mirrors
|
||||||
|
```
|
||||||
|
|
||||||
|
et décommentez un miroir pour Slackware64 15.0. Le miroir de redirection officiel convient très bien :
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://mirrors.slackware.com/slackware/slackware64-15.0/
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis initialisez `slackpkg` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# slackpkg update gpg
|
||||||
|
# slackpkg update
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Important :** si, comme dans ce guide, vous n'avez pas installé certaines séries de paquets, pensez à les ajouter à la blacklist. Sans cela, `slackpkg install-new` pourra notamment proposer de nouveaux paquets appartenant à ces séries lors d'une prochaine mise à jour.
|
||||||
|
|
||||||
|
Éditez le fichier :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# nvi /etc/slackpkg/blacklist
|
||||||
|
```
|
||||||
|
|
||||||
|
et ajoutez par exemple pour une station de travail KDE Plasma :
|
||||||
|
|
||||||
|
```text
|
||||||
|
e/
|
||||||
|
xfce/
|
||||||
|
```
|
||||||
|
|
||||||
|
ou pour un serveur sans interface graphique :
|
||||||
|
|
||||||
|
```text
|
||||||
|
e/
|
||||||
|
kde/
|
||||||
|
t/
|
||||||
|
tcl/
|
||||||
|
x/
|
||||||
|
xap/
|
||||||
|
xfce/
|
||||||
|
y/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Noyau `generic`
|
||||||
|
|
||||||
|
Par défaut, le noyau `huge` est utilisé. Si vous préférez ne charger que les modules utiles à votre machine, vous pouvez passer au noyau `generic`. Slackware fournit pour cela `geninitrd`, qui génère `/boot/initrd.gz` pour le noyau pointé par `/boot/vmlinuz-generic` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# geninitrd
|
||||||
|
```
|
||||||
|
|
||||||
|
Après cette commande, il faut normalement exécuter `grub-mkconfig` afin d'adapter la configuration de GRUB… mais comme GRUB n'est pas encore installé, la suite arrive juste après !
|
||||||
|
|
||||||
|
### GRUB
|
||||||
|
|
||||||
|
#### UEFI
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot/efi
|
||||||
|
```
|
||||||
|
|
||||||
|
#### BIOS
|
||||||
|
|
||||||
|
Installez GRUB sur le disque entier, et non sur une partition :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# grub-install --target=i386-pc /dev/sda
|
||||||
|
```
|
||||||
|
|
||||||
|
Sur un VPS, le disque peut par exemple être `/dev/vda`, et sur un NVMe `/dev/nvme0n1`.
|
||||||
|
|
||||||
|
Générez ensuite le menu :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# grub-mkconfig -o /boot/grub/grub.cfg
|
||||||
|
```
|
||||||
|
|
||||||
|
## Utilisateur
|
||||||
|
|
||||||
|
Créez le premier utilisateur :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# adduser
|
||||||
|
```
|
||||||
|
|
||||||
|
## Station de travail KDE Plasma
|
||||||
|
|
||||||
|
Les réglages suivants concernent uniquement une station de travail avec interface graphique.
|
||||||
|
|
||||||
|
### Clavier X11
|
||||||
|
|
||||||
|
Même si **Plasma (Wayland)** est utilisé, X11 reste disponible comme solution de repli. Configurez donc également sa disposition de clavier.
|
||||||
|
|
||||||
|
Slackware 15.0 fournit deux fichiers de configuration, l'un pour `evdev` et l'autre pour `libinput`.
|
||||||
|
|
||||||
|
Copiez-les dans `/etc` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# cp /usr/share/X11/xorg.conf.d/90-keyboard-layout-evdev.conf /etc/X11/xorg.conf.d/
|
||||||
|
# cp /usr/share/X11/xorg.conf.d/91-keyboard-layout-libinput.conf /etc/X11/xorg.conf.d/
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis éditez les deux fichiers et remplacez :
|
||||||
|
|
||||||
|
```text
|
||||||
|
Option "XkbLayout" "us"
|
||||||
|
```
|
||||||
|
|
||||||
|
par :
|
||||||
|
|
||||||
|
```text
|
||||||
|
Option "XkbLayout" "fr"
|
||||||
|
```
|
||||||
|
|
||||||
|
Le réglage du clavier de la console, choisi pendant l'installation, est indépendant de celui de X11.
|
||||||
|
|
||||||
|
### Démarrage graphique
|
||||||
|
|
||||||
|
Éditez `/etc/inittab` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# nvi /etc/inittab
|
||||||
|
```
|
||||||
|
|
||||||
|
et remplacez :
|
||||||
|
|
||||||
|
```text
|
||||||
|
id:3:initdefault:
|
||||||
|
```
|
||||||
|
|
||||||
|
par :
|
||||||
|
|
||||||
|
```text
|
||||||
|
id:4:initdefault:
|
||||||
|
```
|
||||||
|
|
||||||
|
## Fin
|
||||||
|
|
||||||
|
C'est terminé ! Vous pouvez sortir du `chroot` et redémarrer la machine :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# exit
|
||||||
|
# reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
Au premier démarrage, résistez à la tentation d'installer quoi que ce soit : commencez par mettre Slackware 15.0 à jour. Elle a probablement quelques bricoles à rattraper depuis 2022 !
|
||||||
|
|
||||||
|
## Après l'installation
|
||||||
|
|
||||||
|
Quelques réglages propres à mes stations de travail KDE Plasma sont regroupés dans [docs/post-install.md](docs/post-install.md).
|
||||||
|
|
||||||
|
## Maintenance
|
||||||
|
|
||||||
|
### Mise à jour
|
||||||
|
|
||||||
|
Pour une mise à jour complète de Slackware 15.0 :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# slackpkg update
|
||||||
|
# slackpkg install-new
|
||||||
|
# slackpkg upgrade-all
|
||||||
|
```
|
||||||
|
|
||||||
|
`slackpkg clean-system` permet ensuite de retirer les paquets qui ne font plus partie de Slackware. Examinez attentivement la liste proposée : les paquets tiers y apparaissent également s'ils ne sont pas blacklistés.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# slackpkg clean-system
|
||||||
|
```
|
||||||
|
|
||||||
|
### Mise à jour du noyau
|
||||||
|
|
||||||
|
> **Important :** ne redémarrez pas avec un noyau `generic` mis à jour avant d'avoir régénéré l'initrd.
|
||||||
|
|
||||||
|
Avant de redémarrer :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# geninitrd
|
||||||
|
# grub-mkconfig -o /boot/grub/grub.cfg
|
||||||
|
```
|
||||||
|
|
||||||
|
## SlackBuilds.org et sbopkg
|
||||||
|
|
||||||
|
Vous souhaitez des logiciels supplémentaires ?
|
||||||
|
|
||||||
|
Faites un petit tour sur [SlackBuilds.org](https://slackbuilds.org/), qui fournit des SlackBuilds validés pour Slackware 15.0.
|
||||||
|
|
||||||
|
> Les SlackBuilds sont des « recettes » pour compiler les programmes sous Slackware.
|
||||||
|
|
||||||
|
Il est possible de les utiliser directement, mais la gestion manuelle des dépendances devient vite fastidieuse. Pour simplifier les choses, plusieurs outils existent. J'utilise `sbopkg`.
|
||||||
|
|
||||||
|
Cet outil est disponible [ici](https://www.sbopkg.org/downloads.php). Téléchargez le paquet, puis installez-le avec :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# installpkg sbopkg-*.tgz
|
||||||
|
```
|
||||||
|
|
||||||
|
Synchronisez le dépôt :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sbopkg -r
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour éviter que les paquets SlackBuilds.org soient proposés par `slackpkg clean-system`, décommentez dans `/etc/slackpkg/blacklist` :
|
||||||
|
|
||||||
|
```text
|
||||||
|
[0-9]+_SBo
|
||||||
|
```
|
||||||
|
|
||||||
|
Ajoutez également `sbopkg` à la blacklist pour conserver ce paquet.
|
||||||
|
|
||||||
|
### Installer des logiciels
|
||||||
|
|
||||||
|
Pour installer un paquet SlackBuilds.org sans dépendances supplémentaires :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sbopkg -i <paquet>
|
||||||
|
```
|
||||||
|
|
||||||
|
Si des dépendances sont requises, générez d'abord une queue :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sqg -p <paquet>
|
||||||
|
```
|
||||||
|
|
||||||
|
La queue est enregistrée dans `/var/lib/sbopkg/queues` et contient les dépendances dans le bon ordre.
|
||||||
|
|
||||||
|
Relancez ensuite :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sbopkg -i <paquet>
|
||||||
|
```
|
||||||
|
|
||||||
|
Si `sbopkg` trouve à la fois le paquet et une queue du même nom, choisissez **Q** pour utiliser la queue et installer les dépendances dans le bon ordre.
|
||||||
|
|
||||||
|
### Mettre à jour les logiciels installés
|
||||||
|
|
||||||
|
Synchronisez d'abord le dépôt local, puis recherchez les mises à jour disponibles :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sbopkg -r
|
||||||
|
# sbopkg -c
|
||||||
|
```
|
||||||
|
|
||||||
|
Créez ensuite une queue contenant les paquets à mettre à jour :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sqg -p "<paquet1 paquet2 paquet3>" -o updates
|
||||||
|
# sbopkg -i updates
|
||||||
|
```
|
||||||
|
|
||||||
|
`sqg` ajoute automatiquement les dépendances nécessaires et les place dans le bon ordre.
|
||||||
|
|
||||||
|
Le fichier `updates.sqf` peut être supprimé et recréé à chaque mise à jour.
|
||||||
|
|
||||||
|
> `sbopkg -c` signale des mises à jour potentielles. Consultez le `README` du SlackBuild si une version nécessite une procédure particulière.
|
||||||
|
|
||||||
|
## Outils supplémentaires
|
||||||
|
|
||||||
|
* [Ruby avec rbenv depuis SlackBuilds.org](docs/ruby.md)
|
||||||
|
* [Neovim pour Ruby depuis SlackBuilds.org](docs/neovim.md)
|
||||||
|
* [Docker depuis SlackBuilds.org](docs/docker.md)
|
||||||
|
* [virt-manager depuis SlackBuilds.org](docs/virt-manager.md)
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
* [Installation de Slackware](https://docs.slackware.com/slackware:install)
|
||||||
|
* [Guide du débutant Slackware](https://docs.slackware.com/slackware:beginners_guide)
|
||||||
|
* [Slackpkg](https://docs.slackware.com/slackware:slackpkg)
|
||||||
|
* [Localisation](https://docs.slackware.com/slackware:localization)
|
||||||
|
* [Configuration du clavier](https://docs.slackware.com/howtos:window_managers:keyboard_layout)
|
||||||
|
* [SlackBuilds.org pour Slackware 15.0](https://slackbuilds.org/repository/15.0/)
|
||||||
|
* [sbopkg](https://www.sbopkg.org/)
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
# Docker depuis SlackBuilds.org
|
||||||
|
|
||||||
|
> Nécessite `sbopkg`.
|
||||||
|
|
||||||
|
Commencez par générer la queue des dépendances :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sqg -p docker-cli
|
||||||
|
```
|
||||||
|
|
||||||
|
`docker-cli` dépend de `docker`. La queue ajoutera aussi ses dépendances, notamment `tini`, `containerd` et `runc`.
|
||||||
|
|
||||||
|
Lancez ensuite :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sbopkg -i docker-cli
|
||||||
|
```
|
||||||
|
|
||||||
|
Si `sbopkg` trouve à la fois le paquet et une queue du même nom, choisissez **Q** pour utiliser la queue et installer les dépendances dans le bon ordre.
|
||||||
|
|
||||||
|
Pour utiliser Docker sans passer directement par le compte `root`, créez le groupe recommandé par le SlackBuild et ajoutez-y votre utilisateur :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# groupadd -r -g 281 docker
|
||||||
|
# usermod -a -G docker <utilisateur>
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Important :** l'appartenance au groupe `docker` donne en pratique des privilèges équivalents à ceux de `root` sur la machine.
|
||||||
|
|
||||||
|
Rendez ensuite le service exécutable et démarrez-le :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# chmod +x /etc/rc.d/rc.docker
|
||||||
|
# /etc/rc.d/rc.docker start
|
||||||
|
```
|
||||||
|
|
||||||
|
Déconnectez-vous puis reconnectez-vous avant de tester :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ docker run hello-world
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour démarrer Docker automatiquement avec le système, ajoutez dans `/etc/rc.d/rc.local` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Docker
|
||||||
|
if [ -x /etc/rc.d/rc.docker ]; then
|
||||||
|
/etc/rc.d/rc.docker start
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
Éditez ensuite `/etc/rc.d/rc.local_shutdown` ; le fichier sera créé s'il n'existe pas :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# nvi /etc/rc.d/rc.local_shutdown
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis ajoutez :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Docker
|
||||||
|
if [ -x /etc/rc.d/rc.docker ]; then
|
||||||
|
/etc/rc.d/rc.docker stop
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
Enfin, rendez le script exécutable :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# chmod +x /etc/rc.d/rc.local_shutdown
|
||||||
|
```
|
||||||
|
|
||||||
|
[Retour au guide principal](../README.md)
|
||||||
+435
@@ -0,0 +1,435 @@
|
|||||||
|
# Neovim pour Ruby depuis SlackBuilds.org
|
||||||
|
|
||||||
|
> Nécessite `sbopkg`.
|
||||||
|
|
||||||
|
Neovim est un éditeur de texte modal dérivé de Vim. La configuration ci-dessous reste volontairement simple : Telescope est utilisé pour naviguer entre les fichiers et les buffers, `ripgrep` pour rechercher dans le projet, Grug Far pour rechercher et remplacer dans plusieurs fichiers, `nvim-autopairs` pour fermer automatiquement les paires, et le client LSP intégré de Neovim pour Ruby, la complétion et les signatures de méthodes.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Neovim est disponible sur SlackBuilds.org. Générez la queue des dépendances :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sqg -p neovim
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis lancez l'installation :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sbopkg -i neovim
|
||||||
|
```
|
||||||
|
|
||||||
|
Si `sbopkg` trouve à la fois le paquet et une queue du même nom, choisissez **Q** pour utiliser la queue et installer les dépendances dans le bon ordre.
|
||||||
|
|
||||||
|
Installez également `ripgrep`, utilisé par Telescope pour rechercher dans le projet :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sqg -p ripgrep
|
||||||
|
# sbopkg -i ripgrep
|
||||||
|
```
|
||||||
|
|
||||||
|
Sous Wayland, installez `wl-clipboard` pour permettre à Neovim d'utiliser le presse-papiers système :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sbopkg -i wl-clipboard
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour un affichage homogène des symboles, vous pouvez également installer JetBrains Mono Nerd Font :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sbopkg -i ttf-nerd-fonts-jetbrains-mono
|
||||||
|
```
|
||||||
|
|
||||||
|
La variante **JetBrainsMono Nerd Font Mono** est adaptée à l'affichage dans un terminal.
|
||||||
|
|
||||||
|
Vérifiez ensuite les installations :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ nvim --version
|
||||||
|
$ rg --version
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Créez le dossier de configuration :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ mkdir -p ~/.config/nvim
|
||||||
|
```
|
||||||
|
|
||||||
|
Créez ou éditez `~/.config/nvim/init.lua` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ nvi ~/.config/nvim/init.lua
|
||||||
|
```
|
||||||
|
|
||||||
|
Utilisez cette configuration :
|
||||||
|
|
||||||
|
```lua
|
||||||
|
-- Telescope remplace Netrw.
|
||||||
|
vim.g.loaded_netrw = 1
|
||||||
|
vim.g.loaded_netrwPlugin = 1
|
||||||
|
|
||||||
|
-- Leader
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
vim.g.maplocalleader = ","
|
||||||
|
|
||||||
|
-- Affichage
|
||||||
|
vim.opt.number = true
|
||||||
|
vim.opt.signcolumn = "yes"
|
||||||
|
vim.opt.cursorline = true
|
||||||
|
vim.opt.splitkeep = "screen"
|
||||||
|
vim.opt.splitright = true
|
||||||
|
vim.opt.splitbelow = true
|
||||||
|
vim.opt.shortmess:append("I")
|
||||||
|
vim.opt.winborder = "rounded"
|
||||||
|
vim.cmd.colorscheme("retrobox")
|
||||||
|
|
||||||
|
-- Apparence homogène des menus et fenêtres flottantes.
|
||||||
|
vim.api.nvim_set_hl(0, "NormalFloat", { link = "Pmenu" })
|
||||||
|
vim.api.nvim_set_hl(0, "FloatBorder", { link = "PmenuBorder" })
|
||||||
|
vim.api.nvim_set_hl(0, "TelescopeNormal", { link = "Pmenu" })
|
||||||
|
vim.api.nvim_set_hl(0, "TelescopeBorder", { link = "PmenuBorder" })
|
||||||
|
vim.api.nvim_set_hl(0, "TelescopeSelection", { link = "PmenuSel" })
|
||||||
|
|
||||||
|
-- Indentation
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.shiftwidth = 2
|
||||||
|
vim.opt.tabstop = 2
|
||||||
|
|
||||||
|
-- Presse-papiers système
|
||||||
|
vim.opt.clipboard = "unnamedplus"
|
||||||
|
|
||||||
|
-- Autocomplétion de la ligne de commande
|
||||||
|
vim.opt.wildmode = "noselect:lastused,full"
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("CmdlineChanged", {
|
||||||
|
pattern = { ":", "/", "?" },
|
||||||
|
callback = function()
|
||||||
|
vim.fn.wildtrigger()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Plugins
|
||||||
|
vim.pack.add({
|
||||||
|
"https://github.com/nvim-lua/plenary.nvim",
|
||||||
|
"https://github.com/MagicDuck/grug-far.nvim",
|
||||||
|
"https://github.com/windwp/nvim-autopairs",
|
||||||
|
{
|
||||||
|
src = "https://github.com/nvim-telescope/telescope.nvim",
|
||||||
|
version = "v0.2.1",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Auto-fermeture des paires
|
||||||
|
local npairs = require("nvim-autopairs")
|
||||||
|
|
||||||
|
npairs.setup({
|
||||||
|
map_cr = false,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Telescope
|
||||||
|
local builtin = require("telescope.builtin")
|
||||||
|
|
||||||
|
require("telescope").setup({
|
||||||
|
defaults = {
|
||||||
|
preview = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<Leader>f", builtin.find_files, {
|
||||||
|
desc = "Files",
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<Leader>b", builtin.buffers, {
|
||||||
|
desc = "Buffers",
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<Leader>g", builtin.live_grep, {
|
||||||
|
desc = "Grep",
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<Leader>w", builtin.grep_string, {
|
||||||
|
desc = "Word",
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<Leader>l", builtin.resume, {
|
||||||
|
desc = "Last search",
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<Leader>d", builtin.diagnostics, {
|
||||||
|
desc = "Diagnostics",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Grug Far
|
||||||
|
vim.keymap.set({ "n", "x" }, "<Leader>r", function()
|
||||||
|
require("grug-far").open()
|
||||||
|
end, {
|
||||||
|
desc = "Replace",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Ouvre Telescope au démarrage sauf si un fichier est explicitement ouvert.
|
||||||
|
vim.api.nvim_create_autocmd("VimEnter", {
|
||||||
|
once = true,
|
||||||
|
callback = function()
|
||||||
|
local argc = vim.fn.argc()
|
||||||
|
|
||||||
|
if argc == 1 and vim.fn.isdirectory(vim.fn.argv(0)) == 1 then
|
||||||
|
vim.api.nvim_set_current_dir(vim.fn.fnamemodify(vim.fn.argv(0), ":p"))
|
||||||
|
vim.cmd.enew()
|
||||||
|
elseif argc > 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
builtin.find_files()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Ruby LSP
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
|
||||||
|
-- Active la surveillance des fichiers par Ruby LSP sous Linux.
|
||||||
|
capabilities.workspace.didChangeWatchedFiles.dynamicRegistration = true
|
||||||
|
|
||||||
|
vim.lsp.config("ruby_lsp", {
|
||||||
|
cmd = { "ruby-lsp" },
|
||||||
|
filetypes = { "ruby" },
|
||||||
|
root_markers = { "Gemfile", ".git" },
|
||||||
|
capabilities = capabilities,
|
||||||
|
-- Contournement temporaire pour Ruby LSP 0.26.11 : dans un projet Ruby
|
||||||
|
-- plat, Ruby Indexer peut construire le motif {}/**/*.rb et indexer un
|
||||||
|
-- même fichier sous deux chemins différents. Cette exclusion neutralise
|
||||||
|
-- uniquement ce motif ; les fichiers Ruby restent indexés normalement.
|
||||||
|
init_options = {
|
||||||
|
indexing = {
|
||||||
|
excludedPatterns = { "{}/**/*.rb" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.enable("ruby_lsp")
|
||||||
|
|
||||||
|
-- Complétion Ruby LSP
|
||||||
|
vim.opt.completeopt = { "menuone", "noselect" }
|
||||||
|
vim.opt.pumheight = 8
|
||||||
|
vim.opt.pumwidth = 36
|
||||||
|
vim.opt.pummaxwidth = 72
|
||||||
|
vim.opt.pumborder = "rounded"
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
|
callback = function(event)
|
||||||
|
local client = vim.lsp.get_client_by_id(event.data.client_id)
|
||||||
|
if client and client:supports_method("textDocument/completion") then
|
||||||
|
vim.lsp.completion.enable(true, client.id, event.buf)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("InsertCharPre", {
|
||||||
|
callback = function()
|
||||||
|
vim.lsp.completion.get()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set("i", "<Tab>", function()
|
||||||
|
if vim.fn.pumvisible() == 1 then
|
||||||
|
local selected = vim.fn.complete_info({ "selected" }).selected
|
||||||
|
if selected == -1 then
|
||||||
|
return "<C-n><C-y>"
|
||||||
|
end
|
||||||
|
return "<C-y>"
|
||||||
|
end
|
||||||
|
return "<Tab>"
|
||||||
|
end, { expr = true })
|
||||||
|
|
||||||
|
vim.keymap.set("i", "<CR>", function()
|
||||||
|
if vim.fn.pumvisible() == 1 then
|
||||||
|
local selected = vim.fn.complete_info({ "selected" }).selected
|
||||||
|
if selected ~= -1 then
|
||||||
|
return npairs.esc("<C-y>")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return npairs.autopairs_cr()
|
||||||
|
end, {
|
||||||
|
expr = true,
|
||||||
|
replace_keycodes = false,
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
Le bloc `init_options` contient un contournement temporaire pour Ruby LSP 0.26.11 : dans certains petits projets Ruby plats, Ruby Indexer peut construire le motif `{}/**/*.rb` et indexer un même fichier sous deux chemins différents. Cette exclusion neutralise uniquement ce motif ; les fichiers Ruby restent indexés normalement. Lorsque le problème sera corrigé dans Ruby LSP/Ruby Indexer, le bloc `init_options` pourra être retiré.
|
||||||
|
|
||||||
|
Neovim gère les plugins avec `vim.pack`. `plenary.nvim` est une dépendance de Telescope, `nvim-autopairs` ferme automatiquement les parenthèses, crochets, accolades et guillemets, et Grug Far utilise `ripgrep` pour la recherche et le remplacement. La complétion Ruby, les signatures de méthodes et la navigation LSP utilisent directement les fonctions intégrées à Neovim, sans plugin de complétion supplémentaire.
|
||||||
|
|
||||||
|
Le réglage `vim.opt.clipboard = "unnamedplus"` relie le registre par défaut de Neovim au presse-papiers système. Sous Wayland, Neovim utilise `wl-copy` et `wl-paste` fournis par `wl-clipboard`. Vous pouvez vérifier le fournisseur détecté avec :
|
||||||
|
|
||||||
|
```text
|
||||||
|
:checkhealth vim.provider
|
||||||
|
```
|
||||||
|
|
||||||
|
La section `Clipboard` doit indiquer qu'un outil de presse-papiers a été trouvé.
|
||||||
|
|
||||||
|
### Mise à jour des plugins
|
||||||
|
|
||||||
|
Pour rechercher les nouvelles versions des plugins gérés par `vim.pack` :
|
||||||
|
|
||||||
|
```text
|
||||||
|
:packupdate
|
||||||
|
```
|
||||||
|
|
||||||
|
Vérifiez les changements proposés, puis utilisez `:write` pour les accepter. Pour contrôler l'état du gestionnaire de plugins :
|
||||||
|
|
||||||
|
```text
|
||||||
|
:checkhealth vim.pack
|
||||||
|
```
|
||||||
|
|
||||||
|
## Ruby
|
||||||
|
|
||||||
|
### Ruby LSP
|
||||||
|
|
||||||
|
Installez `ruby-lsp` avec le Ruby utilisé par votre environnement :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ gem install ruby-lsp
|
||||||
|
```
|
||||||
|
|
||||||
|
Vérifiez ensuite le client LSP dans Neovim :
|
||||||
|
|
||||||
|
```text
|
||||||
|
:checkhealth vim.lsp
|
||||||
|
```
|
||||||
|
|
||||||
|
### RuboCop
|
||||||
|
|
||||||
|
Installez RuboCop avec le Ruby utilisé par votre environnement :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ gem install rubocop
|
||||||
|
```
|
||||||
|
|
||||||
|
Vérifiez son installation :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ rubocop -V
|
||||||
|
```
|
||||||
|
|
||||||
|
Créez `~/.rubocop.yml` pour activer automatiquement les nouvelles règles ajoutées comme `pending` par RuboCop :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ nvi ~/.rubocop.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
Ajoutez ensuite :
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
AllCops:
|
||||||
|
NewCops: enable
|
||||||
|
```
|
||||||
|
|
||||||
|
RuboCop est utilisé manuellement pour mettre en forme le code et effectuer des vérifications ciblées.
|
||||||
|
|
||||||
|
Pour appliquer uniquement les règles de mise en forme à l'ensemble du projet :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ rubocop --only Layout -A
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour afficher uniquement les remarques de style :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ rubocop --only Style --format simple
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour rechercher les ambiguïtés et erreurs potentielles signalées par les règles `Lint` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ rubocop --lint --format simple
|
||||||
|
```
|
||||||
|
|
||||||
|
## Utilisation
|
||||||
|
|
||||||
|
Placez-vous dans le dossier du projet et lancez Neovim :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ cd ~/src/projet
|
||||||
|
$ nvim .
|
||||||
|
```
|
||||||
|
|
||||||
|
Sans fichier explicitement indiqué, Telescope s'ouvre directement. Si un fichier est passé sur la ligne de commande, Neovim l'ouvre normalement :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ nvim lib/game.rb
|
||||||
|
```
|
||||||
|
|
||||||
|
Les commandes suivantes suffisent pour commencer :
|
||||||
|
|
||||||
|
| Commande | Action |
|
||||||
|
| --- | --- |
|
||||||
|
| `i` | Passer en mode insertion |
|
||||||
|
| `Esc` | Revenir en mode normal |
|
||||||
|
| `v` | Commencer une sélection visuelle |
|
||||||
|
| `y` (mode visuel) | Copier la sélection dans le presse-papiers système |
|
||||||
|
| `yy` | Copier la ligne courante dans le presse-papiers système |
|
||||||
|
| `p` | Coller depuis le presse-papiers système |
|
||||||
|
| `:w` | Enregistrer |
|
||||||
|
| `:q` | Quitter |
|
||||||
|
| `Space f` | Rechercher et ouvrir un fichier du projet |
|
||||||
|
| `Space b` | Afficher les buffers ouverts |
|
||||||
|
| `Space g` | Rechercher du texte dans le projet avec `ripgrep` |
|
||||||
|
| `Space w` | Rechercher dans le projet le mot sous le curseur |
|
||||||
|
| `Space l` | Reprendre la dernière vue Telescope |
|
||||||
|
| `Space d` | Afficher les diagnostics connus par Neovim avec Telescope |
|
||||||
|
| `Space r` | Ouvrir Grug Far pour rechercher et remplacer |
|
||||||
|
| `Ctrl-]` | Aller à la définition |
|
||||||
|
| `Ctrl-t` | Revenir après un saut vers une définition |
|
||||||
|
| `Ctrl-s` | Afficher la signature de la méthode en mode insertion (raccourci LSP natif) |
|
||||||
|
| `Tab` | Accepter la proposition sélectionnée, ou la première proposition si aucune ne l'est |
|
||||||
|
| `Entrée` | Accepter la proposition sélectionnée, sinon insérer une nouvelle ligne |
|
||||||
|
| `u` | Annuler |
|
||||||
|
|
||||||
|
### Grug Far
|
||||||
|
|
||||||
|
`Space r` ouvre Grug Far dans un split vertical. En mode visuel, la sélection courante est utilisée pour préremplir le texte recherché.
|
||||||
|
|
||||||
|
Les raccourcis principaux dans Grug Far sont :
|
||||||
|
|
||||||
|
| Commande | Action |
|
||||||
|
| --- | --- |
|
||||||
|
| `,r` | Appliquer le remplacement |
|
||||||
|
| `,c` | Fermer Grug Far |
|
||||||
|
| `Entrée` | Ouvrir l'emplacement du résultat sous le curseur |
|
||||||
|
|
||||||
|
La virgule correspond ici à `<localleader>`, défini dans la configuration avec `vim.g.maplocalleader = ","`.
|
||||||
|
|
||||||
|
Pour vérifier l'installation ou diagnostiquer un problème :
|
||||||
|
|
||||||
|
```text
|
||||||
|
:checkhealth grug-far
|
||||||
|
```
|
||||||
|
|
||||||
|
Dans Telescope :
|
||||||
|
|
||||||
|
| Commande | Action |
|
||||||
|
| --- | --- |
|
||||||
|
| `Ctrl-n` ou `↓` | Résultat suivant |
|
||||||
|
| `Ctrl-p` ou `↑` | Résultat précédent |
|
||||||
|
| `Entrée` | Ouvrir le résultat |
|
||||||
|
| `Ctrl-v` | Ouvrir dans un split vertical |
|
||||||
|
| `Ctrl-x` | Ouvrir dans un split horizontal |
|
||||||
|
| `Ctrl-t` | Ouvrir dans un nouvel onglet |
|
||||||
|
| `Ctrl-c` | Fermer Telescope |
|
||||||
|
|
||||||
|
La ligne de commande de Neovim propose automatiquement les complétions lorsque vous saisissez une commande après `:`.
|
||||||
|
|
||||||
|
## Ignorer des fichiers du projet
|
||||||
|
|
||||||
|
Pour masquer certains fichiers ou dossiers dans les recherches de Telescope sans modifier `.gitignore`, créez un fichier `.rgignore` à la racine du projet. Cette règle reste propre aux recherches locales et ne change pas les fichiers suivis par Git.
|
||||||
|
|
||||||
|
Par exemple, pour ignorer le dossier `doc/` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ printf 'doc/\n' > .rgignore
|
||||||
|
```
|
||||||
|
|
||||||
|
`ripgrep` prendra ce fichier en compte pour les recherches effectuées par Telescope lorsqu'il est utilisé comme moteur de recherche.
|
||||||
|
|
||||||
|
[Retour au guide principal](../README.md)
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
# Après l'installation
|
||||||
|
|
||||||
|
Quelques rappels correspondant à ma configuration et à mes usages habituels après une nouvelle installation sur une station de travail KDE Plasma. Ces étapes ne sont pas nécessaires dans tous les cas.
|
||||||
|
|
||||||
|
## Configuration de Plasma
|
||||||
|
|
||||||
|
Dans SDDM, sélectionnez la session **Plasma (Wayland)** avant de vous connecter.
|
||||||
|
|
||||||
|
Quelques réglages correspondant à mes préférences habituelles dans **Configuration du système** :
|
||||||
|
|
||||||
|
* **Apparence** → **Thème global** : sélectionner **Breeze sombre** ;
|
||||||
|
* **Matériel** → **Affichage et écran** → **Couleur de nuit** : cocher **Activer la couleur de nuit** ;
|
||||||
|
* **Matériel** → **Périphériques d'entrée** → **Clavier** → **Dispositions** : activer **Configurer les dispositions**, puis ajouter **Français** ;
|
||||||
|
* **Espace de travail** → **Comportement de l'espace de travail** → **Bords de l'écran** : désactiver les actions configurées dans les coins ;
|
||||||
|
* **Espace de travail** → **Comportement de l'espace de travail** → **Comportement général** : pour **Cliquer sur des fichiers ou des dossiers**, choisir **Les sélectionne** afin d'utiliser un clic pour sélectionner et un double-clic pour ouvrir ;
|
||||||
|
* **Espace de travail** → **Comportement de l'espace de travail** → **Bureaux virtuels** : ajouter un deuxième bureau et le nommer **Bureau 2**.
|
||||||
|
|
||||||
|
Et également dans l'émulateur de terminal **Konsole** → **Configuration** : désactiver **Afficher la barre de menus**.
|
||||||
|
|
||||||
|
## Icône Slackware pour le menu Plasma
|
||||||
|
|
||||||
|
Depuis la racine du dépôt, installez le fichier `slackware.svg` dans les icônes système :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# mkdir -p /usr/local/share/icons
|
||||||
|
# cp slackware.svg /usr/local/share/icons/slackware.svg
|
||||||
|
```
|
||||||
|
|
||||||
|
Dans Plasma, éditez ensuite le lanceur d'applications et choisissez `/usr/local/share/icons/slackware.svg` comme icône.
|
||||||
|
|
||||||
|
## KMix
|
||||||
|
|
||||||
|
Faites un clic droit sur l'icône de volume de KMix, puis ouvrez **Configurer KMix** → **Démarrage** et décochez **Démarrer KMix au démarrage du bureau**.
|
||||||
|
|
||||||
|
Faites ensuite de nouveau un clic droit sur l'icône de KMix et choisissez **Quitter**.
|
||||||
|
|
||||||
|
## HPLIP Systray
|
||||||
|
|
||||||
|
Pour empêcher l'applet HPLIP de se lancer avec Plasma :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ mkdir -p ~/.config/autostart
|
||||||
|
$ cp /etc/xdg/autostart/hplip-systray.desktop ~/.config/autostart/
|
||||||
|
$ echo 'Hidden=true' >> ~/.config/autostart/hplip-systray.desktop
|
||||||
|
```
|
||||||
|
|
||||||
|
Cette modification désactive uniquement l'icône de la zone de notification pour l'utilisateur courant. Elle prend effet après reconnexion.
|
||||||
|
|
||||||
|
## SSH
|
||||||
|
|
||||||
|
Copiez les clés SSH dans `~/.ssh` en respectant les droits suivants :
|
||||||
|
|
||||||
|
```text
|
||||||
|
[drwx------] ~/.ssh/
|
||||||
|
├── [-rw-------] id_ed25519
|
||||||
|
└── [-rw-r--r--] id_ed25519.pub
|
||||||
|
```
|
||||||
|
|
||||||
|
Si nécessaire :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ chmod 700 ~/.ssh
|
||||||
|
$ chmod 600 ~/.ssh/id_ed25519
|
||||||
|
$ chmod 644 ~/.ssh/id_ed25519.pub
|
||||||
|
```
|
||||||
|
|
||||||
|
> Les droits de la clé privée doivent être correctement définis pour qu'OpenSSH l'accepte.
|
||||||
|
|
||||||
|
## Git
|
||||||
|
|
||||||
|
Configurez votre nom et votre adresse e-mail :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ git config --global user.name "John Doe"
|
||||||
|
$ git config --global user.email johndoe@example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour vérifier la configuration :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ git config --global --list
|
||||||
|
```
|
||||||
|
|
||||||
|
## KeePassXC
|
||||||
|
|
||||||
|
> Nécessite `sbopkg`.
|
||||||
|
|
||||||
|
Installez KeePassXC et ses dépendances :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sqg -p keepassxc
|
||||||
|
# sbopkg -i keepassxc
|
||||||
|
```
|
||||||
|
|
||||||
|
Si `sbopkg` trouve à la fois le paquet et une queue du même nom, choisissez **Q** pour utiliser la queue et installer les dépendances dans le bon ordre.
|
||||||
|
|
||||||
|
Pensez ensuite à copier la base de données KeePassXC.
|
||||||
|
|
||||||
|
Et pour finir, assurez-vous qu'elle n'est visible que par votre utilisateur :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ chmod 600 ~/<bd-keepassxc>
|
||||||
|
```
|
||||||
|
|
||||||
|
[Retour au guide principal](../README.md)
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
# Ruby avec rbenv depuis SlackBuilds.org
|
||||||
|
|
||||||
|
> Nécessite `sbopkg`.
|
||||||
|
|
||||||
|
Slackware 15.0 fournit Ruby 3.0.7. Si vous souhaitez utiliser une version plus récente sans remplacer le paquet système, installez `rbenv` et `ruby-build` depuis SlackBuilds.org :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sbopkg -i rbenv
|
||||||
|
# sbopkg -i ruby-build
|
||||||
|
```
|
||||||
|
|
||||||
|
Initialisez ensuite `rbenv` pour votre shell :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ rbenv init
|
||||||
|
```
|
||||||
|
|
||||||
|
La commande ajoute automatiquement l'initialisation nécessaire au fichier de démarrage de Bash. Déconnectez-vous puis reconnectez-vous à votre session pour prendre en compte la modification.
|
||||||
|
|
||||||
|
Vérifiez que les outils sont bien disponibles :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ rbenv --version
|
||||||
|
$ ruby-build --version
|
||||||
|
```
|
||||||
|
|
||||||
|
Vous pouvez maintenant afficher les versions de Ruby disponibles :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ rbenv install -l
|
||||||
|
```
|
||||||
|
|
||||||
|
Installez ensuite celle que vous souhaitez utiliser, par exemple :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ rbenv install 4.0.7
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour en faire la version par défaut pour votre utilisateur :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ rbenv global 4.0.7
|
||||||
|
```
|
||||||
|
|
||||||
|
## Vérification
|
||||||
|
|
||||||
|
Vérifiez enfin la version utilisée :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ ruby -v
|
||||||
|
$ command -v ruby
|
||||||
|
```
|
||||||
|
|
||||||
|
Avec `rbenv` actif, `ruby` doit normalement pointer vers :
|
||||||
|
|
||||||
|
```text
|
||||||
|
/home/<utilisateur>/.rbenv/shims/ruby
|
||||||
|
```
|
||||||
|
|
||||||
|
Le Ruby fourni par Slackware reste installé dans `/usr/bin/ruby`. `rbenv` ne remplace pas le paquet système : il place simplement ses propres *shims* en tête du `PATH` pour le shell de l'utilisateur.
|
||||||
|
|
||||||
|
Pour vérifier séparément la version système :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ /usr/bin/ruby -v
|
||||||
|
```
|
||||||
|
|
||||||
|
[Retour au guide principal](../README.md)
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
# virt-manager depuis SlackBuilds.org
|
||||||
|
|
||||||
|
> Nécessite `sbopkg`.
|
||||||
|
|
||||||
|
Pour utiliser virt-manager avec QEMU/KVM, installez **QEMU** en plus de virt-manager : `qemu` n'est pas une dépendance déclarée de `virt-manager`.
|
||||||
|
|
||||||
|
Commencez par générer les queues de dépendances :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sqg -p qemu
|
||||||
|
# sqg -p virt-manager
|
||||||
|
```
|
||||||
|
|
||||||
|
Installez d'abord QEMU :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sbopkg -i qemu
|
||||||
|
```
|
||||||
|
|
||||||
|
Si `sbopkg` trouve à la fois le paquet et une queue du même nom, choisissez **Q** pour utiliser la queue et installer les dépendances dans le bon ordre. Faites ensuite la même chose pour virt-manager :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# sbopkg -i virt-manager
|
||||||
|
```
|
||||||
|
|
||||||
|
Avec les options par défaut des SlackBuilds, `libvirt` et QEMU utilisent le groupe `users`. Pour permettre à un utilisateur normal d'utiliser virt-manager, décommentez ou réglez dans `/etc/libvirt/libvirtd.conf` :
|
||||||
|
|
||||||
|
```text
|
||||||
|
unix_sock_group = "users"
|
||||||
|
unix_sock_rw_perms = "0770"
|
||||||
|
```
|
||||||
|
|
||||||
|
L'utilisateur doit bien sûr appartenir au groupe choisi.
|
||||||
|
|
||||||
|
Rendez ensuite le service exécutable et démarrez-le :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# chmod +x /etc/rc.d/rc.libvirt
|
||||||
|
# /etc/rc.d/rc.libvirt start
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour démarrer libvirt automatiquement avec le système, ajoutez dans `/etc/rc.d/rc.local` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Libvirt
|
||||||
|
if [ -x /etc/rc.d/rc.libvirt ]; then
|
||||||
|
/etc/rc.d/rc.libvirt start
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
Éditez ensuite `/etc/rc.d/rc.local_shutdown` ; le fichier sera créé s'il n'existe pas :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# nvi /etc/rc.d/rc.local_shutdown
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis ajoutez :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Libvirt
|
||||||
|
if [ -x /etc/rc.d/rc.libvirt ]; then
|
||||||
|
/etc/rc.d/rc.libvirt stop
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
Enfin, rendez le script exécutable :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# chmod +x /etc/rc.d/rc.local_shutdown
|
||||||
|
```
|
||||||
|
|
||||||
|
> `rc.libvirt stop` effectue par défaut un `managedsave` des machines virtuelles encore actives. Prévoyez donc suffisamment d'espace disque pour sauvegarder leur mémoire.
|
||||||
|
|
||||||
|
[Retour au guide principal](../README.md)
|
||||||
+145
@@ -0,0 +1,145 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://web.resource.org/cc/"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="64px"
|
||||||
|
height="64px"
|
||||||
|
id="svg2160"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.45"
|
||||||
|
sodipodi:docbase="/home/john/Desktop/slackwaresvg"
|
||||||
|
sodipodi:docname="slackware.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
sodipodi:modified="true">
|
||||||
|
<defs
|
||||||
|
id="defs2162">
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="linearGradient5027">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop5029" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop5031" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="linearGradient3141">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000000;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3143" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000000;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3145" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3141"
|
||||||
|
id="linearGradient3147"
|
||||||
|
x1="2.363636"
|
||||||
|
y1="32.363636"
|
||||||
|
x2="61.454544"
|
||||||
|
y2="32.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient5027"
|
||||||
|
id="linearGradient5033"
|
||||||
|
x1="32"
|
||||||
|
y1="-29.818182"
|
||||||
|
x2="32.636364"
|
||||||
|
y2="33.272728"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient5027"
|
||||||
|
id="linearGradient12051"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="35.931786"
|
||||||
|
y1="-27.919043"
|
||||||
|
x2="35.546909"
|
||||||
|
y2="19.087839" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="11.313708"
|
||||||
|
inkscape:cx="34.941429"
|
||||||
|
inkscape:cy="38.781249"
|
||||||
|
inkscape:current-layer="layer2"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1270"
|
||||||
|
inkscape:window-height="930"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="24" />
|
||||||
|
<metadata
|
||||||
|
id="metadata2165">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<path
|
||||||
|
sodipodi:type="arc"
|
||||||
|
style="fill:#8389fc;fill-opacity:1;stroke:url(#linearGradient3147);stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path2168"
|
||||||
|
sodipodi:cx="31.90909"
|
||||||
|
sodipodi:cy="32.363636"
|
||||||
|
sodipodi:rx="29.545454"
|
||||||
|
sodipodi:ry="29.09091"
|
||||||
|
d="M 61.454544 32.363636 A 29.545454 29.09091 0 1 1 2.363636,32.363636 A 29.545454 29.09091 0 1 1 61.454544 32.363636 z"
|
||||||
|
transform="matrix(-8.7265346e-3,-0.9999618,0.9999618,-8.7265346e-3,-0.1748581,64.553932)" />
|
||||||
|
<path
|
||||||
|
style="font-size:64px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
d="M 18.658909,41.548364 C 18.658909,43.532362 19.49091,44.556364 20.962909,44.556364 C 21.666908,44.556364 22.69091,44.044363 24.162909,43.084364 C 27.682905,43.980364 30.818912,44.492364 33.634909,44.492364 C 41.442901,44.492364 45.858909,40.588359 45.858909,35.212364 C 45.858909,29.068371 41.570901,26.636364 33.314909,26.444364 C 27.170915,26.316365 23.586909,25.996361 23.586909,22.668364 C 23.586909,20.172367 25.954913,18.060364 30.114909,18.060364 C 33.378906,18.060364 35.682911,18.828367 38.050909,20.940364 C 39.906907,22.604363 40.54691,24.204364 41.954909,24.204364 C 43.490907,24.204364 44.066909,23.116362 44.066909,21.068364 L 44.066909,17.420364 C 44.066909,15.308367 43.362908,14.284364 41.954909,14.284364 C 40.290911,14.284364 39.650908,15.500364 38.754909,15.500364 C 37.85891,15.500364 35.362904,14.092364 30.818909,14.092364 C 23.074917,14.092364 18.786909,17.67637 18.786909,22.860364 C 18.786909,28.428359 23.330918,31.500364 31.842909,31.500364 C 32.738908,31.500364 33.314909,31.500364 33.634909,31.500364 C 38.370904,31.500364 40.674909,32.396368 40.674909,35.596364 C 40.674909,38.412362 37.858904,40.460364 33.314909,40.460364 C 29.090913,40.460364 25.506907,38.924362 23.842909,36.748364 C 22.62691,35.148366 22.818907,33.420364 20.898909,33.420364 C 19.234911,33.420364 18.658909,34.316366 18.658909,35.980364 L 18.658909,41.548364"
|
||||||
|
id="text5071" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 15.052467,41.756279 L 14.948385,49.210097 L 49.95132,49.244272"
|
||||||
|
id="path5093" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 49.94457,50.251172 L 13.941099,50.248483 L 14.059778,41.749312 L 16.059582,41.777235 L 15.975809,47.776652 L 15.969463,48.231152 L 49.972496,48.251365 L 49.94457,50.251172 z "
|
||||||
|
id="path10031" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2">
|
||||||
|
<path
|
||||||
|
sodipodi:type="arc"
|
||||||
|
style="fill:url(#linearGradient12051);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path5025"
|
||||||
|
sodipodi:cx="32.636364"
|
||||||
|
sodipodi:cy="5.6363635"
|
||||||
|
sodipodi:rx="36.636364"
|
||||||
|
sodipodi:ry="27.636364"
|
||||||
|
d="M 69.272728 5.6363635 A 36.636364 27.636364 0 1 1 -4,5.6363635 A 36.636364 27.636364 0 1 1 69.272728 5.6363635 z"
|
||||||
|
transform="matrix(0.6687345,0,0,0.7446098,10.11688,19.224801)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 6.7 KiB |
Reference in new issue
Block a user