Bug 31399 - bash4 как основной shell в системе
: bash4 как основной shell в системе
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/bash)
: unstable
: all Linux
: P3 normal
Assigned To:
:
:
:
: 32147 33196
: 30940 32110 32136 34231 34881
  Show dependency tree
 
Reported: 2015-10-23 19:51 by
Modified: 2019-01-10 07:30 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2015-10-23 19:51:33
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 From 2015-12-18 14:08:58 -------
А что будет если установить bash4 и сделать ссылку /usr/bash на /usr/bash4 ?
Просто интересно протестировать.
------- Comment #2 From 2015-12-18 14:14:49 -------
(В ответ на комментарий №0)

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

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

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

Не понял, как влияет bash-conpletion на спеки rpm?
Что за головная боль при bash4+/etc/passwd, и если это сочетание приносить
боль, то может лучше подождать?
------- Comment #4 From 2015-12-18 14:57:06 -------
(В ответ на комментарий №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 From 2015-12-18 18:26:39 -------
(В ответ на комментарий №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 From 2015-12-28 07:47:18 -------
1. Мне сильно кажется, что вешать багу надо не на bash4, а на bash
2. Соответствующая дискуссия тут:
https://lists.altlinux.org/pipermail/devel/2014-December/199302.html Особенно
важен ответ ldv@ в конце этой дискуссии.
------- Comment #7 From 2017-09-03 09:55:17 -------
(В ответ на комментарий №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 From 2017-09-03 20:57:37 -------
(В ответ на комментарий №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 From 2017-09-04 09:20:46 -------
(В ответ на комментарий №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 From 2017-10-20 11:47:54 -------
В системе, где нужен /bin/bash 4-ой версии, до сих пор решение такое:
# apt-get install bash4
# mv /bin/bash /bin/bash3
# ln -s /bin/bash4 /bin/bash

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

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

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

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

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

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

В чём именно ошибка? "QUIT;" должно быть вне блока #ifdef или что-то ещё?
------- Comment #24 From 2018-09-19 15:19:43 -------
Коммит 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 From 2018-09-19 15:38:49 -------
Также ещё хотел напомнить, что раз у нас появился /bin/sh4 и наверно
/bin/bash4, то нужно обновить /etc/shells.
------- Comment #26 From 2018-09-19 16:16:28 -------
(In reply to comment #25)
> Также ещё хотел напомнить, что раз у нас появился /bin/sh4 и наверно
> /bin/bash4, то нужно обновить /etc/shells.

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

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

Если так, то прошу прощения. Пропустил это.
------- Comment #30 From 2018-12-19 14:16:08 -------
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 From 2018-12-20 05:12:22 -------
(In reply to comment #20)
> Сделали пересборку с тестовым таском, проблем с requires и provides обнаружено
> не было.

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

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

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