perl-devel содержит компоненты, используемые в обычных пакетах. В следствие этого perl-devel попадает в системы где не предполагается держать ПО для разработки чего-либо. Из bug 31133: ===== Comment #3 From viy 2015-10-29 18:25:41 (-) [reply] Там политика, в каком то году помню perl перераспилили в Федоре на модули, и из perl их начали пинать, что это уже не перл, переименовывайте, а то лицензию нарушает. вроде, пришлось потом откатывать. Comment #5 From viy 2015-10-29 19:40:55 (-) [reply] сорри, сейчас загружен, если проблема актуальная, то пингните после обновления java, посмотрим, что в других дистрибутивах ===== По поводу актуальности не знаю, что сказать, но выглядит как-то не очень. Если убрать perl-devel будет не сложно, это будет не плохо, как мне думается.
*** Bug 31133 has been marked as a duplicate of this bug. ***
*** Bug 31365 has been marked as a duplicate of this bug. ***
*** Bug 30683 has been marked as a duplicate of this bug. ***
perl-devel определённо содержит только компоненты, которые нужны при разработке. Во-первых это модули для тестирования Test::* и сборки ExtUtils::MakeMaker, потом отладчик, утилиты и наконец заголовочные файлы для сборки xs. Поэтому надо рассматривать каждый пакет, который содержит зависимость на perl-devel, откуда там возникла эта зависимость. Например, Mojolicious это не просто библиотека для веб-приложений, а целый фреймворк для создания веб-приложений, включая тестирование, т.е. по сути инструмент разработки. Модуль Test::Mojo, основан на Test::More и предназначен для создания тестов к веб-приложению. Т.о. Mojolicious вероятно стоит распилить на части: часть модулей как библиотека, а часть как инструмент для разработки. В этом случае зависимость на perl-devel перейдёт на второй подпакет. С другой стороны perl-devel не так уж и страшен - 4.5 Мб на диске. Стоит ли заморачиваться с его распилом на субкомпоненты?
Пока мне видится, что проблема не в perl-devel, а в остальных пакетах. Посмотрю на примере: $ sudo -- rpm -ev perl-devel error: Failed dependencies: perl(AutoSplit.pm) is needed by (installed) perl-Module-Build-0.4231-alt1.noarch perl(B/Deparse.pm) is needed by (installed) perl-YAML-LibYAML-1:0.83-alt1.x86_64 perl(Dumpvalue.pm) is needed by (installed) hwinfo-utils-21.23-alt1.1.x86_64 perl(Dumpvalue.pm) is needed by (installed) perl-CPAN-2.28-alt1.noarch perl(ExtUtils/Install.pm) >= 0.300 is needed by (installed) perl-Module-Build-0.4231-alt1.noarch perl(ExtUtils/Installed.pm) is needed by (installed) perl-Module-Build-0.4231-alt1.noarch perl(ExtUtils/Installed.pm) is needed by (installed) perl-inc-latest-0.500-alt2.noarch perl(ExtUtils/MakeMaker.pm) is needed by (installed) perl-IPC-Cmd-1.04-alt1.noarch perl(ExtUtils/MakeMaker.pm) >= 6.360 is needed by (installed) perl-CPAN-Reporter-1.2018-alt2_3.noarch perl(ExtUtils/MakeMaker.pm) is needed by (installed) perl-inc-latest-0.500-alt2.noarch perl(ExtUtils/MakeMaker.pm) is needed by (installed) perl-CPAN-2.28-alt1.noarch perl(ExtUtils/Manifest.pm) >= 1.540 is needed by (installed) perl-Module-Build-0.4231-alt1.noarch perl(ExtUtils/Manifest.pm) is needed by (installed) perl-CPAN-2.28-alt1.noarch perl(ExtUtils/Mkbootstrap.pm) is needed by (installed) perl-Module-Build-0.4231-alt1.noarch perl(ExtUtils/Mksymlists.pm) is needed by (installed) perl-ExtUtils-CBuilder-0.280236-alt1.noarch perl(Pod/Html.pm) is needed by (installed) perl-Module-Build-0.4231-alt1.noarch perl(TAP/Harness/Env.pm) is needed by (installed) perl-Module-Build-0.4231-alt1.noarch perl(Test/Builder.pm) is needed by (installed) perl-Test-Fatal-0.016-alt1.noarch perl(Test/Harness.pm) is needed by (installed) perl-Module-Build-0.4231-alt1.noarch perl(Test/More.pm) >= 0.960 is needed by (installed) perl-Specio-0.47-alt1.noarch perl(diagnostics.pm) is needed by (installed) evolution-data-server-3.40.3-alt1.x86_64 perl(diagnostics.pm) is needed by (installed) mysqltuner-1.7.2-alt1.noarch $ sudo -- apt-get remove perl-devel Чтение списков пакетов... Завершено Построение дерева зависимостей... Завершено Следующие пакеты будут УДАЛЕНЫ: abiword clamtk evolution-data-server frozen-bubble frozen-bubble-data gscan2pdf hwinfo-utils mysqltuner
error: Failed dependencies: perl(Test/Fatal.pm) is needed by (installed) perl-Specio-0.47-alt1.noarch $ sudo -- rpm -ev perl-Module-Build error: Failed dependencies: perl(Module/Build.pm) is needed by (installed) perl-Alien-SDL-1.446-alt1.noarch perl(Module/Build.pm) is needed by (installed) perl-SDL-2.548-alt2.x86_64 Модули собираемые через Module::Build, содержат сгенерированный конфиг для него ConfigData.pm Если он используется в дальнейшем для сборки чего-либо с этим модулем, то простейший вариант это убрать генерируемую им зависимость на perl(Module/Build.pm). Игорь, вы не могли бы посмотреть предложенные мной изменения и высказать своё мнение? perl-Specio.git=0.47-alt2 http://git.altlinux.org/tasks/283234/ perl-IO-Async.git=0.78-alt2 http://git.altlinux.org/tasks/283235/ perl-Net-BitTorrent-0.052-alt4 http://git.altlinux.org/tasks/283236/
(Ответ для Vitaly Lipatov на комментарий #6) ... > Игорь, вы не могли бы посмотреть предложенные мной изменения и высказать > своё мнение? > perl-Specio.git=0.47-alt2 > http://git.altlinux.org/tasks/283234/ > > perl-IO-Async.git=0.78-alt2 > http://git.altlinux.org/tasks/283235/ > > perl-Net-BitTorrent-0.052-alt4 > http://git.altlinux.org/tasks/283236/ Я по ошибке использовал не тот макрос, так что реально из пакета такая конструкция зависимость не убирает: %add_findreq_skiplist perl(Module/Build.pm) Тут должен был быть путь к файлу, зависимости от которого нам не нужны: /usr/share/perl5/Alien/SDL/ConfigData.pm Указанные сборки пакетов только концепт. Нужно обсудить, стоит ли и возможно ли ли добавить управление пропускаемыми зависимостями, как это сделано для python в add_python3_req_skip
Спасибо, что исследовали данную проблему и еще раз привлекли внимание к ней. 1. Я согласен с Виталием, что проблема в основном не в perl-devel, а в остальных пакетах. > Игорь, вы не могли бы посмотреть предложенные мной изменения и высказать своё мнение? 2.Спасибо большое, единственно, по поводу удаления модулей из пакета - удаление слишком радикальный шаг. Я бы советовал выносить в отдельный подпакет. Ведь кроме Сизифа есть и autoimports. По счастью, для тех изменений в autoimports unmetов тоже не появилось. 3. Единого решения нет, надо смотреть на группы пакетов. Где-то отдельно паковать тесты и другой devel. Для ConfigData.pm лучше использовать %add_findreq-skiplist */ConfigData.pm и т. д. 4. Завести белый список пакетов из класса devel серый список, где зависимость честная и надо думать над перераспилом perl-devel и черный список пакетов, которые нужно править.
(Ответ для viy на комментарий #8) > Спасибо, что исследовали данную проблему и еще раз привлекли внимание к ней. > > 1. Я согласен с Виталием, что проблема в основном не в perl-devel, а в > остальных пакетах. > > > Игорь, вы не могли бы посмотреть предложенные мной изменения и высказать своё мнение? > 2.Спасибо большое, единственно, по поводу удаления модулей из пакета - > удаление слишком радикальный шаг. Я бы советовал выносить в отдельный > подпакет. > Ведь кроме Сизифа есть и autoimports. По счастью, для тех изменений в > autoimports unmetов тоже не появилось. Удаление не очень радикальный шаг, если что-то упаковано по ошибке. Историю с упаковкой бессмысленных тестов мы уже проходили на python. В подавляющем большинстве пакетов они не используются. Поэтому я считаю, что не стоит по умолчанию плодить подпакеты test. Удаление-то не радикальное, как только будет сигнал, что тест нужен, его легко упаковать. Лишнюю зависимость на Test::More в Specio попробую решить мирным путём: https://github.com/houseabsolute/Specio/pull/19 > > 3. Единого решения нет, надо смотреть на группы пакетов. Где-то отдельно > паковать тесты и другой devel. > Для ConfigData.pm лучше использовать %add_findreq-skiplist */ConfigData.pm > и т. д. Хорошо, сделал так. Тут важно сформировать политику, понимая, зачем этот ConfigData применяется. > 4. Завести белый список пакетов из класса devel > серый список, где зависимость честная и надо думать над перераспилом > perl-devel > и черный список пакетов, которые нужно править. У меня пока критерий простой — прикладные программы на perl не должны вытягивать devel-пакеты.
(Ответ для viy на комментарий #8) ... > 2.Спасибо большое, единственно, по поводу удаления модулей из пакета - > удаление слишком радикальный шаг. Я бы советовал выносить в отдельный > подпакет. > Ведь кроме Сизифа есть и autoimports. По счастью, для тех изменений в > autoimports unmetов тоже не появилось. В Сизифе сломалась сборка двух пакетов. Один хотел удалённые тесты, и я их вернул в perl-IO-Async-tests. В другом была пропущена требуемая ему зависимость perl-Test-Failure, которая ранее неявно вытягивалась с perl-IO-Async. Отправил 283550 PENDING #2 sisyphus perl-Promises.git=1.04-alt2 283549 TESTED #3 [test-only] sisyphus perl-IO-Async.git=0.79-alt2 perl-Net-Async-CassandraCQL.git=0.12-alt2
Благодарю
(Ответ для viy на комментарий #11) > Благодарю Если я сделаю что-то не так, обязательно пишите, я ещё только учусь.
Отправил 344512 EPERM #3 sisyphus perl.git=5.38.2-alt0.2 +%files diagnostics + %_bindir/splain + %privlib/diagnostics.pm +%dir %privlib/pod +# perldiag.pod is NOT a doc; it used by diagnostics.pm +%doc %privlib/pod/perldiag.pod + %changelog +* Sat Apr 06 2024 Vitaly Lipatov <lav@altlinux.ru> 1:5.38.2-alt0.2 +- split diagnostics to perl-diagnostics subpackage (see #31417) Это позволяет убрать зависимость на perl-devel от $ epm wd "perl(diagnostics.pm)" $ apt-cache whatdepends perl(diagnostics.pm) perl-Geo-Coordinates-Transform-0.10-altsisyphus+308125.100.1.1@1665250672 mysqltuner-1.7.2-alt1@1495729619 kpcli-3.8.1-altsisyphus+313490.100.1.1@1673744538 evolution-data-server-3.52.0-altsisyphus+343025.400.4.2@1710847449
Выбрал из прямых пользователей пакета perl-devel следующие пакеты (не являющиеся модулями perl): shutter-0.99.4-altsisyphus+316757.300.3.1@1678897642 public-inbox-1.9.0.1113.g84874a85-altsisyphus+337109.100.1.1@1703346700 opm-core-2.3-alt2@1471371439 imapsync-2.229-altsisyphus+311125.100.1.1@1670063286 rex-1.14.3-altsisyphus+327441.100.1.1@1692360611 os-autoinst-4.6-altsisyphus+337224.100.3.2@1703597558 swig-data-4.1.1-alt8:sisyphus+339194.200.2.1@1706442289 hwinfo-utils-21.23-alt1.sisyphus+332823.100.1.1@1698332069
(Ответ для Vitaly Lipatov на комментарий #14) > Выбрал из прямых пользователей пакета perl-devel следующие пакеты (не > являющиеся модулями perl): > shutter-0.99.4-altsisyphus+316757.300.3.1@1678897642 https://bugzilla.altlinux.org/49928 > public-inbox-1.9.0.1113.g84874a85-altsisyphus+337109.100.1.1@1703346700 perl(Test/More.pm) is needed by (installed) public-inbox-1.9.0.1113.g84874a85-alt1.noarch > opm-core-2.3-alt2@1471371439 perl(Test/More.pm) is needed by (installed) opm-core-2.3-alt2.noarch > imapsync-2.229-altsisyphus+311125.100.1.1@1670063286 perl(Test/More.pm) is needed by (installed) imapsync-2.229-alt1.noarch > rex-1.14.3-altsisyphus+327441.100.1.1@1692360611 perl(Test/Builder/Module.pm) is needed by (installed) rex-1.14.3-alt2.noarch > swig-data-4.1.1-alt8:sisyphus+339194.200.2.1@1706442289 perl(ExtUtils/MakeMaker.pm) is needed by (installed) swig-data-1:4.1.1-alt8.noarch > hwinfo-utils-21.23-alt1.sisyphus+332823.100.1.1@1698332069 perl(Dumpvalue.pm) is needed by (installed) hwinfo-utils-21.23-alt1.3.x86_64