Будет ли практично реализовывать скрипты deb preinst, postint и т. Д. На Python, а не на sh?

Меня интересует, какие могут быть подводные камни (за исключением того, что Python не установлен в целевой системе) при использовании Python для сценариев управления потоком пакетов deb (preinst, postinst и т. Д.). Будет ли практично реализовать эти скрипты на Python, а не на sh?

Насколько я понимаю, это по крайней мере возможно.


person Rostyslav Dzinko    schedule 05.07.2012    source источник
comment
Вы можете использовать любой язык, при условии, что preinst или что-то еще является исполняемым. Это может быть chmod +xed скрипт с правильным хэшбэнгом или скомпилированная программа на C.   -  person C0deH4cker    schedule 05.07.2012
comment
tcc для компиляции c как языка сценариев;)   -  person Jakob Bowyer    schedule 05.07.2012
comment
Вы можете, но зачем вам это? sh довольно хорош в том смысле, что он делает, который является связующим языком для вызова различных программ. В сценариях управления потоком не так много логики, даже вычислений - в основном это перемещение файлов, изменение разрешений, создание символических ссылок ...   -  person cha0site    schedule 05.07.2012
comment
+1 для противодействия безосновательному закрытому голосованию ИМХО.   -  person tripleee    schedule 05.07.2012


Ответы (1)


Единственная причина, по которой это обычно не делается, afaik, заключается в том, что это не соглашение, и Python обычно не более полезен или прост, чем простой сценарий оболочки для того, что делают сценарии сопровождающего. Когда это более полезно, вы часто можете выделить функции, необходимые для Python, в отдельный сценарий Python, который вызывается сценариями сопровождающего.

В такой ситуации может помочь соблюдение соглашения, поскольку существует множество полезных инструментов и сценариев (например, Lintian, Debhelper), которые обычно предполагают, что сценарии сопровождающего используют bash. Если они этого не сделают, ничего страшного, но эти инструменты могут оказаться не такими полезными, как в противном случае. Единственная другая проблема, о которой я думаю, вам нужно знать, это то, что если вашим preinst или postrm скриптам нужен Python, тогда Python должен быть предварительной зависимостью (Pre-Depends) вашего пакета, а не просто Depends.

Тем не менее, раньше я счел полезным использовать Python в сценарии сопровождающего.

person the paul    schedule 05.07.2012
comment
О, я также подумал об отдельном скрипте Python, который будет вызываться из основного sh one, поскольку все еще может быть некоторая логика, которая будет лучше реализована в Python. Я считаю, что python как зависимость не является проблемой, поскольку он обычно предустановлен, возможно, почти со всеми популярными ОС на основе Debian. Я вижу самую большую проблему в поддержке таких скриптов. По сути, вам нужно быть осторожным с версией Python, поскольку она не так стабильна, как sh. Спасибо за Ваш ответ. - person Rostyslav Dzinko; 05.07.2012
comment
Это поднимает еще одну серьезную проблему; если вы нацеливаетесь на конкретную версию Python, вы не сможете поддерживать все текущие популярные ОС на основе Debian. Например, самый старый выпуск Ubuntu LTS (8.04) поддерживает только Python 2.5, тогда как Ubuntu 10.04 поддерживает только Python 2.6, а Ubuntu 12.04 поддерживает только Python 2.7. Но если вы можете написать совместимый Python (на самом деле не так уж и сложно), все будет в порядке. - person the paul; 06.07.2012