bannière du site

openSUSE Leap 42.3 est sortie !

Rédigé par sogal 4 commentaires
openSUSE Leap 42.3 est sortie officiellement aujourd'hui. Cette version est une version mineure de la série 42, elle apporte peu de changement dans la base du système mais rafraîchit l'ensemble de paquets.
Pas de révolution donc pour Leap, la version "conservatrice" de la distribution au caméléon, mais ses points forts le sont encore plus !

Lire la suite de openSUSE Leap 42.3 est sortie !

Changer de distrib : un comparo Debian / CentOS / openSUSE

Rédigé par mistervolt 4 commentaires

En recherchant il y a quelques mois une nouvelle distribution pour mon ordinateur professionnel, j'ai (re)découvert openSUSE. Quelques mois après, je vous propose ici mon retour d'expérience.

Pourquoi changer ?

Jusqu'à présent j'utilisais Debian, ma distribution de choix depuis 2012. J'en étais jusqu'à très content, j'ai passé plus de 2 excellentes années sous Wheezy, version grâce à laquelle j'ai appris et expérimenté énormément de choses, puis 1 an et demi sous Jessie. J'ai rencontré un peu plus de petits désagréments avec Jessie. Rien de grave mais je me suis moins éclaté qu'avec Wheezy.
Bref, depuis début 2016, la société dans laquelle je travaille utilise Fedora sur les postes clients. Avec plusieurs mois de retard, je me suis mis, j'ai d'ailleurs rédigé un billet là-dessus. Ce n'est pas un mauvais système mais 2 choses principalement m'ont déplu :

  • le cycle de release, trop rapide. Qui a dit "obsolescence programmée" ? ;)
  • le gestionnaire de paquet, dnf, que je n'apprécie pas, le trouvant trop pataud.

Je voulais donc autre chose, une distribution équilibrée, avec un cycle de release décent (annuel, pas moins) tout en disposant d'ensemble de paquets pas trop vieux et contenant tous les outils professionnels dont j'ai besoin.

Choisir et tester :

Avec ces considérations en tête, le tour a été relativement vite fait et j'ai établi un comparatif entre 3 distributions :

  • Debian (stable évidemment) ;
  • CentOS 7 ;
  • openSUSE Leap 42.2 (qui était alors à 2 semaines de sa sortie en stable).

J'ai monté 3 machines virtuelles, établi une grille de critères reprenant, entre autres ceux, énoncés ci-dessus et essayé ces 3 systèmes dans tous les sens, avec des configurations égales (autant que possible) et en essayant les mêmes paquets.

Le projet Debian fournit très clairement l'ensemble de paquets le plus complet et le plus cohérent (j'entends par là qu'ils sont tous dans un seul dépôt (jusqu'à 3 si on active contrib et non-free).
Les dépôts de base de CentOS m'ont paru plus "pauvres" mais contiennent la très grande majorité des outils nécessaires sur un poste de travail. La "fraîcheur" des versions est variable, mais à l'image d'une Debian stable dans l'ensemble. Un certain nombre d'outils plus spécifiques requièrent l'ajout du dépôt EPEL.
Je n'ai pas apprécié l'utilisation de yum que je trouve assez lent dans l'ensemble, surtout comparé à apt (apt-get) qui est tout de même très rapide.
Les dépôts d'openSUSE se répartissent en 4 catégories :
- les dépôts officiels, avec des branches libres et non-libres, équivalentes à main et non-free chez Debian ;
- les dépôts communautaires qui contiennent des paquets ne pouvant être incorporés dans les dépôts officiels, souvent pour des raisons de licences, par exemple le dépôt Packman qui contient les codecs nécessaires pour lire des vidéos (aux formats mp4, avi etc...) ;
- les dépôts "spécialisés" qui regroupent des paquets de même catégorie (applis pour environnement Gnome, applis pour graphisme, applis en console etc...) ;
- les dépôts "home", équivalents aux dépôts Copr de Fedora, qui hébergent les paquets créés par des particuliers.
Le dépôt officiel libre contient tous les logiciels dont j'aurai besoin donc pas besoin d'avoir recours aux autres, à l'exception de Packman.
Concernant ce dernier, il est amusant de constater que certains projets séparent les codecs "litigieux" (mp3, mp4 etc...) et d'autres non, c'est le cas de Debian par exemple.

Les installeurs

Un des aspects importants lorsqu’on installe un OS c’est... l’installeur pardi !
Installer successivement ces trois distributions fut l’occasion de comparer les installeurs et ils sont vraiment très différents !

L’installeur Debian est simple et direct (je l’utilise en mode texte mais le mode graphique est similaire et n’offre rien de plus). Il ne permet pas de paramétrer grand chose, juste l’essentiel. Et surtout il ne faut pas avoir à installer en comptant sur une connexion wifi. C’est un peu la croix et la bannière pour tenter de fournir un pilote de carte wifi via un supporte externe durant le processus d’installation.
Cela dit, il est rapide et en gros, ça s’installe en cliquant successivement sur la touche Entrée.

L’installeur de CentOS,, Anaconda, qui est le même que celui de Fedora, est pareil, basique, très axé serveur. Il propose plusieurs profils d’installation pour serveurs spécialisés ou pour stations de travail, ce qui est sympa pour fournir une base prête à l’emploi.
J’ai moins apprécié la partie partionnement que j’ai trouvé moyennement intuitive.

L’installeur d’openSUSE est de très loin le plus complet. C’est le plus long à se lancer mais il permet de tout configurer avant installation. On peut ainsi configurer finement la partie réseau, l’outil de partitionnement est très complet (c’est le même module qu’on retrouve par la suite dans Yast). Et chose très appréciable, il permet également de choisir chacun des paquets à installer. Pour l’exemple j’ai sélectionné une base «Bureau Gnome» puis j’ai ajouté tous les logiciels complémentaires que je veux et retiré ceux qui me sont inutiles. J’ai vraiment apprécié cette possibilité, ça évite d’installer des paquets pour les supprimer 5 minutes plus tard et de démarrer avec un système contenant tous les outils que l’on veut.

Sur chacune des machines virtuelles j’ai tenté de reproduire une configuration identique, à base de bureau Gnome et de tester avec quelle facilité je pouvais installer les logiciels que je voulais.
À ce jeu, Debian s’en sort le mieux au vu de la taille de sa logithèque, suivi d’openSUSE qui dispose de nombreux paquets et peut être facilement étendue via des dépôts communautaires. CentOS est assez loin derrière et tout n’était pas toujours disponible.

Ce qui m’amène à évoquer brièvement les gestionnaires de paquets.
Debian avec apt est le «flash» de l’équipe. Il se lance et exécute les actions très rapidement. Le rafraîchissement des sources est rapide également.
Yum de CentOS est à l’opposé, il est lent à se rafraîchir et parfois semble se bloquer plusieurs longues secondes à la fin d’une installation, avant de rendre la main.
Zypper dans Leap est relativement rapide, moins qu’apt, mais j’ai trouvé que c’était le plus lisible. La coloration syntaxique permet de bien se repérer dans les noms de paquets (la première lettre de chaque est en couleur) et les informations importantes relatives aux modifications apportées sont bien mises en avant.

Bon, faut se décider !

J’utilisais Debian depuis 4 ans et j’avais, il faut bien le dire, envie de changer et de découvrir (vraiment, pas juste le temps d’un test d’une heure en VM) une autre distribution. Les tests semblaient montrer qu’openSUSE pourrait répondre à mes besoins alors pourquoi pas.
J’avais déjà fait usage au travail d’openSUSE en 13.1 et 13.2. Je n’avais pas été 100% conquis alors mais les retours lus ici et là sur cette nouvelle mouture qu’est la Leap m’ont conforté dans ce choix, c’est donc parti pour l’installation en réel.

Here we go !

L’installation s’est très bien passée. Bien que je déplore l’existence de pilotes privateurs pour les cartes wi-fi (les seuls qui m’importent vraiment, n’étant pas un joueur assidu sur PC), force m’est de reconnaître qu’il est difficile de s’en passer et leur inclusion par défaut dans l’installeur d’openSUSE m’a facilité la vie.
Le gestionnaire de partitionnement est très complet et j’ai pu configurer très simplement mes volumes LVM chiffrés.
C’est lors du résumé des options d’installation que j’ai pu choisir plus finement mes paquets, en supprimant les paquets qui me sont inutiles (jeux, gnome-document, gnome-musique etc...) et ajouter ma sélection (notamment Terminator, CherryTree et Keepassx). Un dernier clic et c’est parti, l’installeur fait son boulot et lorsque je reviens 20 min plus tard, mon PC a redémarré et est prêt à l’emploi !

Et alors, c’est bien openSUSE ?

La Leap 42.2 est une distribution moderne et stable. Donc oui, c’est bien, ça fait son travail, ça s’allume le matin, s’éteint le soir et entre les deux je n’ai pas eu de problèmes.
En parlant de Gnome, je tiens à signaler l’excellente intégration de celui-ci. Historiquement openSUSE est considérée comme une distribution pro-KDE mais Gnome est parfaitement intégré et très bien fini. Le fait que la SLED (Suse Linux Entreprise Desktop) utilise Gnome (dans sa version Classique) comme bureau n’y est peut-être pas étranger.
J’ai notamment apprécié de trouver l’ensemble des outils visant à configurer le système directement intégrés aux Paramètres Gnome :

Yast, l’outil historique d’openSUSE permettant de configurer son système graphiquement, est intéressant. Je ne suis pas particulièrement pro « utilitaires monolithiques et graphiques de configuration » car ils ont tendance à masquer la réalité et ne permettent pas d’apprendre à bien éditer des fichiers de configuration, à avoir les bonnes pratiques dans ce cas (faire une copie avant édition...).
Néanmoins, sa présence n’oblige pas à l’utiliser d’une part et n’empêche pas du tout l’édition directe des fichiers de configurations d’autre part.
Ainsi un-e débutant-e pas encore à l’aise pourra quand même gérer aisément certains aspects de son système. Sur ce point, je trouve que le nombre de modules Yast inclus par défaut dans une installation de type « Desktop » un poil trop important. Qui a besoin de gérer des périphériques ISCSI ou des clients NIS sur son portable perso ?
Yast est en revanche très pratique lorsqu’on reprend l’administration de serveurs.

En conclusion, ce changement et ces tests m’ont permis de bien définir mes besoins et les logiciels y répondant, de comparer 3 distributions majeures et toutes très bonnes.
Si je prends autant de plaisir à utiliser openSUSE c’est surtout qu’elle sait se faire complètement oublier, me permettant ainsi de me consacrer à mon travail.

J'espère que ce petit tour d'horizon vous aura donné envie de tester l'une de ces trois distributions et notamment openSUSE, distribution de qualité mais moins connue en France. Des membres de la communauté openSUSE France en expliquent les raisons dans une interview accordée à Framasoft : OpenSUSE, une distribution méconnue.

Voir aussi : un autre billet rapide rédigé sur ce choix sur Alionet : Pourquoi j’ai fait le choix de Leap 42.2 pour mon travail

Écouter sa musique avec mpd et ncmpcpp et être notifié dans Gnome

Rédigé par mistervolt Aucun commentaire

Note : cet article est un repost sur mon blog de celui que j'ai écrit pour Alionet, la communauté openSUSE francophone.

Dans cet article, je vous propose de découvrir ou redécouvrir un trio de logiciels qui va bien pour gérer sa musique : mpd (un démon lecteur de musique en mode serveur), mpc (un client en CLI) et ncmpcpp (un client évolué en ncurses écrit en C++), configurer leurs raccourcis clavier et obtenir des notifications intégrées à notre environnement de bureau :

Ces deux paquets sont disponibles dans le dépôt Packman pour openSUSE :

zypper ar -f http://packman.inode.at/suse/openSUSE_Leap_42.2 Packman
zypper install mpd mpclient ncmpcpp

Ou pour Debian :

apt-get install mpd mpc ncmpcpp

Note: le nom d'utilisateur dans les fichiers qui suivent, ici sogal, est bien entendu à adapter !
Configuration du serveur de musique mpd :

Nous allons nous inspirer de la configuration proposée en exemple :

mkdir ~/.config/mpd
mkdir ~/.config/mpd/playlists
# Sous openSUSE :
cp /usr/share/doc/packages/mpd/mpdconf.example ~/.config/mpd/mpd.conf
vim ~/.config/mpd/mpd.conf
# Sous Debian :
cp /usr/share/doc/mpd/mpdconf.example.gz ~
gunzip mpdconf.example.gz
mv mpdconf.example ~/.config/mpd/mpd.conf
vim ~/.config/mpd/mpd.conf

Voici, pour exemple, les passages de ma configuration :

grep -v "^#|^$" ~/.config/mpd/mpd.conf
music_directory         "/path/to/music"
playlist_directory              "~/.config/mpd/playlists"
db_file                 "~/.config/mpd/mpd.db"
log_file                        "~/.config/mpd/log"
pid_file                        "~/.config/mpd/mpd.pid"
state_file                      "~/.config/mpd/mpdstate"
sticker_file                    "~/.config/mpd/sticker.sql"
user                            "sogal"
bind_to_address         "localhost"
port                            "6600"
log_level                       "default"
restore_paused "yes"
input {
        plugin "curl"
}
audio_output {
        type            "pulse"
        name            "Pulse MPD Output"
}
audio_output {
    type        "fifo"
    name        "mpd_fifo"
    path        "/tmp/mpd.fifo"
    format      "44100:16:2"
}
filesystem_charset              "UTF-8"

Il est surtout important de bien configurer l'emplacement de vos fichiers audio ainsi que la sortie sonore.
Ici j'utilise Pulseaudio mais la configuration inclus un modèle pour une sortie avec ALSA seul.
J'ai ajouté une sortie vers un fifo qui nous servira avec ncmpcpp pour activer le visualiseur graphique (oui, oui dans un terminal !).

Activer mpd en tant que service systemd en espace utilisateur :

Nous allons configurer le serveur de musique mpd en tant que service systemd en espace utilisateur.
De la sorte, mpd démarrera avec votre session.

mkdir -p ~/.config/systemd/user
cp /usr/lib/systemd/system/mpd.service ~/.config/systemd/user
vim ~/.config/systemd/user/mpd.service
[Unit]
Description=Music Player Daemon

[Service]
ExecStart=/usr/bin/mpd --no-daemon /home/sogal/.config/mpd/mpd.conf
ExecStop=/usr/bin/mpd --kill
PIDFile=/home/sogal/.config/mpd/mpd.pid

[Install]
WantedBy=default.target

Il est nécessaire de mettre les chemins absolus dans ce fichier.

Puis nous démarrons et activons le service :

systemctl --user start mpd
systemctl --user enable mpd

Note : sous Debian, le service système est activé par défaut après installation. Vous pouvez faire le choix d'utiliser ce dernier ou bien un service en environnement utilisateur comme présenté ici. Dans ce cas, il faut désactiver le service système ou préciser un autre port.

Configuration de ncmpcpp :

mkdir ~/.ncmpcpp
cp /usr/share/doc/packages/ncmpcpp/config ~/.ncmpcpp/
vim ~/.ncmpcpp/config
# Sous Debian :
mkdir ~/.ncmpcpp
cp /usr/share/doc/ncmpcpp/examples/config.gz ~
gunzip config.gz
mv config ~/.ncmpcpp/
vim ~/.ncmpcpp/config

Je vous propose à nouveau ma configuration :

grep -v "^#|^$" ~/.ncmpcpp/config
ncmpcpp_directory = ~/.ncmpcpp
lyrics_directory = ~/.ncmpcpp/lyrics
mpd_host = localhost
mpd_port = 6600
mpd_connection_timeout = 5
mpd_music_dir = /path/to/music
mpd_crossfade_time = 5
visualizer_fifo_path = /tmp/mpd.fifo
visualizer_output_name = mpd_fifo
visualizer_in_stereo = yes
visualizer_sync_interval = 30
visualizer_type = ellipse
visualizer_look = ▮●
visualizer_color = 41, 83, 119, 155, 185, 215, 209, 203, 197, 161
system_encoding = "UTF-8"
playlist_disable_highlight_delay = 5
message_delay_time = 5
song_list_format = {%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f}
song_library_format = {%n - }{%t}|{%f}
alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
now_playing_prefix = $b
now_playing_suffix = $/b
song_window_title_format = {%a - }{%t}|{%f}
browser_sort_mode = name
browser_sort_format = {%a - }{%t}|{%f} {(%l)}
song_columns_list_format = (20)[]{a} (6f)[green]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[magenta]{l}
playlist_show_mpd_host = no
playlist_show_remaining_time = yes
playlist_shorten_total_times = no
playlist_separate_albums = no
playlist_display_mode = columns
browser_display_mode = classic
search_engine_display_mode = classic
playlist_editor_display_mode = classic
incremental_seeking = yes
seek_time = 1
volume_change_step = 2
autocenter_mode = yes
centered_cursor = yes
progressbar_look = =>
default_place_to_search_in = database
user_interface = alternative
media_library_primary_tag = genre
default_find_mode = wrapped
header_visibility = yes
statusbar_visibility = yes
titles_visibility = yes
header_text_scrolling = yes
cyclic_scrolling = yes
lines_scrolled = 2
follow_now_playing_lyrics = yes
fetch_lyrics_for_current_song_in_background = yes
store_lyrics_in_song_dir = yes
allow_for_physical_item_deletion = no
screen_switcher_mode = browser, media_library, visualizer
startup_screen = playlist
startup_slave_screen = "visualizer"
startup_slave_screen_focus = no
locked_screen_width_part = 50
jump_to_now_playing_song_at_start = yes
ask_before_clearing_playlists = yes
clock_display_seconds = no
display_volume_level = yes
display_bitrate = no
display_remaining_time = yes
ignore_leading_the = no
mouse_support = yes
enable_window_title = yes
external_editor = vim
use_console_editor = yes
colors_enabled = yes

Ceci me permettra d'obtenir un écran partagé avec, par défaut, l'affichage de ma bibliothèque musicale et du visualiseur.
Si vous ne voulez pas d'écran partagé, commentez les paramètres relatifs au slave_screen.
Chez moi, ça donne ça :

Quelques raccourcis pour bien démarrer :
- F1 : afficher l'aide ;
- 1 : playlist ;
- 2 : navigateur par dossiers ;
- 3 : moteur de recherche ;
- 4 : audiothèque (vue en panneaux) ;
- 5 : éditeur de playlists ;
- 6 : éditeur de tags ;
- 8 : visualiseur ;
- p : mettre en pause ;
- a : ajouter la sélection à la playlist.

Exemple de création d'un raccourci clavier pour mpc sous Gnome :

Par défaut, la touche p met ncmpcpp en pause. Mais si l'on n'est pas devant, comment faire ?
C'est là que mpc (du paquet mpclient sous openSUSE et mpc sous Debian) est intéressant.
Nous allons créer des raccourcis clavier destiné à mettre mpd en pause. Pour cela, ouvrons les préfèrences système puis Clavier et Raccourcis personnalisés et en créer 3 nouveaux :

- MPD Pause : commande mpc toggle ;
- MPD Précédent : commande mpc prev ;
- MPD Suivant : commande mpc next

Vous pouvez affecter les touches que vous voulez, sur une machine j'ai mis Ctrl + Alt + Z, sur une autre j'ai réaffecter les touches multimédias.

Notifications dans Gnome Shell :

Pour être notifié des changements de chansons dans gnome-shell, il faut passer un nouveau paramètre de configuration dans ncmpcpp :

execute_on_song_change = 

Je vous propose 2 méthodes :

Méthode notify-send :
Nous allons utiliser la commande notify-send (du paquet libnotify-bin sous Debian, installé par défaut sous ma openSUSE) :

execute_on_song_change = "notify-send --hint=int:transient:1 -t 2 -i $HOME/path/to/icon "Music Player Daemon" "$(ncmpcpp -c ~/.ncmpcpp/config --current-song "%a - %t (%b)" 2>/dev/null)"" 

Note : --hint=int:transient:1 permet que les notifications ne se stockent pas dans le centre de notification et l'option -i prend un chemin vers une icône en paramètre.

Ainsi vous avez de jolies notifications, non persistentes. Le seul inconvénient c'est qu'elles se stockent sur l'écran de verrouillage et affichent "notify-send" au lieu de "Music Player Demon".

Méthode script python :
Pour pallier ça, je vous propose un petit script python, qui utilise deux bibliothèques très pratiques :

- python-notify2
- python-mpd2

# Sous openSUSE :
zypper in python-notify2
#Sous Debian :
apt-get install python-notify2
pip3 install python-mpd2

Et voici le script (je l'ai mis dans mon $HOME/bin) :

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import gi
gi.require_version('Notify', '0.7')
from gi.repository import Notify
from gi.repository import GLib
from mpd import MPDClient

client = MPDClient()
client.timeout = 10
client.idletimeout = None
client.connect("localhost", 6600)

mpd_song = MPDClient.currentsong(client)

s_artist = mpd_song['artist']
s_title = mpd_song['title']
s_album = mpd_song['album']

s_notification = s_artist + " - " + s_title + " - (" + s_album +")"

Notify.init("Music Player Demon")
show_song = Notify.Notification.new("Music Player Demon", s_notification,
                                    icon="/home/sogal/.icons/Vivacious-Colors/apps/scalable/deadbeef.svg")

show_song.set_hint("transient", GLib.Variant.new_boolean(True))

show_song.show()

Puis ajoutez ceci à la config de ncmpcpp :

execute_on_song_change = "/usr/bin/python3 /home/$USER/bin/script_notif.py"

Et voilà, j'espère que cet article vous sera utile et que vous prendrez plaisir à gérer votre musique avec ces outils, notamment ncmpcpp qui est très puissant en terme de possibilité d'affichages différents, de recherche et d'édition (tags) de votre audiothèque.
Cet article n'est destiné qu'à vous permettre de découvrir et à vous aider à démarrer, je vous conseille de lire tout de même les pages de manuel de ces outils ou les commentaires inclus dans les fichiers de configuration, très simples à comprendre, pour ajuster tout ça aux petits oignons !

Enjoy !

Pense-bête : petit ajustement pour utilisation d'un casque audio Bluetooth

Rédigé par mistervolt Aucun commentaire

J'ai reçu en cadeau un casque audio sans fil (bluetooth), accessoire fort pratique pour continuer à écouter sa musique quand on s'éloigne 5 min de son bureau.
J'ai eu quelque soucis mineurs pour l'utiliser et il a fallu que je procède à quelques réglages que je remets ici pour mémoire et en me disant que ça pourrait profiter à d'autres.

Installer le support bluetooth pour pulseaudio si nécessaire :

apt install pulseaudio-module-bluetooth

Après ça mon casque était reconnu et je pouvais y envoyer le son mais j'avais des coupures de son voire des déconnexions avec des messages comme ça dans /var/log/syslog :

Oct 20 14:27:44 machine bluetoothd[1641]: No cache for 04:FE:A1:00:09:07
Oct 20 14:27:45 machine bluetoothd[1641]: Device is already marked as connected

Pour résoudre ça, éditer le fichier /etc/pulse/default.pa et commenter la ligne :

load-module module-bluetooth-discover

Puis éditer le fichier /usr/bin/start-pulseaudio-x11 et après les lignes :

   if [ x”$SESSION_MANAGER” != x ] ; then
        /usr/bin/pactl load-module module-x11-xsmp “display=$DISPLAY session_manager=$SESSION_MANAGER” > /dev/null
    fi

ajouter ceci :

    /usr/bin/pactl load-module module-bluetooth-discover

Enfin dans le fichier /etc/bluetooth/main.conf, changer:

ControllerMode = dual

en :

ControllerMode = bredr

Après redémarrage plus de soucis de déconnexion et un son nickel.
Lors des démarrages suivants le casque est automatiquement détecté et connecté (s'il est allumé bien sûr) et le son y est correctement redirigé aussi.

Fil RSS des articles de ce mot clé