Ubuntu mauvais interpréteur : permission non accordée bundle install

Résolu/Fermé
Sawney - Modifié le 29 nov. 2021 à 14:59
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 30 nov. 2021 à 12:30
Bonjour à tous,

Je viens de créer un dual boot windows/ubuntu sur ma machine dans le but de développer avec ruby on rails.

Tout d'abord, j'ai un problème avec l'installation de
ruby
. J'ai besoin de la version 2.6.5 (que j'ai installé avec
rbenv
), mais lorsque je fais la commande
rbenv global 2.6.5
,
ruby
ne change pas de version et reste à cette par défaut :
2.7.0
. Cela ne fonctionne toujours pas, même avec la commande
rbenv local 2.6.5
..

Ensuite, j'ai eu un nouveau message d'erreur lorsque je faisais un
bundle install
:

marie@travail:~$ bundle install
bash: /usr/local/bin/bundle : /home/marie/.rbenv/versions : mauvais interpréteur: Permission non accordée


En effet, j'ai changé (parce que je l'ai vu dans un forum) le fichier
/usr/local/bin/bundle
:
j'ai modifié la première ligne en :
#!/home/marie/.rbenv/versions


Sachez que j'ai modifié toutes les permissions du chemin et je ne vois vraiment pas d'où vient le problème.
Même lorsque j'entre
sudo bundle install
, il me renvoie Permission non accordée;

Je ne comprends plus rien, je ne sais pas quoi faire... J'ai vu sur un autre forum que le problème pouvait venir de ma partition alors j'ai fais un
cat /etc/fstab
et là, je suis complètement perdue....

Voici le contenu de
/etc/fstab 
:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/nvme0n1p5 during installation
UUID=5ab942be-c758-42c8-82a9-a6502c5e6404 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=4CEB-EA65  /boot/efi       vfat    umask=0077      0       1
/swapfile       none            swap    sw              0       0

Si vous avez une idée ou une solution, n'hésitez pas..

Merci d'avance
A voir également:

2 réponses

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 749
Modifié le 29 nov. 2021 à 15:24
Bonjour,

Bon il y a plusieurs choses qui se mélangent dans ton message, donc on va essayer de démêler tout ça :-)

Pour commencer on essaye d'installer autant que possible ses logiciels via son gestionnaire de paquets (dans ton cas,
apt
) ou tout logiciel construit dessus (dont la logithèque Ubuntu).

Pour installer
rbenv
:

sudo apt update
sudo apt upgrade
sudo apt install rbenv


Pour apprendre à utiliser une commande, l'idéal est de lire au préalable sa page de
man
en tapant dans un terminal
man rbenv
(les pages de man sont également disponibles en ligne, voici la page de man de
rbenv
).

Comme l'indique cette page,
rbenv
permet d'installer et de basculer entre différents interpréteurs
ruby
. Dans ton cas je présume qu'il faudrait donc lancer :

rbenv init
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
rbenv install 2.4.5
rbenv global 2.4.5
ruby -v


Peux-tu me reporter le résultat de ces différentes commande

Voyons à présent quelques pistes (à mon avis banc

/usr/local/bin/bundle

Je ne sais pas de quoi il s'agit, mais le chemin laisse penser que
bundle
(peu importe ce que c'est) n'a pas été installé via
apt
donc a priori ça n'est pas bon signe (ou il existe une manière plus propre de faire).

Si tu estimes que tu as besoin de cet exécutable, il faut donc installer le bon paquet via
apt
. Pour le retrouver, tu peux utiliser
apt-file
:

sudo apt install apt-file
sudo apt-file update
sudo apt-file search bundle | grep bin/bundle$


Sous Debian, il est fournit par le paquet
ruby-bundler
et donc on lancerait :

sudo apt install ruby-bundler


#!/home/marie/.rbenv/versions

Un script dont la première ligne commence par
#!
dispose d'un shebang, qui permet de dire quel interpréteur (e.g.,
bash
,
python
,
perl
,
ruby
,
php
...) utiliser pour exécuter le script. Cet interpréteur doit être un exécutable, et il est traditionnellement localisé dans
/usr/bin
(
/bin
pour bash). Donc par exemple, pour un script bash, le shebang serait
#!/usr/bin/bash
.

En ce sens, le shebang que tu as indiqué dans ton fichier me paraît bizarre, on ne dirait pas qu'il s'agisse d'un chemin vers un interpréteur.

Le chemin
/home/marie/.rbenv/versions
existe probablement, mais comme ce fichier n'a pas de droits en exécution (voir
ls -l /home/marie/.rbenv/versions
), il est normal que ton shell te réponde "Permission non accordée".

Voici quelques conseils et recommandations quand tu as une erreur de permission.
  • Commence par comprendre à quoi est due l'erreur :
    • Quels sont les droits associés au fichier concerné -
      ls -l
      ?
    • Quels est mon profil actuel -
      whoami
      ?
    • À quels groupes appartient-il -
      groups
      ?
  • Ne relâche jamais les droits associés à ce fichier (ceux-ci sont généralement bien définis par défaut, et les relâcher pour ouvrir une faille de sécurité) - donc
    chmod
    et
    chown
    sont généralement une très mauvaise approche.
  • Ne te réfugies pas derrière
    sudo
    par réflexe, du moins tant que tu n'as pas compris ce que tu fais : car dès que tu passes en administrateur, une erreur peu avoir des conséquences dramatiques.


/etc/fstab

C'est une mauvaise piste qu'on t'a donné. Certes
/etc/fstab
peut expliquer un problème de permissions, mais ici le problème vient du fait que tu tentes d'exécuter quelque chose qui n'est pas un exécutable.

Ce fichier définit comment est alimentée l'arborescence
/
à partir des différents devices mis à disposition par ton système (ce qui inclue les partitions du disque dur) : pour chaque device est défini son point de montage (dossier vide) et ses options de montage (dont un éventuelle accès en lecture seul, avec l'option
ro
). Dans la même veine il existe des options concernant l'exécution (à savoir, les options
exec
et
noexec
).

Quoi qu'il en soit, tes partitions sont montées normalement, avec les options par défaut, et tu n'as donc aucune raison d'y toucher.

Pour plus de détails tu peux lire
man fstab
.

Bonne chance
0
Bonjour,

J'ai réussi à résoudre tous mes problèmes. En fait, le dual boot que j'avais installé sur mon ordinateur avait un soucis. J'ai donc réinstallé ubuntu et tous les problèmes liés aux droits se sont résolus.

J'ai eu un autre problème avec la commande rbenv : je n'arrivais pas à changer la version de
ruby
.
Lorsque je faisais la commande
rbenv global 2.6.5
puis
ruby -v
, la version de
ruby
ne changeait pas.

J'ai trouvé la solution sur ce forum : https://stackoverflow.com/questions/65817956/your-ruby-version-is-2-7-0-but-your-gemfile-specified-3-0-0

Merci pour votre réponse rapide et votre aide, vos explications m'ont vraiment été utiles.
0
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 749
30 nov. 2021 à 12:30
Tant mieux :-) Merci pour ton retour positif et bonne continuation !
0