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

Résolu
Sawney -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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

2 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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
  2. Sawney.-
     
    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
    1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
       
      Tant mieux :-) Merci pour ton retour positif et bonne continuation !
      0