Summary: | bash4 как основной shell в системе | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Alexey Shabalin <shaba> |
Component: | bash | Assignee: | 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
А что будет если установить 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, и если это сочетание приносить боль, то может лучше подождать?
(В ответ на комментарий №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 было бы неплохо. |