volted.net

A blog about openSUSE and free thoughts

Nouvelles d'openSUSE Tumbleweed - Semaine 50

December 17, 2018 — sogal

Au cours de la semaine 50/2018, Tumbleweed a reçu 4 instantanés: 1206, 1208, 1211 et 1212. Les principales modifications concernent les paquets suivants :

  • Noyau Linux 4.19.7
  • Ruby Rails 5.2.1.1 (modifications liées à CVE)
  • Guile 2.2.4, mis à jour depuis la branche 2.0
  • util-linux 2.33
  • Mise à jour du thème XFCE4, comme annoncé dans la liste de diffusion.

Il reste toutefois quelques « gros morceaux » en attente, même si certains font des progrès mineurs :

  • glibc 2.28, Python 3.7, openssl 1.1.1 : le principal paquet bloquant, qui empêchait les paquets en attente de construire, a pû être identifié (perl5.28 provoquait une boucle sans fin dans makeinfo lors de l'exécution). La zone de staging est encore loin d’être prête, Python 3.7 étant notoirement incompatible avec Salt.
  • Mesa 18.3
  • LLVM7: échec de la construction de Rust avec LLVM7
  • Nouvelle design de l'installateur : la barre latérale revient (indiquant où se trouve actuellement le flux de travail d'installation)
  • PostgreSQL 11
  • Noyau Linux 4.19.8
  • Perl 5.28
  • Qt 5.12.0
  • Applications KDE 18.12.0

On dirait que la liste des changements en attente s'allonge de semaine en semaine, en partie du fait que de plus en plus de développeurs semblent, et c'est bien normal, occupés à préparer leurs vacances. Mais il y a en encore bien assez pour que Tumbleweed continue de rouler ! :)

Tags: opensuse

Astuce : connexion VNC over SSH

December 14, 2018 — sogal

Aujourd'hui juste une petite astuce, ou un rappel pour certains, sur la façon de sécuriser une connexion VNC grâce à l'usage d'un tunnel SSH.

Dans ce post, je suppose que vous avez déjà une connexion SSH fonctionnelle entre votre poste et la machine cible (celle qui exécute le serveur VNC). Cela peut être réalisé très simplement via la commande suivante :

ssh -f -L 5901:localhost:5901 machine.domain.tld sleep 10 ; vncviewer-tigervnc 127.0.0.1:5901

Si on décompose la commande, cela donne :

  • -f : on demande à SSH d'exécuter la commande qu'on va lui passer en arrière-plan, ce qui évite une coupure du flux et nous permet d'exécuter le client VNC par la suite ;
  • -L 5901:localhost:5901 : on va rediriger les connexions s'effectuant sur la machin client et sur le port 5901 vers le port 5901 de la machine distante ;
  • machine.domain.tld : la machine distante, qui exécute le serveur VNC ;
  • sleep 10 : la commande à faire exécuter sur la machine distante, cela nous permet de conserver la connexion ouverte car l'option -f requiert forcément une commande à passer en arrière-plan. Et comme on va lancer notre client VNC dans la foulée, il y aura toujours un flux de données et la connexion sera maintenue. En revanche, si le client VNC est fermée, la connexion se fermera au bout de 10 secondes ;
  • vncviewer-tigervnc 127.0.0.1:5901 : on connecte le client VNC sur le port local 5901, connexion que SSH va rediriger vers le port 5901 distant, comme indiqué ci-dessus.

Si l'on ne veut pas que le serveur VNC tourne en permanence sur la machine distante, on pourrait même imaginer ajouter une pré-commande du type :

ssh machine.domain.tld vncserver :1

Puis une post-commande pour terminer le serveur VNC une fois qu'on a fini :

ssh machine.domain.tld vncserver -kill :1

Tags: tips

Partition utilisateur dans un volume btrfs

December 12, 2018 — sogal

btrfs est un système de fichier moderne, donné pour être le remplaçant du veillissant, mais toujours très fiable et très utilisé, ext4. Il est le choix de base de la proposition de partitionnement par défaut lors de l'installation d'openSUSE pour la partition racine. La partition /home, si l'utilisateur fait le choix d'en créer une séparée, est en xfs.

On a entendu beaucoup de chose sur l'usage (ou le mésusage selon les cas) de btrfs avec notamment des problèmes dûs aux scripts de maintenance (présents dans /usr/share/btrfsmaintenance/ et lancés par leur timers systemd respectifs). Il faut reconnaître que les opérations de scrub et de balance des blocs ralentissent, parfois, considérablement le système durant un instant. Et plus on attend pour le faire (ex. d'un système n'étant pas utilisé souvent et, à chaque utilisation, recevant une grande quantité de données sur le disque), plus il y a de travail à faire et cela peut durer jusqu'à 5 minutes, durant lequel la machine est très ralentie, voire peut apparaître bloquée. Je ne vais pas revenir là-dessus, ce sujet a été abordé maintes fois à grand coup de trolls, de mauvaise foi et d'arguments non factuels à plusieurs endroits.

Dans ce billet, je voudrais juste partager un retour d'expérience, positif, sur l'usage de btrfs non seulement sur la partition racine, mais également dans ma partition /home. En effet, j'ai décidé il y a plusieurs semaines de convertir ma partition xfs (proposition de base de l'installeur openSUSE) en btrfs afin de profiter des snapshots.

Pour ce faire, j'ai commencé par passer en runlevel 3 :

init 3

J'ai fait une sauvegarde de mon /home actuel sur un disque externe :

rsync -arv --progress /home/ /run/media/user/DISK_BACKUP/

Ceci fait, j'ai démonté mon /home :

umount /home

Puis formater la partition en btrfs. Notez ici que si ça avait un système de fichier de type ext2/3/4 ou reiserfs, j'aurai pu tout simplement le convertir en btrfs, sans perte de données, via la commande btrfs-convert -p -l home /dev/partition_home. Pour formater la partition donc :

mkfs.btrfs -L home /dev/partition_home

Ceci fait, ne pas omettre de modifier le /etc/fstab pour refléter le changement de système de fichier. J'ai ensuite créé un sous-volume btrfs au nom de mon utilisateur :

btrfs subvolume create /home/user

Dans lequel j'ai activé les snapshots, but de toute l'opération :

snapper -c home create-config /home/user

Ceci va me créer une configuration pour snapper, l'utilitaire en charge de gérer la création et la suppression des snapshots, dans /etc/snapper/configs/home que j'ai adapté à mes besoins comme suit :

# nom du sous-volume dont il faut prendre un instantané
SUBVOLUME="/home/user"

# type du système de fichier
FSTYPE="btrfs"

# btrfs qgroup for space aware cleanup algorithms
QGROUP=""

# part du système de fichier que les instantanés peuvent utiliser
SPACE_LIMIT="0.5"

# utilisateurs et groupes autorisés à faire usage de cette configuration
ALLOW_USERS="user"
ALLOW_GROUPS=""

# synchroniser les droits des utilisateurs et les groupes définis ci-dessus
# avec le répertoire .snapshots
SYNC_ACL="yes"

# démarrer la comparaison des snapshots -pre et -post en arrière-plan après
# la création du snapshot -post
BACKGROUND_COMPARISON="yes"

# exécuter le nettoyage quotidien, basé sur l'algorithme du nombre d'instantané
NUMBER_CLEANUP="yes"

# limite pour le nettoyage quotidien, basé sur l'algorithme du nombre d'instantané
NUMBER_MIN_AGE="1800"
NUMBER_LIMIT="50"
NUMBER_LIMIT_IMPORTANT="10"

# créer des instantanés horaires (oui, c'est bien le but de ma manœuvre)
TIMELINE_CREATE="yes"

# nettoyer les instantanés horaires après un certain temps
TIMELINE_CLEANUP="yes"

# limites pour le nettoyage de la timeline (les instantanés horaires)
# âge minimum de l'instantané
TIMELINE_MIN_AGE="1800"
# nombre d'instantanés horaires à conserver au maximum
TIMELINE_LIMIT_HOURLY="24"
# nombre d'instantanés journaliers à conserver au maximum
TIMELINE_LIMIT_DAILY="14"
# nombre d'instantanés hebdomadaire à conserver au maximum
TIMELINE_LIMIT_WEEKLY="4"
# nombre d'instantanés mensuels à conserver au maximum
TIMELINE_LIMIT_MONTHLY="3"
# nombre d'instantanés annuels à conserver au maximum
TIMELINE_LIMIT_YEARLY="0"

# lancement du nettoyage des paires d'instantané -pre et -post vide
EMPTY_PRE_POST_CLEANUP="yes"

# âge minimum des instantanés nettoyés par l'algorithme pre-post
EMPTY_PRE_POST_MIN_AGE="1800"

Ainsi je vais pouvoir disposer d'instantanés me permettant de remonter dans le temps si jamais je fais une fausse manip' et efface des fichiers par erreur ou autre bêtise. Et les instantanés de la partition système me permettent, depuis le menu de démarrage de GRUB de sélectionner de démarrer sur un instantané en lecture seule afin de pouvoir réparer mon système en cas de soucis.

J'utilise ce setup avec deux partitions en btrfs, une pour le système, une pour mes données, chaque d'elle disposant de leur fréquence de création d'instantanés, depuis plusieurs mois sur une machine que j'utilise au quotidien. Et je dois dire que j'en suis très content ! Je n'ai pas eu de soucis de ralentissements agaçants, les instantanés sont bien créés puis supprimés conformément à la configuration, bref, impeccable !

Tags: opensuse

Afficher le virtualenv Python dans son prompt ZSH

December 08, 2018 — sogal

Voici une petite astuce bien pratique lorsqu'on utilise des virtualenv Python. C'est quand même assez pratique, quand on a plusieurs terminaux ouverts, de savoir si oui ou non on se trouve dans un virtualenv et si oui, lequel. Ça peut éviter des bêtises aussi.

Pour ce faire, j'ai ajouter les éléments suivants à mon $HOME/.zshrc:

function virtualenv_info () {
    [ $VIRTUAL_ENV ] && echo "($(basename $VIRTUAL_ENV)) "
}

export VIRTUAL_ENV_DISABLE_PROMPT=0

Puis dans mon prompt, j'ai ajouté $(virtualenv_info) comme suit:

LPROMPT='$(virtualenv_info)$(pwd_icon) %F{yellow}%2c%f %F{magenta}❱%f '

Ce qui donne, dans mon prompt complet:

ZSH virtualenv

Tags: terminal, tips

Tester Gimp 2.9.5 avec Flatpak

December 02, 2018 — sogal

Flatpak (anciennement xdg-app), tout comme AppImage, est une solution visant à simplifier et uniformiser l'installation d'applications sur différentes distributions GNU/Linux. Le but est de fournir un espace cloisonné (sandbox) dans lequel s'exécute l'application, c'est une forme de virtualisation mais d'application uniquement et non d'un système complet. Cela permet donc aux utilisateurs curieux de tester les dernières versions de leurs logiciels favoris sans avoir à les compiler, ni à se soucier des dépendances.

Installation de Flatpak :

Voyons comment installer ça :

zypper install flatpak

Configuration :

Nous ajoutons ensuite les dépôts depuis lesquels nous allons par la suite installer le runtime (un environnement d'exécution virtualisé) :

wget https://sdk.gnome.org/keys/gnome-sdk.gpg
flatpak remote-add --gpg-import=gnome-sdk.gpg gnome https://sdk.gnome.org/repo/
flatpak remote-add --gpg-import=gnome-sdk.gpg gnome-apps https://sdk.gnome.org/repo-apps/

Puis installation de la plateforme, ici celle de Gnome 3.20 puisque c'est une application GTK que je souhaite installer. J'en profite pour traduire (et résumer) 2 passages de la F.A.Q. qui rassureront ceux qui n'utilisent ni Gnome comme environnement de travail, ni Fedora comme OS :

Flatpak est-il lié à Gnome ?

Non. Bien que Flatpak ait été développé par des gens impliqués depuis longtemps dans la communauté Gnome, il n'est lié à aucun environnement de bureau. En réalité, il a été conçu avec pour objectif clair de permettre la construction d'applications utilisant n'importe quel base de bibliothèques ou langage de programmation souhaités par l'auteur.

Flatpak est-il lié à Fedora ?

Non. Les développeurs ont une expérience de Fedora [...] mais Flatpak a été développé de manière à faire abstraction de la distribution et à se déployer sur n'importe quel système GNU/Linux disponible. Nous avons pris contact et discuté avec des représentants d'autres distributions très tôt dans le projet.

Installer une application :

Assez de blabla, on installe Gimp !

flatpak install gnome org.gnome.Platform 3.20

Passons maintenant à ce qui nous intéresse vraiment : l'installation des applications ! Dans cet exemple, nous allons installer Gimp dans sa version de développement " Nightly" et donc ajouter le dépôt "Nightly graphics" et sa clé :

wget http://209.132.179.2/keys/nightly.gpg
flatpak remote-add --gpg-import=nightly.gpg nightly-graphics http://209.132.179.2/repo/

Pour voir ce que contient ce dépôt :

flatpak remote-ls nightly-graphics --app

net.scribus.ScribusDevel
org.darktable.DarktableDevel
org.gimp.GimpDevel
org.gimp.GimpDevelGtk3
org.inkscape.InkscapeDevel
org.mypaint.MypaintDevel
org.telegram.TelegramDesktopDevel

Il contient quelques applications qui intéresseront les graphistes !

Installons donc Gimp :

flatpak install nightly-graphics org.gimp.GimpDevel master

Et enfin, nous pouvons en profiter :

flatpak run org.gimp.GimpDevel

gimp-night

Pour les utilisateurs de Gnome (et possiblement d'autres DE mais je n'ai pas testé), l'application est même ajoutée au menu des applis. Je peux donc avoir simultanément ma version stable de Gimp et celle de développement sans avoir recours à une VM ni un chroot "classique" !

Tags: gnome, tips

Tilix : l'ami des administrateurs système

December 01, 2018 — sogal

Il y a quelques mois, je présentais Tilix , un émulateur de terminal scindable. Après plusieurs mois d'utilisation, je souhaite partager quelques astuces qui font de ce terminal un excellent outil pour les administrat{rices,eurs} système. Pour rappel, Tilix (anciennement Terminix) est un émulateur de terminal utilisant la libvte et écrit en D avec interface GTK3+. À ce titre, il est donc particulièrement conçu pour s'intégrer avec GNOME.

À l'instar de Terminator, il est scindable, ce qui permet d'avoir de nombreux terminaux dans une seule fenêtre :

Tilix

Il peut être également un remplaçant de Guake, dans la mesure où il fonctionne aussi en tant que « dropdown terminal » (terminal déroulant dit à la Quake) :

Tilix

Bref, il est mignon mais tout ça c'est du classique, pas de quoi justifier un deuxième article. Non, ce qui va nous intéresser aujourd'hui, ce sont les fonctionnalités avancées de Tilix, à savoir :

  • Gestion de signets, locaux ou distants ;
  • Liens personnalisés (liens cliquables sur la base d'expressions rationnelles) ;
  • Changement de profil automatique selon l'emplacement (local ou distant (SSH)) ;
  • Gestion des mots de passe ;
  • Lancement d'actions en interne ;
  • Gestion avancée du presse-papier.

Gestion des signets :

Tilix permet d'enregistrer et gérer une liste de « signets », c'est-à-dire des emplacements locaux ou distants. Il suffira ensuite d'ouvrir cette liste, de sélectionner le signet voulu pour se rendre immédiatement dans le dossier ou ouvrir la session SSH vers un hôte distant.

Note : les signets sont enregistrés dans $HOME/.config/tilix/bookmarks.json, je vous recommande de créer ce fichier à la main au préalable si vous constatez que vos signets ne sont pas enregistrés correctement après avoir quitté Tilix.

Dossier :

Tilix vous permet d'organiser vos signets en créant un simple dossier dans lequel vous allez pouvoir les créer, afin qu'ils soient bien organisés. C'est utile pour, par exemple, regrouper des connexions SSH vers un même groupe de machines :

Tilix

Cliquer sur le dossier puis sur le « + » pour y ajouter des signets.

Signets locaux :

Pour ajouter des signets, ouvrir les préférences de Tilix, puis aller dans la section Signets pour cliquer sur le « + ».

Ici, je vais ajouter un signet vers la copie local de mon projet sur l'Open Build Service.

Tilix

Signets distants :

La procédure est la même, mais choisir « Distant » puis renseigner les paramètres du signet :

  • Nom : la référence de votre signet ;
  • Protocole : au choix : SSH, SFTP, TELNET, FTP ;
  • Hôte : le nom d'hôte de la cible suivi du numéro de port ;
  • Utilisateur : l'utilisateur de la connexion ;
  • Paramètres : les options de SSH par exemple ;
  • Commande : si c'est une connexion SSH, la commande à lancer sur l'hôte distant.

Tilix

Un bon exemple de « Don't drink and root » !

Commande :

Même procédure que les autres, mais là on saisit simplement une commande à lancer, le signet est donc ici un simple alias.

Tilix

Ma commande pour mettre à jour la copie locale de mon dépôt OBS.

Utiliser les signets :

Vous pouvez accéder à vos signets via « Ctrl + Maj + B », vous n'avez plus qu'à le sélectionner et la commande correspondante est lancée :

Tilix

Liens personnalisés :

Tilix vous permet de définir une liste de liens (URI vers une page web ou un emplacement file:// local ou distant) qui vont être rendus cliquables sur la base d'une expression rationnelle ou d'un simple mot. Pour ce faire, ouvrir les préférences puis la section Avancé. Pour l'exemple, je vais ajouter un lien pour me rendre d'un clic sur le forum d'obsd4a.net (OpenBSD For All), celui d'Alionet (communauté openSUSE francophone), celui de Debian-Facile ou encore ma copie locale de la doc Python :

Tilix

Le terme d'expression rationnelle est devenu cliquable, soit par « Ctrl + clic », soit par un clic-droit :

Tilix

Changement de profil automatique :

On arrive là dans une fonctionnalité de Tilix que j'apprécie beaucoup et qui peut permettre d'éviter de faire des bêtises en tapant une commande dans le mauvais répertoire ou dans une connexion distante : il s'agît du changement de profil automatique. Tilix, comme beaucoup d'émulateurs de terminal modernes, vous permet de créer plusieurs profils (couleurs, shell utilisé, police de caractères etc...) mais en plus, il permet de passer automatiquement de l'un à l'autre en fonction de l'emplacement actif, que ce soit un dossier local ou, plus intéressant mais nécessitant un poil plus de manipulation, une connexion SSH.

En local :

Tilix

Pour l'exemple j'ai créé un profil appelé « Root » qui sera activé automatiquement lorsque je serais dans un des dossiers suivants :

/etc
/usr
/root

Maintenant, dans l'onglet « Avancé » du profil, je vais définir la condition nécessaire à son activation.

Comme il est précisé, les valeurs doivent être au format « hôte:dossier » ou « hote: » ou « :dossier », les « : » sont obligatoires, ainsi « hôte » ou « dossier » seuls ne sont pas permis.

Et maintenant, si je me rends dans /etc :

Tilix

La bascule s'est faite automatiquement et dès que je quitte /etc Tilix me remet mon profil par défault :

Tilix

Lors d'une connexion distante :

Tilix nous permet de faire la même chose lors d'une connexion SSH. Mais cela nécessite un brin de configuration sur l'hôte distant :

Copie du script sur l'hôte distant :

Il faut pousser le script /usr/share/tilix/scripts/tilix_int.sh dans le $HOME de l'utilisateur distant :

scp /usr/share/tilix/scripts/tilix_int.sh user@hostname:/home/user

Puis s'y connecter au préalable pour ajouter le lancement du script à la connexion, via son .bashrc par exemple :

[sogal@host ~]$ cat .bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
. ./tilix_int.sh

Configuration de la condition :

Puis définir, là aussi, la condition de bascule de profil comme précédemment mais en précisant l'hôte (celui fournit par la commande hostname sur laquelle Tilix se base) cette fois-ci :

Tilix

Puis se connecter :

Tilix On voit à gauche que le profil a changé dès l'établissement de la connexion SSH.

Puis qu'il rebascule vers le profil par défaut dès que je me déconnecte. Tilix

Gestion des mots de passe :

Tilix permet également de conserver en mémoire des mots de passe. Pour cela, cliquez sur le menu du terminal actif et choisir « Mots de passe... » :

Tilix

Et renseignez le :

Tilix

Tilix

Tilix conserve les mots de passe enregistrés dans le trousseau de gnome-keyring.

C'est une fonction très intéressante couplée aux précédentes :

  • à l'aide des signets vous lancez une connexion distante ;
  • grâce aux mots de passe enregistrés vous déverrouillez votre clé SSH par exemple ;
  • puis Tilix vous bascule immédiatement dans le profil de votre choix le cas échéant.

Lancement d'actions en interne :

Au sein d'un session Tilix en cours, ce dernier permet de lancer des actions internes pouvant être utiles pour, par exemple, scinder la fenêtre en deux puis ouvrir un programme X dans la tuile créée :

tilix -a session-add-right -e htop

Tilix

Fonctionnalité utile lorsque couplée à un alias.

Gestion avancée du presse-papier :

Tilix nous offre des options intéressantes du copier-coller. Elles sont à activer dans les préférences :

Tilix

Dialogue avancé :

Vous pouvez configurer un raccourci pour l'afficher ou bien choisir de toujours l'afficher. Ce dialogue permet par exemple de configurer le nombre d'espaces dans les tabulations lors du collage :

Tilix

Avertissement en cas de collage dangereux :

Une fonctionnalité parfaite pour les utilisateurs étourdis !

Tilix dispose d'une fonctionnalité qui vous averti lors du collage d'une commande potentiellement dangereuse (exécutée avec sudo par exemple). Ceci est utile lorsqu'on suit un peu bêtement un tutoriel depuis le Web mais ne fonctionne que lorsque la commande est suivie d'un retour à la ligne qui entraînera son exécution immédiate :

Tilix

En conclusion :

Voilà, j'espère que cette revue des fonctionnalités avancées de Tilix vous aura convaincu, ou du moins donné envie, de l'adopter pour vos travaux. Tilix est développé activement, de nouvelles versions voient le jour environ tous les deux mois et apportent leur lot de nouveautés intéressantes, donc n'hésitez pas à les suivre s'il vous intéresse. Je continuerai à publier des infos sur son développement et les sorties des nouvelles versions stables.

À bientôt, enjoy !

Tags: terminal

Transmetropolitan : entrez dans La Ville

December 02, 2018 — sogal

Transmetropolitan est un comics de Warren Elis & Darrick Robertson. On y suit les aventures de Spider Jerusalem, un journalisme d'investigation accro à la Vérité et à beaucoup d'autres choses. Il navigue d'injustice en injustice dans La Ville, une mégalopole qui ressemble fort à une caricature futuriste de ce qu'il peut y avoir de plus grotesque, sordide, comique et fou dans notre société.

transmet-p

Je relis la série des 5 tomes avec beaucoup de plaisir. Le ton y est grinçant, souvent violent et vulgaire, mais juste et plein de tournures cultes. Tout y est démesuré, c'est comme une extension des travers de notre monde, la publicité et l'information sont omniprésentes, les humains modifient leur corps comme on va chez le coiffeur ou se téléverse dans le réseau et la sexualisation de la société connaît son apogée.

Une série que je recommande définitivement à quiconque apprécie le cynisme acide et l'humour déjanté.

Tags: bd

Un peu de changement

December 02, 2018 — sogal

Cela faisait déjà plusieurs mois que je voulais changer le site pour du statique dans lequel je puisse écrire en Markdown avec un déploiement automatique. C'est chose faire, enfin !, grâce à Bashblog. Il s'agît d'un script tout simple en Bash.

J'ai importé la plupart des vieux articles, mais pas tous, trop pénible ou certains étaient obsolètes.

Avec ce flux de travail simplifié, j'espère pouvoir retrouver la motivation d'écrire. @+