Круговая зависимость Debian с необходимыми пакетами

TLDR~

Ты, наверное, в безопасности, но...

Существует опасность. Вот почему по умолчанию pythonв командной строке по-прежнему остается python 2 для многих дистрибутивов.

Это действительно повредит вам?

Это невозможно узнать, не зная, какой у вас дистрибутив Linux и какие пакеты. Я сомневаюсь, что кто-то имеет полный контроль над каждым пакетом, доступным в мире, чтобы знать, что сломается, если вы попробуете это.

Однако со временем опасности становится меньше. Python 3 совершенствуется, и те, кто все еще использует Python 2, гораздо лучше осознают опасность, а это означает, что они могут защититься от нее. В это время опасность может быть достаточно низкой, чтобы вам это сошло с рук.

В чем опасность?

В Linux работает множество программ, написанных на Python. Возможно, вы не поняли, что используете python, потому что вызываете их как исполняемые файлы. Они используют shebang для вызова python без явного вызова вами.

Проблема заключалась в том, что очень много программ было написано для python 2, для которого параметр shebang был установлен на #!/usr/bin/python. Точно так же сценарии оболочки, вызывающие сценарии puthon, были склонны просто вызывать python script.py. Если вы измените /usr/bin/pythonна Python 3, многие программы сломаются.Однако со временем большинство старых программ были изменены для запроса конкретной версии(/usr/bin/python2или даже/usr/bin/python2.7). Программы Python 3 были вынуждены указывать версию из-за статности.

Проверьте перед изменением

Я бы не стал менять это на рабочем сервере, если только у вас нет действительно действительно веской причины. Однако, если вы меняете свой собственный ноутбук, риск должен быть намного ниже.

Я бы попробовал запустить это, чтобы быть уверенным:

grep /usr/bin/python /usr/bin/* /usr/sbin/* 2> /dev/null

... искать все, что вызывает /usr/bin/pythonбез указания версии. Если там ничего нет, тогда попробуйте. Просто будьте начеку, чтобы ничего не сломалось неожиданно.

2
22.11.2019, 20:49
1 ответ

Начальная загрузка системы Debian не входит в сферу политики Debian. Механика в настоящее время закодирована в различных загрузчиках, чтобы включить всю неявную информацию, которая в противном случае отсутствует в пакетах, например, зависимости между пакетами Essential :yes. Это проблема, потому что нам нужно дублировать все это в каждом новом загрузчике, и это хрупко, поскольку изменения в наборе основных пакетов псевдо -могут нарушить эти предположения.

Мы пытаемся улучшить это вhttps://wiki.debian.org/Teams/Dpkg/Spec/InstallBootstrap. Возможно, вы захотите проверить mmdebstrap, который пытается использовать стандартные инструменты и максимально разгрузить их и метаданные пакета, так что в некотором смысле это реализация PoC для вышеупомянутого предложения.

Я бы порекомендовал использовать mmdebstrap, но если это не вариант, и вы все еще пытаетесь заново реализовать загрузчик, вам, вероятно, следует проверить исходный код различных существующих загрузчиков, чтобы получить эти неявные детали.

1
18.05.2020, 00:39

Теги

Похожие вопросы