Bug 45251

Summary: gem: Permission denied @ dir_s_mkdir - /var/cache/ruby/gemie/rubygems.org%443
Product: Sisyphus Reporter: Vitaly Chikunov <vt>
Component: rubyAssignee: majioa <majioa>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: 3aHyga, cas, imz, led, majioa, mike, nbr, pav, rider, stalker
Version: unstable   
Hardware: x86   
OS: Linux   

Description Vitaly Chikunov 2023-02-10 19:36:11 MSK
В Сизифе gem не работает под пользователем.

$ docker run --rm -it alt:sisyphus
[root@a8f79b19db3b /]# apt-get install gem su -y
[root@a8f79b19db3b /]# useradd -m test
[root@a8f79b19db3b /]# su - test
su: wtmp open: No such file or directory
[test@a8f79b19db3b ~]$ gem search blake3

*** REMOTE GEMS ***

ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied @ dir_s_mkdir - /var/cache/ruby/gemie/rubygems.org%443
[test@a8f79b19db3b ~]$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision a21a3b7d23) [x86_64-linux]

Естественно, gem install --user-install тоже не работает:

[test@a8f79b19db3b ~]$ gem install --user-install blake3
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied @ dir_s_mkdir - /var/cache/ruby/gemie/index.rubygems.org%443

ps. Для сравнения, то же самое работает в p10:

$ docker run --rm -it alt
[root@40632f4f8194 /]# apt-get install gem su -y
[root@40632f4f8194 /]# useradd -m test
[root@40632f4f8194 /]# su - test
su: wtmp open: No such file or directory
[test@40632f4f8194 ~]$ gem search blake3

*** REMOTE GEMS ***

blake3 (0.1.3)
digest-blake3 (1.3.3.1)
uncle_blake3 (0.0.3)
[test@40632f4f8194 ~]$ ruby -v
ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]

Спасибо,
Comment 1 Малъ Скрылевъ 2023-02-10 20:09:13 MSK
А rbenv / rvm под пользователемъ стоятъ ли? :)
Comment 2 Vitaly Chikunov 2023-02-10 20:18:38 MSK
Приведён пример в докере на чистой системе где ничего лишнего не стоит.
Comment 4 Vitaly Chikunov 2023-02-10 22:27:43 MSK
Сюдя по нему вы специально отключили возможность использовать пользовательские диры для гемов
Comment 5 Vitaly Chikunov 2023-02-10 22:40:56 MSK
Кстати если отревертить верхнюю часть патча, то все равно вылезет ошибки:

$ gem install --user-install blake3
Building native extensions. This could take a while...
ERROR:  While executing gem ... (Errno::ENOENT)
    No such file or directory @ rb_sysopen - libexec/helix

Что за libexec.
Comment 6 Vitaly Chikunov 2023-02-10 22:52:39 MSK
(In reply to Vitaly Chikunov from comment #5)
> Кстати если отревертить верхнюю часть патча, то все равно вылезет ошибки:
> 
> $ gem install --user-install blake3
> Building native extensions. This could take a while...
> ERROR:  While executing gem ... (Errno::ENOENT)
>     No such file or directory @ rb_sysopen - libexec/helix
> 
> Что за libexec.

libexec из этого же патча (строка 257) и дальше

$ gem install --user-install digest-blake3
Successfully installed digest-blake3-1.3.3.1
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied @ dir_s_mkdir - /usr/share/doc/ruby-3.1.0/digest-blake3-1.3.3.1

Предположу, что весь этот патч надо ревертить.
Comment 7 Малъ Скрылевъ 2023-02-11 00:45:58 MSK
gem install --user-install digest-blake3


Куда это ставитъ жемы? въ обшее дерево? тогда это запрещено, и такъ и задумывалось, чтобы не мусорить въ общее дерево пакетовъ. Если нужны самоцвѣты въ user-space, то для этого рекомендованъ, rvm. Тоже самое касается и root-а, не рекомендовано ставить самоцвѣты въ корневое дерево, рекоменованъ способъ rvm-а, въ которомъ, подцѣпляется системный ruby съ его жемами, и переиспользуются они уже локально.
Comment 8 Vitaly Chikunov 2023-02-11 01:14:18 MSK
Не понял про "общее дерево". `gem install --user-install digest-blake3` должен был поставить digest-blake3 пользователю в его личный ~/.gem. Что в этом запретного?

RVM это удобство для работы с разными версиями интерпретатора и наборами гемов — надстройка, которая не должна ломать основной функционал. На этом аккаунте не предполагается работать с несколькими версиями ruby интерпретаторов и наборами гемов. (Кроме того, если разработчику rvm может быть удобно, то пользователю может быть удобно другое.)

ЕСЛИ в Альте этот базовый функционал gem запрещён некой политикой (никаких "рекомендаций" про rvm не нашел), ТО эта штука не должна просто падать по ошибке, А должна выводить пояснение пользователю.

ps. "Рекомендованный" RVM у нас вообще не запакован:

  $ grep bin/rvm /ALT/Sisyphus/*/base/contents_index
  $

Неужто для рекомендованный работы с ruby из репозитория в Альте надо тянуть `curl'ом | bash` из инета какую-то утилиту?
Comment 9 Малъ Скрылевъ 2023-02-11 01:50:17 MSK
(Ответ для Vitaly Chikunov на комментарий #8)
> Не понял про "общее дерево". `gem install --user-install digest-blake3`
> должен был поставить digest-blake3 пользователю в его личный ~/.gem. Что в
> этом запретного?

Значитъ просто нужно исправить, чтобы онъ его туда ставилъ, а не откатывать патчъ. Я перепровѣрую эту проблему.

RVM планируется собрать, но вообщԑ,rvm-овцы рекомендутъ ставить его съ ихъ сайта.
Comment 10 Малъ Скрылевъ 2023-12-12 15:58:46 MSK
Послѣ обновленеія по dist-upgrade нужно перелогиниться :)
Comment 11 Repository Robot 2023-12-14 01:51:16 MSK
ruby-3.1.4-alt1 -> sisyphus:

 Mon Nov 13 2023 Pavel Skrylev <majioa@altlinux> 3.1.4-alt1
 - ^ 3.1.2 -> 3.1.4 (closes #47868)
 - * moved build to rvm
 - * BREAK: changed some things to rpm-build-macros
 - ! fixed:
  + CVE-2022-39253 for bundler
  + enabled permissions to /var/lib/ruby/gemie/ (closes #45251)
  + enable running gemserver (closes #48325)
  + custom gem installation (closes #47660)
  + loading ruby's so libraries (closes #48249)
  + drop explicit dependencies to libs including ssl1.1 (closes #48713)