Ubuntu mal intérprete: permiso denegado bundle install

Resuelto
Sawney -  
mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   -
Hola a todos,

Acabo de crear un dual boot de Windows/Ubuntu en mi máquina con el objetivo de desarrollar con Ruby on Rails.

Primero que todo, tengo un problema con la instalación de
ruby
. Necesito la versión 2.6.5 (que instalé con
rbenv
), pero cuando ejecuto el comando
rbenv global 2.6.5
,
ruby
no cambia de versión y se queda en la predeterminada:
2.7.0
. Esto sigue sin funcionar, incluso con el comando
rbenv local 2.6.5
..

Luego, recibí un nuevo mensaje de error cuando hacía un
bundle install
:

marie@travail:~$ bundle install
bash: /usr/local/bin/bundle : /home/marie/.rbenv/versions : mal intérprete: Permiso no concedido


De hecho, cambié (porque lo vi en un foro) el archivo
/usr/local/bin/bundle
:
modifiqué la primera línea a:
#!/home/marie/.rbenv/versions


Sepan que he modificado todos los permisos del camino y realmente no veo de dónde viene el problema.
Incluso cuando ingreso
sudo bundle install
, me responde Permiso no concedido;

No entiendo nada, no sé qué hacer... He visto en otro foro que el problema podría venir de mi partición, así que hice un
cat /etc/fstab
y ahí estoy completamente perdido....

Aquí está el contenido de
/etc/fstab 
:

# /etc/fstab: información estática del sistema de archivos. # # Usa 'blkid' para imprimir el identificador único universal para un # dispositivo; esto puede ser usado con UUID= como una forma más robusta de nombrar dispositivos # que funciona incluso si se añaden y quitan discos. Ver fstab(5). # # <archivo del sistema> <punto de montaje> <tipo> <opciones> <dump> <pass> # / estaba en /dev/nvme0n1p5 durante la instalación UUID=5ab942be-c758-42c8-82a9-a6502c5e6404 / ext4 errors=remount-ro 0 1 # /boot/efi estaba en /dev/nvme0n1p1 durante la instalación UUID=4CEB-EA65 /boot/efi vfat umask=0077 0 1 /swapfile none swap sw 0 0 

Si tienen alguna idea o solución, no duden en decírmelo..

Gracias de antemano

2 respuestas

  1. mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 944
     
    Hola,

    Bueno, hay varias cosas que se mezclan en tu mensaje, así que intentemos desentrañar todo eso :-)

    Para empezar, tratamos de instalar tanto como sea posible los programas a través de su gestor de paquetes (en tu caso,
    apt
    ) o cualquier programa construido sobre esto (como la tienda de software de Ubuntu).

    Para instalar
    rbenv
    :

    sudo apt update sudo apt upgrade sudo apt install rbenv


    Para aprender a usar un comando, lo ideal es leer previamente su página de
    man
    escribiendo en una terminal
    man rbenv
    (las páginas de man también están disponibles en línea, aquí está la página de man de
    rbenv
    ).

    Como indica esta página,
    rbenv
    permite instalar y alternar entre diferentes intérpretes de
    ruby
    . En tu caso, supongo que deberías ejecutar:

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


    ¿Puedes reportarme el resultado de estos diferentes comandos?

    Veamos ahora algunas pistas (en mi opinión, cuestionables)

    /usr/local/bin/bundle

    No sé de qué se trata, pero el camino sugiere que
    bundle
    (no importa qué sea) no ha sido instalado a través de
    apt
    , así que, en principio, eso no es una buena señal (o hay una manera más limpia de hacerlo).

    Si consideras que necesitas este ejecutable, debes instalar el paquete correcto a través de
    apt
    . Para encontrarlo, puedes usar
    apt-file
    :

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


    En Debian, se proporciona a través del paquete
    ruby-bundler
    , así que ejecutaríamos:

    sudo apt install ruby-bundler


    #!/home/marie/.rbenv/versions

    Un script que comienza con
    #!
    tiene un shebang, que indica qué intérprete (por ejemplo,
    bash
    ,
    python
    ,
    perl
    ,
    ruby
    ,
    php
    ...) usar para ejecutar el script. Este intérprete debe ser un ejecutable, y tradicionalmente se encuentra en
    /usr/bin
    (
    /bin
    para bash). Así que, por ejemplo, para un script bash, el shebang sería
    #!/usr/bin/bash
    .

    En este sentido, el shebang que indicaste en tu archivo me parece extraño, no parece ser un camino hacia un intérprete.

    El camino
    /home/marie/.rbenv/versions
    probablemente exista, pero como este archivo no tiene derechos de ejecución (ver
    ls -l /home/marie/.rbenv/versions
    ), es normal que tu shell te responda "Permiso no concedido".

    Aquí tienes algunos consejos y recomendaciones cuando tienes un error de permisos.
    • Empieza por entender a qué se debe el error:
      • ¿Cuáles son los derechos asociados al archivo en cuestión -
        ls -l
        ?
      • ¿Cuál es mi perfil actual -
        whoami
        ?
      • ¿A qué grupos pertenece -
        groups
        ?
    • Nunca relajes los derechos asociados a este archivo (normalmente, están bien definidos por defecto, y relajar los derechos puede abrir una brecha de seguridad) - por lo tanto,
      chmod
      y
      chown
      suelen ser un enfoque muy malo.
    • No te refugies en
      sudo
      por defecto, al menos hasta que entiendas lo que estás haciendo: porque en cuanto pasas a ser administrador, un error puede tener consecuencias dramáticas.


    /etc/fstab

    Es una mala pista que te han dado. Ciertamente,
    /etc/fstab
    puede explicar un problema de permisos, pero aquí el problema radica en que intentas ejecutar algo que no es un ejecutable.

    Este archivo define cómo se alimenta la jerarquía
    /
    a partir de los diferentes dispositivos disponibles en tu sistema (lo que incluye las particiones del disco duro): para cada dispositivo se define su punto de montaje (una carpeta vacía) y sus opciones de montaje (que pueden incluir acceso de solo lectura, con la opción
    ro
    ). De manera similar, existen opciones sobre la ejecución (es decir, las opciones
    exec
    y
    noexec
    ).

    De todos modos, tus particiones están montadas normalmente, con las opciones predeterminadas, así que no tienes ninguna razón para tocarlas.

    Para más detalles, puedes leer
    man fstab
    .

    ¡Buena suerte!
    0
  2. Sawney.-
     
    Hola,

    He conseguido resolver todos mis problemas. De hecho, el dual boot que había instalado en mi computadora tenía un problema. Así que reinstalé Ubuntu y todos los problemas relacionados con los permisos se resolvieron.

    Tuve otro problema con el comando rbenv: no podía cambiar la versión de
    ruby
    .
    Cuando hacía el comando
    rbenv global 2.6.5
    y luego
    ruby -v
    , la versión de
    ruby
    no cambiaba.

    Encontré la solución en este foro: https://stackoverflow.com/questions/65817956/your-ruby-version-is-2-7-0-but-your-gemfile-specified-3-0-0

    Gracias por su rápida respuesta y su ayuda, sus explicaciones realmente me han sido útiles.
    0
    1. mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 944
       
      ¡Qué bien! :-) Gracias por tu comentario positivo y ¡buena continuación!
      0