Ruby/Linux Установленные драгоценные камни не загружены

Я настраиваю новую виртуальную машину Ubuntu 18.04, и у меня возникают проблемы с моими приложениями Ruby. Ruby — это версия 2.5.1 (стандартная с 18.04). Gems устанавливаются с помощью sudo, поскольку они загружаются приложениями, работающими под несколькими разными идентификаторами пользователя.

Они не находят ни одного из установленных драгоценных камней!

rful011@secgenprd02:~$ sudo gem install sys-proctable
Fetching: sys-proctable-1.2.5.gem (100%)
Successfully installed sys-proctable-1.2.5
Parsing documentation for sys-proctable-1.2.5
Installing ri documentation for sys-proctable-1.2.5
Done installing documentation for sys-proctable after 0 seconds
1 gem installed

rful011@secgenprd02:~$ irb
irb(main):001:0> require "sys/proctable"
Traceback (most recent call last):
    4: from /usr/bin/irb:11:in `<main>'
    3: from (irb):1
    2: from /usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    1: from /usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
LoadError (cannot load such file -- sys/proctable)

драгоценный камень env говорит:

  - GEM PATHS:
    - /var/lib/gems/2.5.0

ls:

rful011@secgenprd02:~$ ls -ld /var/lib/gems/2.5.0/gems/sys-proctable-1.2.5/
drwxr-xr-x 6 root root 181 Jul  7 17:26 /var/lib/gems/2.5.0/gems/sys-proctable-1.2.5/

Любые предложения о том, как диагностировать эту проблему, приветствуются! Я нахожусь в том месте, где я подумываю стереть виртуальную машину и начать заново - к сожалению, это не тривиально.

Одна дополнительная точка данных. Гемы изначально были установлены марионеткой, которая работает с umask, запрещающим «другим» доступ (известная функция поставщика гем-пакетов puppet). Я удалил их вручную, а затем переустановил из процесса с правильным umask. Я тщательно проверил разрешение всех файлов в установленных драгоценных камнях.

Я думаю, что есть что-то еще, что имеет неправильное разрешение, которое мешает загрузке драгоценных камней.


person Russell Fulton    schedule 07.07.2020    source источник


Ответы (2)


$ gem install sys-proctable                                                                                                                                                                                             ‹2.6.1›
Fetching sys-proctable-1.2.5.gem
Successfully installed sys-proctable-1.2.5
Parsing documentation for sys-proctable-1.2.5
Installing ri documentation for sys-proctable-1.2.5
Done installing documentation for sys-proctable after 0 seconds
1 gem installed

~/code/test/ts ⌚ 3:19:05
$ irb                                                                                                                                                                                                                   ‹2.6.1›
irb(main):001:0> require 'sys/proctable'
=> true

Работает на меня. По какой-то конкретной причине вы используете sudo gem install вместо gem install? Кроме того, как вы установили Ruby? Я предполагаю, что глобальная установка sudo конфликтует с тем, как вы установили Ruby? Я использую rbenv, и здесь, в Ubuntu, он отлично работал.

person nolyoly    schedule 07.07.2020
comment
Это не дает ответа на вопрос. Чтобы подвергнуть критике или запросить разъяснения у автора, оставьте комментарий под его публикацией. – Из обзора - person slowjack2k; 07.07.2020

Я, наконец, отследил это, это была проблема с правами доступа к файлу из-за того, что первоначальная установка происходила с неправильным umask.

rful011@secgenprd02:~$ ls -ld /var/lib/gems/2.5.0/*
drwx------  2 root root    6 Jun 26 11:18 /var/lib/gems/2.5.0/build_info
drwx------  2 root root 4096 Jul  7 17:26 /var/lib/gems/2.5.0/cache
drwx------  3 root root   33 Jul  5 10:04 /var/lib/gems/2.5.0/doc
drwx------  3 root root   26 Jun 26 11:18 /var/lib/gems/2.5.0/extensions
drwxr-xr-x 29 root root 4096 Jul 13 08:28 /var/lib/gems/2.5.0/gems
drwx------  2 root root 4096 Jul 13 08:28 /var/lib/gems/2.5.0/specifications

Я исправил каталог драгоценных камней, но не другие. В частности, доступ к спецификациям осуществляется при загрузке драгоценных камней, исправление этого само по себе привело к загрузке драгоценных камней.

Что очень сбивает с толку, так это то, что ошибка разрешения файла перехватывается ruby, и все, что вы получаете, это ошибочное / запутанное сообщение, что не может загрузить такой файл -- ‹gem name›

person Russell Fulton    schedule 12.07.2020