Monday, July 10, 2023

Compiling Python 3.11 in CentOS 7 with OpenSSL

In the beginning, I only wanted to update a Pip package. But I might as well relate that here, just for posterity.

So, the pip package gave me a Python error, because Centos only shipped with Python 2.7. I told myself 'OK, let's build Python 3.11, easy peasy', but it all went down from here.

It compiled mostly OK, but after that trying to use pip3.11 threw an SSL error, the famous:

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

Collecting <package>

  Could not fetch URL https://pypi.python.org/simple/<package>/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping

  Could not find a version that satisfies the requirement <package> (from versions: )

No matching distribution found for <package>

OK, let's update OpenSSL then! I grabbed the openssl-3.1.1.tar.gz package from GitHub, configured and compiled it... And Python still didn't grab the SSL libs. I tried with and without --enable-optimizations, with and without --with-openssl=/usr/, to no avail.

So, what worked? 

Well, first, uninstalling that openssl 3.1.1. Then, installing the EPEL (Extra Packages for Entreprise Linux), and from there install the openssl11 and openssl11-devel (At last I had working SSL libs available).

I don't know if that helped, but I also followed the instructions here to upgrade GCC, working with the more up-to-date devtoolset-11 :

sudo yum install centos-release-scl

sudo yum install devtoolset-11-gcc*

source /opt/rh/devtoolset-11/enable


Now, the BIG thing: you have to tell Python where your SSL libs and packages are. So the full command that worked and finally got all the SSL libs detected was:

./configure --with-openssl='/usr/' --with-ssl-default-suites=openssl CFLAGS="-I/usr/include/openssl11" LDFLAGS="-L/usr/lib64/openssl11 -lssl -lcrypto" --with-openssl-rpath=auto

(You can check for these with pkg-config --cflags openssl11 and pkg-config --libs openssl11.)

The SSL output from the ./configure command:

checking for openssl/ssl.h in /usr/... yes

checking for --with-openssl-rpath... auto

checking whether OpenSSL provides required ssl module APIs... yes

checking for --with-ssl-default-suites... openssl

checking for stdlib extension module _ssl... yes


Finally, in the Python directory:

sudo make clean && sudo make altinstall

In order to keep the original Python installation.


You can then choose to load your new python binary as default by linking /usr/local/bin/python3.11 as /usr/local/bin/python, and adding /usr/local/bin first in your $PATH.

Tuesday, April 26, 2022

macOS et les terminaux, un petit récap'

La base, brew

Pour installer plein de logiciels utiles (préalable : installer XCode, gratuit avec création de compte Apple) : https://brew.sh. Ça s'utilise comme un package manager sous linux (yum, apt), avec brew searchbrew install, brew updatebrew upgrade...

Les terminaux

Pour « la totale », on a le combo iTerm2 (remplacement de Terminal.app) + Oh My Zsh (pour facilement ajouter des thèmes et plugins à l'interpréteur de commande zsh, avec le thème Powerlevel10k et les fontes qui vont bien. Tutoriel complet : https://gist.github.com/kevin-smets/8568070.

On a également le tutoriel du point de vue « développeur frontend » sur le blog de Josh W. Comeau.

Pour un truc plus pas-à-pas :

Divers outils

Le petit plus

De nombreuses applications proposent un remplacement pour Terminal.app : 
  • iTerm2 cité ci-dessus est sans doute le plus facile à installer et celui qui propose le plus d'options ;
  • Si vous utilisez plusieurs systèmes (macOS, Windows, GNU/Linux ou BSD...), peut-être qu'Alacritty, multi-plateformes, conviendra mieux (il conviendra aussi si vous rêviez d'utiliser les raccourcis de vi dans le terminal) ;
  • Enfin, un petit nouveau macOS-only mais qui demande de se logger avec un compte GitHub : Warp, basé sur Rust, qui propose une « réinvention » du terminal pour le 21e siècle. La gestion des « blocs » (une commande correspond à un nouveau bloc de texte, à partir duquel il est facile de copier différentes informations — la commande initiale, le résultat, ou tout à la fois), ainsi que les possibilités d'édition de la commande (multi-lignes...) le rendent assez intéressant !

Monday, June 15, 2020

Slackware64-current with KDE Plasma in Parallels Desktop on macOS

Introduction

I like working from macOS (Catalina, 10.15). I have my habits since 2006 and, now, with iTerm2 + zsh and a few plugins, plus other software (TextMate...), life is good. But there will always be that one moment in your work life where you find yourself wishing you had a GNU/Linux distro at hand, just to try something real quick. Anyway, that's my case.

Unfortunately, I was in a bit of a conundrum: I have the bad habit of getting every distro with a package manager FUBAR in a few months' time. Yes, I'm looking at you, Debian, and at your derivatives [OpenSUSE: you're ok; for everyone else: YMMV]. In macOS, I'm using Parallels Desktop, so at least it's easy to save a working version of the virtual machine before attempting things. I have had some very good luck running OpenSUSE Tumbleweed in Parallels Desktop in the past years, but for some reason when I installed it yesterday it... Didn't ran, and just spent time taking 100% of the processors in the VM (I let it run on 6 cores, 4GB RAM, 1GB video RAM) while trying to load the desktop, after an installation process that went quite well.

I decided to go back to my early teenager-years distro: Slackware, and to what's in my opinion the best desktop environment of this time, KDE Plasma (I've always had a soft spot for Enlightenment, howerver, and I find that the Solus distro gives good options and a nice desktop [with Budgie/Gnome/Mate/Plasma available], for anyone wanting something simple -- but it doesn't work well in Parallels Desktop). Due to a specific Wifi driver in the beginning of the 2000s, I had to use Slackware and recompile the kernel to get Internet to work. I learnt a lot. Would that still work in 2020? Yes, with a few limitations.

Limitations

Let's get right now to the limitations: I haven't been able to install Parallels Tools. As such, I don't have access to my macOS folders from Slackware, neither can I resize the Parallels window to have the X server change the resolution. I tried installing Parallels Tools using the "hack" of deleting the check for requirements (particularly the package manager) but it borked my Xorg install, so use at your own risk.

Installation

Installation itself went smoothly: download the DVD in torrent, select it as boot device in Parallels, and choose your packages. I did make one more partition than needed, for /boot/, because I knew I wanted to go the grub way. I deselected all the KDE packages, as they are part of the KDE 4 version. After installation, I choose to not install Lilo and followed the procedure here to install grub at first install.

After the first boot, I created a user, and followed the mkinitrd procedure here, just to have a cleaner boot. I initially tried adding my configuration in /etc/grub.d/40_custom but after a few updates & upgrades the new kernel was automatically added to grub.

Upgrade

I followed the system upgrade procedure here: blacklist the kernel in /etc/slackpkg/blacklist, manually upgrade the kernel and modules (by downloading them from one of the mirrors), update the initrd, and finally select a mirror for slackware64-current in /etc/slackpkg/mirrors
 
A last grub update :
 
# grub-mkconfig -o /boot/grub/grub.cfg
 
Then: 
# slackpkg update gpg
# slackpkg update
# slackpkg upgrade slackpkg
# slackpkg upgrade glibc-solibs
# slackpkg install-new
# slackpkg upgrade-all
# slackpkg clean-system
# slackpkg new-config
Then a reboot, for luck.

Plasma 5

Installing Plasma 5 can be a bit daunting, if you look at the readme file. But, thanks to AlienBob and Epsi, the procedure is quite simple. First, make sure your system is up-to-date and everything, then manually install slackpkgplus. Enable (add) the ktown repository in /etc/slackpkg/slackpkgplus.conf, and continue the procedure following Epsi's instructions (update GPG, update, etc.).

As root, I deleted (just for luck) /etc/X11/xorg.conf-vesa and didn't run X -configure. With Parallels Tools, I had the "EE No usable screen(s) found" error in X, but by default this seems to work fine! 

Finally, as a user, I launched startx just to make sure, and then in xwmconfig I selected the Plasma Desktop.

When I was sure that everything was setup right, I changed the init to level 4 in /etc/inittab, and rebooted to KDM. I was able with a bit of fiddling to get my MacBook Pro keyboard working with the right layout in Plasma, and to configure zsh as I wanted (in Konsole).

That's it! If you had any luck installing Parallels Tools and getting X to work in Slackware64-current on Parallels Desktop, please let me know. If you have questions about my setup, I'll be happy to answer them in the comments.

Friday, December 1, 2017

OpenSuSE, Fedora et al. : resolving the "os-release file is missing" problem

Yesterday, booting my OpenSuSE-tumbleweed after a relatively small zypper dup the day before, I found myself in front of this :


Of course, a funny thing is that my laptop was docked, and the USB keyboard not recognized. Switching to the laptop keyboard, I found out more (with the systemctl status initrd-switch-root.service command) :

Failed to switch root: Specified switch root path /sysroot does not seem to be an OS tree. os-release file is missing.
initrd-switch-root.service: main process exited, code=exited, status=1/FAILURE
Failed to start Switch Root.
Startup finished in 6.650s (kernel) + 0 (initrd) + 3min 22.924s (userspace) = 3min 29.574s.
Unit initrd-switch-root.service entered failed state.
Triggering OnFailure= dependencies of initrd-switch-root.service.
initrd-switch-root.service failed.
Started Emergency Shell.

Well... that didn't bode well. But my system was mounted, read-only, in /sysroot/, so, what now?
After searching for a bit and finding nothing of interest on the web, I finally managed to fix that by remounting the / filesystem read-write, and copying the file found on the initrd system. So : find your / partition (cat /sysroot/etc/partitions, or blkid /dev/sdXY)
Then :

umount /sysroot && mount /dev/sdXY /sysroot -o rw
cp /usr/lib/os-release /sysroot/etc/ && cp /usr/lib/os-release /sysroot/usr/lib/

... And rebooting. Fixed everything! #TheMoreYouKnow

Tuesday, October 17, 2017

La fin de l'« Uncanny Valley », vraiment ?

Il y a moins d'une semaine, Alan Warburton publiait sur Viméo une vidéo très intéressante, faisant un état de l'art des images de synthèse (Computer-generated imagery, CGI). À travers plusieurs logiciels de création, des exemples précis de films et de création vidéo sont abordés de manière chronologique pour relater une courte histoire des images de synthèse.



Cette vidéo, si elle montre effectivement qu'en ce qui concerne la création de paysages, d'animations d'explosions, de fluides divers, de robots ou de personnages humanoïdes les images de synthèse ont fait leurs preuves et sont très crédibles (l'exemple du montage de Transformers à 7' renforçant cependant le côté spectaculaire au profit d'une véracité de l'image : « abstracted, visceral sequence of spatially and temporally disconnected impacts ») trouve sa limite — il me semble — dans l'impasse qu'elle fait sur les humains (visages, déplacements).

En effet, cette théorie de l' « Uncanny Valley », vallée de l'étrange ou vallée dérangeante en français (dont on peut lire l'article original ici, en français) s'applique assez spécifiquement à la ressemblance entre un robot et un être humain, ce qui a été extrapolé aux humains traités en images de synthèse dans les films. Aujourd'hui, l'exemple de Star Wars: Rogue One présentant le Grand Moff Tarkin ou la princesse Leia, à moins de les regarder en piètre qualité, ne rendent pas crédible la théorie selon laquelle les images de synthèse auraient atteint le point ultime de ressemblance entre les humains et les humains en CGI. Ils sont pourtant censés être les fers de lance de ce qu'il est possible de réaliser en images de synthèses. Une autre discussion pourrait avoir lieu autour de l'identification au personnage par rapport à sa ressemblance à un humain, mais c'est un autre débat (Avatar, c'est toi que je regarde).

Enfin, une phrase m'a fait tiquer : « If you can tell it's CGI, it's bad CGI ; in other words, success equals invisibility. In order to work, CGI must disappear » et, plus tard, « CGI works best undetected » (autour de 9'10). Dans ce cas, un des meilleurs exemples doit clairement être Mad Max: Fury Road. Volontairement, dans icelui, les effets spéciaux et images de synthèse sont utilisés pour simplement rehausser (ok, un peu plus des fois) des scènes spectaculaires tournées pour la plupart avec un minimum d'écrans vert. Et sur lequel les merveilleuses gens du Ciné-club de Monsieur Bobine et de L'Ouvreuse ont déjà beaucoup écrit.

Sunday, May 28, 2017

99% Invisible : un podcast audio immersif, divertissant et passionnant

J’ai (re)découvert récemment, au gré de trajets en train et en bus, les podcasts. Je me suis mis à écouter un peu de tout : j’étais déjà branché sur quelques podcasts anglophones, comme Flash Forward de Rose Eveleth, What Hurts (de Phil Bronstein et Dave Pell, de l'excellente newsletter NextDraft) Horror Movie Podcast ou encore le plus récent Truther par des journalistes du Daily Beast ; ainsi que des podcasts francophones, notamment Le Masque et la plume (l’émission de Jérôme Garcin, qui passe sur France Inter le dimanche soir à 20h10 #TouteMonEnfance), Si tu écoutes j’annule tout, de Charline Vanhoenacker et Alex Vizorek, ou enfin le podcast sur le cinéma Super Ciné Battle qui classe les films par décennies à partir de listes envoyées par les auditeurs.

Logo du podcast 99% Invisible
Plus récemment, je suis tombé, via le site de Jason Kottke, sur 99% Invisible, un podcast « hebdomadaire d’exploration du processus et de la force du design et de l’architecture », de Roman Mars. Déjà à son 260e épisode le 23 mai 2017, ce podcast explore ce qui fait la force invisible des choses qui nous entourent — il y a parfois des épisodes sur des objets, concepts ou pratiques du passé.

Pour ne citer que quelques exemples, « The Eponymist », sur le nommage de concepts ou d’objets portant le nom de leur créateur : la silhouette, le Bic et le Biro, quelques maladies (Creutzfelt-Jacob, Mayer-Rokitansky-Küster…) ; « Atom in the Garden of Eden » sur les expérimentations autour de l’utilisation du nucléaire pour l’agriculture, ou, parmi mes préférés, « The Ice King », sur le premier importateur de glace en Inde et « The Mystery House », qui raconte l’histoire de Sarah Winchester (née Pardee). Héritière de la fortune des Winchester (de l’inventeur de la carabine du même nom), et à la suite de nombreuses tragédies familiales (mari mourant jeune, enfant ne pouvant pas absorber les protéines des aliments…), elle décide sur les conseils d’un médium de faire construire un manoir titanesque. L’histoire ne retient que la mention des esprits et de la salle de « séance », mais essayait-elle simplement d’être une architecte, à une époque où il était impossible pour une femme de l’être ?

Deux épisodes en particulier m’ont conduit, pour l’un, à m’intéresser à un autre podcast (un documentaire audio, à vrai dire, ne comportant que huit épisodes), pour l’autre, à me dire que, décidément, la narration de 99% Invisible était vraiment bien pensée et réalisée, proposant une immersion incroyable dans les histoires racontées.

Le premier, « Containers », raconte la création d’un moyen de transport aujourd’hui invisible mais omniprésent, le transport par conteneur sur de gros bateaux (image via franceinfo:). L’épisode de 99% Invisible propose des extraits du documentaire audio complet, créé par Alexis C. Madrigal, journaliste entre autres pour The Atlantic. Je suis tombé immédiatement dans le récit, et ai dévoré l’épisode ainsi que les huit épisodes du documentaire audio original.
Containers - Medium

Le second est un épisode très récent, « This is Chance: Anchorwoman of the Great Alaska Earthquake » (épisode 259 du 16 mai 2017). Enregistré en public et avec des musiciens (lors de Radiotopia en 2016), il raconte le grand tremblement de terre du 27 mars 1964 à Anchorage, en Alaska, qui fit 139 victimes et engendra de nombreuses destructions de maisons, routes et buildings. Genie Chance (un nom pareil ne s’invente pas), opératrice radio et présentatrice (anchorwoman) prit le micro à partir d’un commissariat de police pour continuer à diffuser des actualités, des appels, des messages informatifs à destination de la population. Le signal, local, a été récupéré à Fairbanks… Puis à Juneau, retransmis à Seattle… En peu de temps, tous les États-Unis et quelques stations internationales diffusaient en direct la station de Chance. L’épisode est une recréation des événements, comportant de longs passages de diffusion « comme en direct », et propose une immersion ahurissante dans l’événement.
Les dommages sur la 4e avenue d'Anchorage, Alaska. US Army/Domaine public via Wikipedia

En bref, bonne écoute, j’espère que cela égayera vos trajets, vos soirées chez vous, et vous apportera à la fois le divertissement et la connaissance des 99% de choses invisibles qui nous entourent.

Sunday, April 24, 2016

Architecture, philosophie et sociologie : Comment Israël restructure l'espace géographique au détriment de la population palestinienne à travers trois exemples

Lors d'un voyage en Palestine, dans le cadre du jumelage entre la ville d'Hennebont (Bretagne, France) et celle de Halhul (Palestine), nous avons visité le musée de l'art islamique à Jérusalem, le 7 avril. Nous nous sommes rendus compte de l'impact que peut avoir la structuration urbaine sur des métiers que l'on pourrait penser moins touchés, les taxis. Au retour du musée, alors que le voyage à l'aller s'était fait avec un chauffeur palestinien sur une distance plutôt longue, le trajet a été bien plus court : le chauffeur, israélien cette fois (le musée est situé dans Jérusalem-ouest) a emprunté les petites rues de Jérusalem, y compris dans la vieille ville, dont l'entrée est contrôlée par des barrières automatiques qui n'auraient sans doute pas laissé passer le chauffeur palestinien. Anecdote sensiblement banale, mais représentative des difficultés que peuvent avoir les Palestiniens à se mouvoir sur leur propre territoire1.

Nous avons visité le 11 avril l'association EcoPeace Moyen-Orient, une organisation non-gouvernementale créée en 1994 et qui regroupe des écologistes de Jordanie, de Palestine et d'Israël. Cette association est chargée de la mise en place de systèmes de traitement des déchets et de l'eau, ainsi que de l'éducation à ce sujet et de la valorisation de projets aidant ce but, particulièrement dans le bassin de la rivière Jourdain2. La partie sud de cette rivière est alimentée par le lac de Tibériade, lui-même alimenté principalement par le Mont Hermon et trois sources, Hasbani, Banias et Dan. La rivière avait autrefois un flux de 1,3 milliards de mètres cubes d'eau par an (son nom en arabe, « Cheria », signifie l'« Abreuvoir »). En 1964, après onze ans de travaux et un conflit israëlo-syrien — conflit précurseur de la guerre de Six Jours de 1967 —, Israël achève la construction d'une série de canaux et de conduits, regroupés sous le nom de Conduit national (National Water Carrier, N.W.C.). EcoPeace estime que 93 % de l'eau est ainsi divertie, principalement via le Conduit national (depuis la guerre des Six Jours, Israël contrôle une grande partie du bassin du Jourdain et de ses sources), vers les colonies du sud Israël (au nord du désert du Néguev), laissant seulement 100 millions de mètres cubes d'eau s'écouler vers la mer Morte. Cette accès limité à l'eau oblige les populations (palestiniens, bédouins...) à imaginer de nouvelles manières de retraiter les eaux usées, alors que le climat est de plus en plus sec et les infrastructures souvent en très mauvais état. L'accès lui-même à la rivière, considérée zone militaire, s'il a permis en partie de protéger l'habitat naturel, a aussi rendu ses abords extrêmement pollués car utilisés comme une décharge publique et déversoir des eaux usées. Nous en avons eu un exemple lors de notre pique-nique sur les bords de la rivière al-Auja.

Enfin, si ce n'est pas à proprement parler une chose que nous avons pu constater lors de notre voyage d'avril, il est nécessaire néanmoins d'évoquer l'exemple marquant du camp de Jénine, en 2002. À partir du mois de mars 2002, en réponse à des attaques palestiniennes — la seconde intifada lancée en septembre 2000, « intifada el-Aqsa » en référence à la mosquée de Jérusalem — l'armée israélienne (F.D.I., Force de Défense Israëlienne) lance l' « Opération Rempart », ciblant les villes de Ramallah, Naplouse, Bethléem, ainsi que les camps de réfugiés de Jénine, Balata et Tulkarm. À Jénine en particulier les soldats de l'armée ont non seulement abîmé les bâtiments en traversant des rues trop étroites en véhicules blindés, mais ils ont rasé dans le quartier de Hawashin plus de 140 bâtiments (plus de 200 autres bâtiments ont été gravement endommagés), laissant, selon Human Rights Watch, « environ 4.000 personnes sans abri, soit le quart de la population3 ». Les soldats ont progressé dans le camp en utilisant une méthode relativement récente dite de « géométrie inversée », en « marchant à travers les murs » des habitations. Au lieu d'utiliser les rues existantes, les espaces publics, l'espace privé — murs, plafonds, sols des habitations — devient l'espace public et la ville n'est plus simplement le lieu des affrontements, mais le moyen lui-même de ces affrontements. Eyal Weizman, architecte, en parle longuement dans un livre, Hollow Land: Israel's Architecture of Occupation4.


Plus de lecture :


1Voir aussi, bien sûr, les problèmes de déplacement liés aux checkpoints, aux cartes d'identité et aux zones géographiques accessibles en fonction de celles-ci.
2EcoPeace, Projet : Réhabilitation de la rivière Jourdain (en anglais), http://foeme.org/www/?module=projects&record_id=23
3HRW News, Israël/Territoires occupés: nécessité d'une enquête sur les crimes de guerre commis à Jénine, 3 mai 2002, https://www.hrw.org/legacy/french/press/2002/israel0503.htm
4Eyal Weizman, Hollow Land : Israel's Architecture of Occupation, éditions Verso, mai 2007 [un extrait, en anglais] ; un long passage du livre a été traduit en français : À travers les murs : l'architecture de la nouvelle guerre urbaine, aux éditions de La Fabrique, paru en mars 2008.