Description
- OS : OpenBSD 6.x
Depuis OpenBSD 6.0, l’option de montage wxallowed est configuré par
défaut sur /usr/local. Pour ceux qui ne le savent pas, c’est une protection
système. Si la partition a cette option, les logiciels sont autorisés à
fonctionner depuis cette partition, sinon ils ne pourront fonctionner et
émettront un message de violation W^X, tel que :
$ dmesg | grep wxallowed
/home/hs/.local/share/virtualenvs/mybeautifullproject-q1koN8ay/bin/python3(26392): W^X binary outside wxallowed mountpoint
De fait, puisque seul /usr/local a cette option activée, si vous tentez
d’exécuter un programme depuis, par exemple, votre $HOME, cela ne fonctionnera
pas. Et, c’est tout le problème avec les environnements Python qui doivent
fonctionner dans votre répertoire personnel.
Dans les faits, voici ce qui se passe pour virtualenv :
Code : shell
C’est pareil pour pipenv :
Code : shell
D’autant que ce n’est vraiment pas un problème de droits utilisateurs :
Code : shell
Configuration
Une petite modification système va faciliter notre vie - puisque /usr/local
est la seule partition autorisée à l’exécution des programmes qui nécessitent
la violation W^X :
- Création d’un répertoire utilisateur dedans :
# mkdir -p /usr/local/${my_user}/python - Attribution des droits utilisateur et groupe correcte :
# chown -R ${my_user}:wheel /usr/local/${my_user} - Création d’un lien symbolique :
# ln -s /usr/local/${my_user}/python $home/python
Remplacez ${my_user} par votre identifiant de session ;)
Si vous avez la bonne idée d’utiliser l’outil pipenv, il faudra créer
un nouveau répertoire et le lier symboliquement ; lisez la section TL;DR
ci-dessous…
TL;DR
Remplacez ‘’${my_user}’’ par votre identifiant de session !
=> Pour virtualenv :
# mkdir -p /usr/local/${my_user}/python
# chown -R ${my_user}:wheel /usr/local/${my_user}
# ln -s /usr/local/${my_user}/python $home/python
=> Pour pipenv, il faut rajouter à ce qui suit au-dessus :
$ mkdir /usr/local/$USER/python/virtualenvs
$ ln -s /usr/local/$USER/python/virtualenvs $HOME/.local/share/virtualenvs
Documentations
- La documentation de pipenv - en anglais : https://pipenv.readthedocs.io/en/latest/
- À-propos de l’option de montage wxallowed : le Guide de Migration OpenBSD 5.9 vers 6.0 - EN / FR
- La réponse expliquée sur le forum “obsd4*”
Remerciements
- Ce tutoriel n’existerait pas sans Xavier…
- et, sans cet article anglais, nommé “Using cabal on OpenBSD”