Bug 31399

Summary: bash4 как основной shell в системе
Product: Sisyphus Reporter: Alexey Shabalin <shaba>
Component: bashAssignee: placeholder <placeholder>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: aen, alex, cas, darktemplar, darktemplaralt, ekorneechev, evg, gbophuk_alt, glebfm, icesik, ildar, lav, ldv, legion, m, mike, placeholder, rider, shaba
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on: 32147, 33196    
Bug Blocks: 30940, 32110, 34231, 32136, 34881    

Description Alexey Shabalin 2015-10-23 19:51:33 MSK
bash-3.2 вышел 2006-10
bash-4.0 в 2009-02
bash-4.1 в 2009-12
bash-4.2 в 2011-02
bash-4.3 в 2014-02

Хотелось бы видеть последний bash-4.3(+bash43-042) в сизифе как основной shell.

Помимо расширенного функционала в bash4, проблема в том, что все апстримы ориентируются на bash4 при написании completions. А также устанавливают их в /usr/share/bash-completion. Этот путь игнорируется нашим bash3. Довольно легко посмотреть, что в сизифе уже довольно много таких пакетов. Мантейнеры даже не задумываются о не работоспособности этих completions, иногда просто копируя спеки из fedora.
Использование bash4 для конкретных пользователей в /etc/passwd тоже приносит много головной боли. Поэтому хотелось бы видеть новый bash4 единственным в системе.
Comment 1 gBopHuk 2015-12-18 14:08:58 MSK
А что будет если установить bash4 и сделать ссылку /usr/bash на /usr/bash4 ? Просто интересно протестировать.
Comment 2 gBopHuk 2015-12-18 14:14:49 MSK
(В ответ на комментарий №0)

> 
> Помимо расширенного функционала в bash4, проблема в том, что все апстримы
> ориентируются на bash4 при написании completions. А также устанавливают их в
> /usr/share/bash-completion. Этот путь игнорируется нашим bash3. Довольно легко
> посмотреть, что в сизифе уже довольно много таких пакетов. Мантейнеры даже не
> задумываются о не работоспособности этих completions, иногда просто копируя
> спеки из fedora.
> Использование bash4 для конкретных пользователей в /etc/passwd тоже приносит
> много головной боли. Поэтому хотелось бы видеть новый bash4 единственным в
> системе.

Не понял, как влияет bash-conpletion на спеки rpm?
Что за головная боль при bash4+/etc/passwd, и если это сочетание приносить боль, то может лучше подождать?
Comment 3 gBopHuk 2015-12-18 14:20:26 MSK
(В ответ на комментарий №0)

> 
> Помимо расширенного функционала в bash4, проблема в том, что все апстримы
> ориентируются на bash4 при написании completions. А также устанавливают их в
> /usr/share/bash-completion. Этот путь игнорируется нашим bash3. Довольно легко
> посмотреть, что в сизифе уже довольно много таких пакетов. Мантейнеры даже не
> задумываются о не работоспособности этих completions, иногда просто копируя
> спеки из fedora.
> Использование bash4 для конкретных пользователей в /etc/passwd тоже приносит
> много головной боли. Поэтому хотелось бы видеть новый bash4 единственным в
> системе.

Не понял, как влияет bash-conpletion на спеки rpm?
Что за головная боль при bash4+/etc/passwd, и если это сочетание приносить боль, то может лучше подождать?
Comment 4 Alexey Shabalin 2015-12-18 14:57:06 MSK
(В ответ на комментарий №3)
> Не понял, как влияет bash-conpletion на спеки rpm?
> Что за головная боль при bash4+/etc/passwd, и если это сочетание приносить
> боль, то может лучше подождать?

Что именно Вам не понятно? Попробуйте перечитать еще раз.
- /usr/share/bash-completion - не работает с bash3. А мантейнеры уже пакуют туда(bash-completion-util-linux, bash-completion, bash-completion-gvfs, firewalld, gnome-control-center-data, libappstream-builder, libgio, NetworkManager-daemon, policycoreutils, udisks2). - у всех этих пакетов не работают completion.
Мне удобно пользоваться completion, и хотелось бы что бы они работали.
При переходе на bash4 они автоматически заработают.
- править /bin/bash на /bin/bash4 индивидуально для каждого пользователя в /etc/passwd - вот это боль. при переходе на bash4 глобально, ничего править не надо.
Чего ждать? Или вы о чём-то о своём?
Comment 5 gBopHuk 2015-12-18 18:26:39 MSK
(В ответ на комментарий №4)

> Что именно Вам не понятно? Попробуйте перечитать еще раз.
> - /usr/share/bash-completion - не работает с bash3. А мантейнеры уже пакуют
> туда(bash-completion-util-linux, bash-completion, bash-completion-gvfs,
> firewalld, gnome-control-center-data, libappstream-builder, libgio,
> NetworkManager-daemon, policycoreutils, udisks2). - у всех этих пакетов не
> работают completion.
Ну теперь понятно, спасибо.

> Мне удобно пользоваться completion, и хотелось бы что бы они работали.
> При переходе на bash4 они автоматически заработают.
> - править /bin/bash на /bin/bash4 индивидуально для каждого пользователя в
> /etc/passwd - вот это боль. при переходе на bash4 глобально, ничего править не
> надо.
Так вот к чему /etc/passwd. Я у себя в "курятнике" сделал: mv /bin/bash /bin/bash_3 && ln -s /bin/bash4 /bin/bash. Посмотрим как себя поведёт.

> Чего ждать? Или вы о чём-то о своём?
Я не собираю этот пакет. Мне просто интересно стало, что bash4 уже собран и на него даже баги есть. Значит кто-то пользуется. В данный момент, видимо, полтора человека =)))
Comment 6 ildar 2015-12-28 07:47:18 MSK
1. Мне сильно кажется, что вешать багу надо не на bash4, а на bash
2. Соответствующая дискуссия тут: https://lists.altlinux.org/pipermail/devel/2014-December/199302.html Особенно важен ответ ldv@ в конце этой дискуссии.
Comment 7 Vitaly Lipatov 2017-09-03 09:55:17 MSK
(В ответ на комментарий №6)
...
> 2. Соответствующая дискуссия тут:
> https://lists.altlinux.org/pipermail/devel/2014-December/199302.html Особенно
> важен ответ ldv@ в конце этой дискуссии.

Ответ ldv@ там такой:
>В Сизифе есть пакеты (такие как girar), которые точно сломаются, если
>/bin/sh станет из bash4.  Соответственно, вариантов действий несколько:

>- собрать /bin/sh из bash3, а /bin/bash - из bash4;
>- собрать /bin/sh3 из bash3, перевести все завязанные на sh3 пакеты с
>  /bin/sh на /bin/sh3, после чего собрать /bin/sh из bash4;
>- адаптировать все пакеты, завязанные на sh3, к sh4, после чего собрать
>  /bin/sh из bash4.
Мне кажется, надо идти по среднему варианту, но с модификацией:
1. Не порождать надежды, что /bin/sh это нечто большее, чем POSIX Shell.
2. Собрать /bin/bash3, чтобы те пакеты, которые не могут работать с новым bash, могли на него перейти.
Возможно, известны конструкции, которые можно найти поиском, тогда можно автоматически выявить такие пакеты. В противном случае просто собрать /bin/sh и /bin/bash из bash4 разбираться с проблемами.

Что за пакет girar, не знаю, в Сизифе такого нет, и вряд ли кто им пользуется:
https://packages.altlinux.org/ru/search?utf8=%E2%9C%93&branch=Sisyphus&query=girar
Поэтому это вообще не препятствие.

Таким образом, главной задачей я вижу оценить реальный масштаб бедствия. И при этом грепать не глазами.
Comment 8 Alexey Gladkov 2017-09-03 20:57:37 MSK
(В ответ на комментарий №7)
> Что за пакет girar, не знаю, в Сизифе такого нет, и вряд ли кто им пользуется:

Это так толсто, что даже тонко.

> https://packages.altlinux.org/ru/search?utf8=%E2%9C%93&branch=Sisyphus&query=girar
> Поэтому это вообще не препятствие.

Это ещё какое препятствие :) girar пользуются все в сизифе и не только. Вы тоже им пользуетесь каждый раз, когда собираете пакет в любой репозиторий альта. Вот этот репозиторий нужно проверять в первую очередь:

http://git.altlinux.org/people/ldv/packages/girar.git
Comment 9 Vitaly Lipatov 2017-09-04 09:20:46 MSK
(В ответ на комментарий №8)
> (В ответ на комментарий №7)
> > Что за пакет girar, не знаю, в Сизифе такого нет, и вряд ли кто им пользуется:
> 
> Это так толсто, что даже тонко.
Ну вот не знаю. И в репозитории его нет. И пользователь пакета — тот, кто его устанавливает хотя бы.

> 
> > https://packages.altlinux.org/ru/search?utf8=%E2%9C%93&branch=Sisyphus&query=girar
> > Поэтому это вообще не препятствие.
> 
> Это ещё какое препятствие :) girar пользуются все в сизифе и не только. Вы тоже
> им пользуетесь каждый раз, когда собираете пакет в любой репозиторий альта. Вот
> этот репозиторий нужно проверять в первую очередь:
> 
> http://git.altlinux.org/people/ldv/packages/girar.git
Давайте ещё раз. Мы обсуждаем, какие изменения в репозитории надо сделать, чтобы bash4 стал шеллом по умолчанию, но как пример проблемы нам показывают пакет, которого нет в репозитории пакетов.
Давайте проверками этого репозитория girar.git и выполнением команды subst /bin/sh на /bin/sh3 займётся ответственный за него.

У меня тоже есть такой пакет girar:
http://git.etersoft.ru/people/lav/packages/girar.git
но я молчу, не жалуюсь, и даже в репозиторий собираю его. С помощью него же :)

В общем, я к тому, что мы обсуждаем правильное общее решение, а не частное.
Comment 10 Evgeniy Korneechev 2017-10-20 11:47:54 MSK
В системе, где нужен /bin/bash 4-ой версии, до сих пор решение такое:
# apt-get install bash4
# mv /bin/bash /bin/bash3
# ln -s /bin/bash4 /bin/bash

?
Comment 11 Anton Farygin 2018-09-04 19:20:59 MSK
можно тестировать:
http://git.altlinux.org/tasks/211081/
Comment 12 Vitaly Lipatov 2018-09-05 13:07:05 MSK
(В ответ на комментарий №11)
> можно тестировать:
> http://git.altlinux.org/tasks/211081/
Проверил на трёх машинах, сборку и разные скрипты, вход в систему. Мне всё нравится ;)
Comment 13 Anton Farygin 2018-09-05 13:08:18 MSK
А girar у тебя работает с этим bash ?
Comment 14 Michael Shigorin 2018-09-05 14:36:16 MSK
Я давным-давно предлагал тем скриптам girar сделать #!/bin/sh3 -- сейчас получается, что специфическое и развёрнутое в N малом экземпляров по планете держит всех и каждого (аналогичная ситуация, кстати, с file для rpm-build).
Comment 15 Anton Farygin 2018-09-05 14:42:33 MSK
ну по крайней мере сейчас появился /bin/sh3 и /bin/bash3
Comment 16 Dmitry V. Levin 2018-09-05 14:53:13 MSK
(In reply to comment #13)
> А girar у тебя работает с этим bash ?

Пусть работоспособность girar с этим bash вас беспокоит в последнюю очередь.
Comment 17 Anton Farygin 2018-09-05 14:57:26 MSK
Хорошо, а что нас должно беспокоить, что бы bash4 попал в Sisyphus в качестве дефолтного bash ?
Comment 18 Dmitry V. Levin 2018-09-05 15:01:55 MSK
(In reply to comment #17)
> Хорошо, а что нас должно беспокоить, что бы bash4 попал в Sisyphus в качестве
> дефолтного bash ?

Единственное, что будет сложно исправить - это если мы не заметим и пропустим регрессии по --rpm-requires, которые влияют на зависимости собранных пакетов.
Всё остальное, наверное, можно будет фиксить, просто отправляя в Сизиф исправленные сборки bash4.
Comment 19 Anton Farygin 2018-09-05 15:03:22 MSK
Это довольно просто проверить - мы сейчас запустим пересборку Sisyphus с bash4 и посмотрим на результаты (сравним зависимости у получившихся пакетов).
Comment 20 Aleksei Nikiforov 2018-09-13 15:04:38 MSK
Сделали пересборку с тестовым таском, проблем с requires и provides обнаружено не было.
Comment 21 Dmitry V. Levin 2018-09-14 00:39:18 MSK
(In reply to comment #20)
> Сделали пересборку с тестовым таском, проблем с requires и provides обнаружено
> не было.

Спасибо.
Comment 22 Dmitry V. Levin 2018-09-18 14:50:56 MSK
Просматриваю коммиты.  Во втором коммите после bash44-023 нашёл такую ошибку:

+#if defined (RESTRICTED_SHELL)
 parent_return:
       QUIT;
-
+#endif /* RESTRICTED_SHELL */

В прообразе этого коммита (4.2.45-alt1~24) этой ошибки не было.
Смотрю дальше.
Comment 23 Aleksei Nikiforov 2018-09-18 15:15:58 MSK
(В ответ на комментарий №22)
> Просматриваю коммиты.  Во втором коммите после bash44-023 нашёл такую ошибку:
> 
> +#if defined (RESTRICTED_SHELL)
>  parent_return:
>        QUIT;
> -
> +#endif /* RESTRICTED_SHELL */
> 
> В прообразе этого коммита (4.2.45-alt1~24) этой ошибки не было.
> Смотрю дальше.

В чём именно ошибка? "QUIT;" должно быть вне блока #ifdef или что-то ещё?
Comment 24 Dmitry V. Levin 2018-09-19 15:19:43 MSK
Коммит 4.2.50-alt1.1-1-g41b869c6 (Import archive bash-4.4) - это надругательство над репозиторием.

Коммит 4.2.50-alt1.1-47-ga2b2390b (Update patches) обессмысливает коммиты 4.2.50-alt1.1-26-gd83f7f7f..4.2.50-alt1.1-45-ge029356c.

В общем, спасибо, конечно, за проделанную работу, но мне, увы, придётся выполнить её заново на должном уровне.
Comment 25 Alexey Gladkov 2018-09-19 15:38:49 MSK
Также ещё хотел напомнить, что раз у нас появился /bin/sh4 и наверно /bin/bash4, то нужно обновить /etc/shells.
Comment 26 Dmitry V. Levin 2018-09-19 16:16:28 MSK
(In reply to comment #25)
> Также ещё хотел напомнить, что раз у нас появился /bin/sh4 и наверно
> /bin/bash4, то нужно обновить /etc/shells.

Думаешь, стоит вносить их в shells?
Comment 27 Alexey Gladkov 2018-09-19 16:24:25 MSK
(В ответ на комментарий №26)
> Думаешь, стоит вносить их в shells?

Ну как минимум /bin/bash4. Иначе его нельзя указывать в passwd в качестве шелла. А иначе я не знаю зачем он вообще нужен.
Comment 28 Anton Farygin 2018-09-19 16:25:34 MSK
На него же будет смотреть /bin/bash
Comment 29 Alexey Gladkov 2018-09-19 16:52:51 MSK
(В ответ на комментарий №28)
> На него же будет смотреть /bin/bash

Если так, то прошу прощения. Пропустил это.
Comment 30 Repository Robot 2018-12-19 14:16:08 MSK
bash-defaults-4.4.23-alt1 -> sisyphus:

Tue Dec 18 2018 Dmitry V. Levin <ldv@altlinux> 4.4.23-alt1
- Changed default sh and bash to sh4 and bash4, respectively (closes: #31399).
Comment 31 Dmitry V. Levin 2018-12-20 05:12:22 MSK
(In reply to comment #20)
> Сделали пересборку с тестовым таском, проблем с requires и provides обнаружено
> не было.

Тестовая пересборка показала, что сборка некоторых пакетов ломается, насколько я понимаю, из-за старых скриптов, что было вполне ожидаемо.
Comment 32 Anton Farygin 2018-12-20 10:02:26 MSK
Странно, но когда мы проверяли пересборку репозитория с bash4 из задания 211081 - такого количества пакетов не ломалось.
Comment 33 Dmitry V. Levin 2018-12-20 15:34:32 MSK
(In reply to comment #32)
> Странно, но когда мы проверяли пересборку репозитория с bash4 из задания 211081
> - такого количества пакетов не ломалось.

Там их не так много (mingw* тут не при чём и портит картину), в большинстве случаев исправления тривиальные, я отправил список в devel.
Comment 34 Michael Shigorin 2019-01-09 16:12:04 MSK
Во избежание немедленных вопросов про свежевышедший bash 5.0:
https://lists.altlinux.org/pipermail/devel/2019-January/206315.html
Comment 35 Anton Farygin 2019-01-09 23:38:39 MSK
Непонятно, зачем ждать p9 ?
Comment 36 Dmitry V. Levin 2019-01-09 23:40:52 MSK
(In reply to comment #35)
> Непонятно, зачем ждать p9 ?

Собирать сырой bash5 и не делать его дефолтным до p9 мне некогда.
Comment 37 Anton Farygin 2019-01-10 07:30:19 MSK
Дефолтным делать и не нужно, а вот в репозиторий выложить в параллель к bash4 было бы неплохо.