Я использовал snap
для установки последней версии ruby
в Ubuntu 16.04
$ sudo snap install ruby --classic
$ which ruby
/snap/bin/ruby
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]
Затем я установил рубиновый драгоценный камень pdfbeads
(служебную программу для создания PDF-файлов)
sudo gem install pdfbeads
. Эта команда устанавливает служебную программу в моем домашнем каталоге как
~ / .gem / gems / pdfbeads-1.1.1 / bin / pdfbeads
.Однако, когда я пытаюсь использовать эту программу в сценарии оболочки, который конвертирует файлы DJVU в формат PDF, я получаю следующее сообщение об ошибке
djvu2pdf.sh: line 43: pdfbeads: command not found
Хотя ruby
связан в / snap / bin /
] по умолчанию находится в моем $ PATH
, а ~ / .gem /
- нет. Вот среда gem
после установки 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.
У меня есть вопрос ко всем экспертам ruby
- есть ли какой-нибудь стандартный, более элегантный способ решения этой проблемы, который также охватил бы любые будущие установки драгоценных камней?
Бинарные файлы Gem также создаются в ~ / .gem / bin
, поэтому вы можете добавить этот единственный каталог в свой путь, чтобы иметь доступ ко всем установленным гемам.