在 Ubuntu 16.04 下从 shell 脚本访问已安装的 ruby​​ gem 包时出现问题

在 Ubuntu 16.04 下从 shell 脚本访问已安装的 ruby​​ gem 包时出现问题

我以前在Ubuntu 16.04下snap安装的是最新版本ruby

$ sudo snap install ruby --classic
$ which ruby
/snap/bin/ruby
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]

然后我安装了一个 ruby​​ gem pdfbeads(一个 PDF 创建实用程序)

sudo gem install pdfbeads

此命令将实用程序安装为 ~/.gem/gems/pdfbeads-1.1.1/bin/pdfbeads。但是,当我尝试在将 DJVU 文件转换为 PDF 格式的 shell 脚本中使用此程序时,我收到以下错误消息

djvu2pdf.sh: line 43: pdfbeads: command not found

虽然默认情况下rubyLinkedIn/snap/bin/在我的帐户中,但实际上不是。以下是安装后的情况:$PATH~/.gem/gem environmentpdfbeads

$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 3.1.2
  - RUBY VERSION: 2.7.0 (2019-12-25 patchlevel 0) [x86_64-linux]
  - INSTALLATION DIRECTORY: ~/.gem
  - USER INSTALLATION DIRECTORY: ~/.gem/ruby/2.7.0
  - RUBY EXECUTABLE: /snap/bin/ruby
  - GIT EXECUTABLE: /usr/bin/git
  - EXECUTABLE DIRECTORY: ~/.gem/bin
  - SPEC CACHE DIRECTORY: ~/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: //etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - ~/.gem
     - /snap/ruby/172/lib/ruby/gems/2.7.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games
     - /usr/local/games
     - /snap/bin

我原本期望 gem 包安装应该能够解决路径问题,但显然并非如此 -pdfbeads不在执行目录路径中。

显然,我可以将这个特定目录添加~/.gem/gems/pdfbeads-1.1.1/bin/到我的目录中$PATH来解决这个特定问题。但是,由于这是我第一次使用ruby,因此我正在寻找一种更通用的解决方案,这样每次安装另一个 ruby​​ gem 时就不需要做同样的事情了。

我对各位专家都有一个问题ruby- 是否有某种标准的、更优雅的方法来解决这个问题并且还能涵盖任何未来的 gem 安装?

答案1

Gem 二进制文件也是在中创建的~/.gem/bin,因此您可以将该单个目录添加到您的路径中以访问所有已安装的 gem。

相关内容