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 единственным в системе.
А что будет если установить bash4 и сделать ссылку /usr/bash на /usr/bash4 ? Просто интересно протестировать.
(В ответ на комментарий №0) > > Помимо расширенного функционала в bash4, проблема в том, что все апстримы > ориентируются на bash4 при написании completions. А также устанавливают их в > /usr/share/bash-completion. Этот путь игнорируется нашим bash3. Довольно легко > посмотреть, что в сизифе уже довольно много таких пакетов. Мантейнеры даже не > задумываются о не работоспособности этих completions, иногда просто копируя > спеки из fedora. > Использование bash4 для конкретных пользователей в /etc/passwd тоже приносит > много головной боли. Поэтому хотелось бы видеть новый bash4 единственным в > системе. Не понял, как влияет bash-conpletion на спеки rpm? Что за головная боль при bash4+/etc/passwd, и если это сочетание приносить боль, то может лучше подождать?
(В ответ на комментарий №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 глобально, ничего править не надо. Чего ждать? Или вы о чём-то о своём?
(В ответ на комментарий №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 уже собран и на него даже баги есть. Значит кто-то пользуется. В данный момент, видимо, полтора человека =)))
1. Мне сильно кажется, что вешать багу надо не на bash4, а на bash 2. Соответствующая дискуссия тут: https://lists.altlinux.org/pipermail/devel/2014-December/199302.html Особенно важен ответ ldv@ в конце этой дискуссии.
(В ответ на комментарий №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 Поэтому это вообще не препятствие. Таким образом, главной задачей я вижу оценить реальный масштаб бедствия. И при этом грепать не глазами.
(В ответ на комментарий №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
(В ответ на комментарий №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 но я молчу, не жалуюсь, и даже в репозиторий собираю его. С помощью него же :) В общем, я к тому, что мы обсуждаем правильное общее решение, а не частное.
В системе, где нужен /bin/bash 4-ой версии, до сих пор решение такое: # apt-get install bash4 # mv /bin/bash /bin/bash3 # ln -s /bin/bash4 /bin/bash ?
можно тестировать: http://git.altlinux.org/tasks/211081/
(В ответ на комментарий №11) > можно тестировать: > http://git.altlinux.org/tasks/211081/ Проверил на трёх машинах, сборку и разные скрипты, вход в систему. Мне всё нравится ;)
А girar у тебя работает с этим bash ?
Я давным-давно предлагал тем скриптам girar сделать #!/bin/sh3 -- сейчас получается, что специфическое и развёрнутое в N малом экземпляров по планете держит всех и каждого (аналогичная ситуация, кстати, с file для rpm-build).
ну по крайней мере сейчас появился /bin/sh3 и /bin/bash3
(In reply to comment #13) > А girar у тебя работает с этим bash ? Пусть работоспособность girar с этим bash вас беспокоит в последнюю очередь.
Хорошо, а что нас должно беспокоить, что бы bash4 попал в Sisyphus в качестве дефолтного bash ?
(In reply to comment #17) > Хорошо, а что нас должно беспокоить, что бы bash4 попал в Sisyphus в качестве > дефолтного bash ? Единственное, что будет сложно исправить - это если мы не заметим и пропустим регрессии по --rpm-requires, которые влияют на зависимости собранных пакетов. Всё остальное, наверное, можно будет фиксить, просто отправляя в Сизиф исправленные сборки bash4.
Это довольно просто проверить - мы сейчас запустим пересборку Sisyphus с bash4 и посмотрим на результаты (сравним зависимости у получившихся пакетов).
Сделали пересборку с тестовым таском, проблем с requires и provides обнаружено не было.
(In reply to comment #20) > Сделали пересборку с тестовым таском, проблем с requires и provides обнаружено > не было. Спасибо.
Просматриваю коммиты. Во втором коммите после bash44-023 нашёл такую ошибку: +#if defined (RESTRICTED_SHELL) parent_return: QUIT; - +#endif /* RESTRICTED_SHELL */ В прообразе этого коммита (4.2.45-alt1~24) этой ошибки не было. Смотрю дальше.
(В ответ на комментарий №22) > Просматриваю коммиты. Во втором коммите после bash44-023 нашёл такую ошибку: > > +#if defined (RESTRICTED_SHELL) > parent_return: > QUIT; > - > +#endif /* RESTRICTED_SHELL */ > > В прообразе этого коммита (4.2.45-alt1~24) этой ошибки не было. > Смотрю дальше. В чём именно ошибка? "QUIT;" должно быть вне блока #ifdef или что-то ещё?
Коммит 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. В общем, спасибо, конечно, за проделанную работу, но мне, увы, придётся выполнить её заново на должном уровне.
Также ещё хотел напомнить, что раз у нас появился /bin/sh4 и наверно /bin/bash4, то нужно обновить /etc/shells.
(In reply to comment #25) > Также ещё хотел напомнить, что раз у нас появился /bin/sh4 и наверно > /bin/bash4, то нужно обновить /etc/shells. Думаешь, стоит вносить их в shells?
(В ответ на комментарий №26) > Думаешь, стоит вносить их в shells? Ну как минимум /bin/bash4. Иначе его нельзя указывать в passwd в качестве шелла. А иначе я не знаю зачем он вообще нужен.
На него же будет смотреть /bin/bash
(В ответ на комментарий №28) > На него же будет смотреть /bin/bash Если так, то прошу прощения. Пропустил это.
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).
(In reply to comment #20) > Сделали пересборку с тестовым таском, проблем с requires и provides обнаружено > не было. Тестовая пересборка показала, что сборка некоторых пакетов ломается, насколько я понимаю, из-за старых скриптов, что было вполне ожидаемо.
Странно, но когда мы проверяли пересборку репозитория с bash4 из задания 211081 - такого количества пакетов не ломалось.
(In reply to comment #32) > Странно, но когда мы проверяли пересборку репозитория с bash4 из задания 211081 > - такого количества пакетов не ломалось. Там их не так много (mingw* тут не при чём и портит картину), в большинстве случаев исправления тривиальные, я отправил список в devel.
Во избежание немедленных вопросов про свежевышедший bash 5.0: https://lists.altlinux.org/pipermail/devel/2019-January/206315.html
Непонятно, зачем ждать p9 ?
(In reply to comment #35) > Непонятно, зачем ждать p9 ? Собирать сырой bash5 и не делать его дефолтным до p9 мне некогда.
Дефолтным делать и не нужно, а вот в репозиторий выложить в параллель к bash4 было бы неплохо.