flathub-infra / ide-flatpak-wrapper

Wrapper for setting up development environment in flatpak sandbox
MIT License
15 stars 13 forks source link

Set up Ruby packages #15

Closed johalaoui closed 2 years ago

johalaoui commented 2 years ago

Set GEM_HOME and add GEM_HOME/bin to PATH. This enables to install gems via gem install <PKG> from the terminal of the IDE and run possible binaries afterward.

In the terminal of VSCodium: Before:

user1@ubuntu-desktop:~/Desktop/git/com.vscodium.codium$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 3.2.22
  - RUBY VERSION: 3.0.2 (2021-07-07 patchlevel 107) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/lib/x86_64-linux-gnu/ruby/gems/3.0.0
  - USER INSTALLATION DIRECTORY: /home/user1/.var/app/com.vscodium.codium/data/gem/ruby/3.0.0
  - RUBY EXECUTABLE: /usr/bin/ruby
  - GIT EXECUTABLE: /usr/bin/git
  - EXECUTABLE DIRECTORY: /usr/bin
  - SPEC CACHE DIRECTORY: /home/user1/.var/app/com.vscodium.codium/data/gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /etc
  - RUBYGEMS PLATFORMS:
     - ruby
     - x86_64-linux
  - GEM PATHS:
     - /usr/lib/x86_64-linux-gnu/ruby/gems/3.0.0
     - /home/user1/.var/app/com.vscodium.codium/data/gem/ruby/3.0.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /app/bin
     - /usr/bin
     - /home/user1/.var/app/com.vscodium.codium/data/node/bin
     - /home/user1/.var/app/com.vscodium.codium/data/cargo/bin
     - /home/user1/.var/app/com.vscodium.codium/data/python/bin

user1@ubuntu-desktop:~/Desktop/git/com.vscodium.codium$ gem install rubocop
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /usr/lib/x86_64-linux-gnu/ruby/gems/3.0.0 directory.

After:

user1@ubuntu-desktop:~/Desktop/git/com.vscodium.codium$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 3.2.22
  - RUBY VERSION: 3.0.2 (2021-07-07 patchlevel 107) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/user1/.var/app/com.vscodium.codium/data/gem
  - USER INSTALLATION DIRECTORY: /home/user1/.var/app/com.vscodium.codium/data/gem/ruby/3.0.0
  - RUBY EXECUTABLE: /usr/bin/ruby
  - GIT EXECUTABLE: /usr/bin/git
  - EXECUTABLE DIRECTORY: /home/user1/.var/app/com.vscodium.codium/data/gem/bin
  - SPEC CACHE DIRECTORY: /home/user1/.var/app/com.vscodium.codium/data/gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /etc
  - RUBYGEMS PLATFORMS:
     - ruby
     - x86_64-linux
  - GEM PATHS:
     - /home/user1/.var/app/com.vscodium.codium/data/gem
     - /home/user1/.var/app/com.vscodium.codium/data/gem/ruby/3.0.0
     - /usr/lib/x86_64-linux-gnu/ruby/gems/3.0.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /app/bin
     - /usr/bin
     - /home/user1/.var/app/com.vscodium.codium/data/node/bin
     - /home/user1/.var/app/com.vscodium.codium/data/cargo/bin
     - /home/user1/.var/app/com.vscodium.codium/data/python/bin
     - /home/user1/.var/app/com.vscodium.codium/data/gem/bin

user1@ubuntu-desktop:~/Desktop/git/com.vscodium.codium$ gem install rubocop
Fetching rubocop-1.31.2.gem
Successfully installed rubocop-1.31.2
Parsing documentation for rubocop-1.31.2
Installing ri documentation for rubocop-1.31.2
Done installing documentation for rubocop after 6 seconds
1 gem installed

user1@ubuntu-desktop:~/Desktop/git/com.vscodium.codium$ gem info rubocop

*** LOCAL GEMS ***

rubocop (1.31.2)
    Authors: Bozhidar Batsov, Jonas Arvidsson, Yuji Nakayama
    Homepage: https://github.com/rubocop/rubocop
    License: MIT
    Installed at: /home/user1/.var/app/com.vscodium.codium/data/gem

    Automatic Ruby code style checking tool.

I don't know if it is correct because there is still /home/user1/.var/app/com.vscodium.codium/data/gem/ruby/3.0.0 in GEM PATHS.

gasinvein commented 2 years ago

Why change the system install path, does it fix any actual issue? If not, I suppose adding the bindir from the default user install dir to PATH should be enough and setting GEM_HOME should be unnecessary.

johalaoui commented 2 years ago

When trying to install the package in the first scenario it fails. It tries to install it to /usr/lib/x86_64-linux-gnu/ruby/gems/3.0.0 because of the order I think.

gasinvein commented 2 years ago

You can install to the user dir with gem install --user-install ..., and it seems to work fine in flatpak, too, since gem respects XDG basedir spec.

johalaoui commented 2 years ago

This would install the package to /home/user1/.var/app/com.vscodium.codium/data/gem/ruby/3.0.0/bin which would need to be changed every version I think or the latest could be picked every time by sorting and selecting.

gasinvein commented 2 years ago

which would need to be changed every version

Not really every, IIRC it changes on Ruby major versions. Anyway, the path is versioned for a reason, I don't think we should mess with it.