我以前在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
虽然默认情况下ruby
LinkedIn/snap/bin/
在我的帐户中,但实际上不是。以下是安装后的情况:$PATH
~/.gem/
gem environment
pdfbeads
$ 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。