2012-07-05 10 views
7

Interesuje mnie jakie pułapki mogą być (z wyjątkiem Pythona nie jest zainstalowany w systemie docelowym) podczas korzystania z Pythona do kontroli przepływu pakietów deb skrypty (preinst, postinst itp.). Czy praktyczne będzie wdrażanie tych skryptów w Pythonie, a nie w sh?Czy praktyczne będzie implementowanie skryptów deb preinst, postint itp. W Pythonie, a nie w sh

Jak rozumiem, jest to co najmniej możliwe.

+0

Możesz używać dowolnego języka, o ile preinst lub cokolwiek jest plikiem wykonywalnym. Może to być skrypt 'chmod + x'ed z odpowiednim hashbangiem lub skompilowany program C. – C0deH4cker

+0

tcc do kompilowania c jako skryptu langauge;) –

+0

Możesz, ale dlaczego miałbyś? 'sh' jest całkiem niezły jak to, co robi, co jest językiem kleju do wywoływania różnych programów. W skryptach kontroli przepływu nie ma zbyt wiele logiki, nawet obliczeń - głównie przenoszenie plików, zmiana uprawnień, tworzenie dowiązań symbolicznych ... – cha0site

Odpowiedz

6

Jedynym powodem, dla którego nie jest to powszechnie stosowane, afaiik, jest to, że nie jest to konwencja, a Python nie jest zwykle bardziej przydatny lub prostszy niż zwykły skrypt powłoki dla rzeczy, które robią skrypty opiekuna. Gdy jest bardziej przydatny, często można podzielić funkcjonalność wymagającą Pythona na osobny skrypt w języku Python, wywoływany przez skrypty opiekuna.

Może pomóc w przestrzeganiu konwencji w tego rodzaju sytuacjach, ponieważ istnieje wiele przydatnych narzędzi i skryptów (np. Lintian, Debhelper), które ogólnie zakładają, że skrypty opiekuna używają bash. Jeśli nie, jest w porządku, ale narzędzia te mogą nie być tak użyteczne, jak by były w innym przypadku. Jedynym innym problemem, o którym myślę, że musisz wiedzieć, jest to, że jeśli twoje skrypty wymagają Pythona, to Python musi być pre-dependency (Pre-Depends) twojego pakietu, a nie tylko Depends.

To powiedziawszy, uznałem za użyteczne używanie Pythona w skrypcie opiekuna.

+0

Och, myślałem również o oddzielnym skrypcie w języku Python, który powinien być wywoływany z głównego sh, ponieważ nadal może istnieć jakaś logika, która będzie lepiej implementowana w Pythonie. Sporo Pythona, jako zależności, nie stanowi problemu, ponieważ zwykle jest preinstalowane z prawdopodobnie prawie wszystkimi popularnymi systemami operacyjnymi opartymi na Debianie. Widzę największy problem w obsłudze takich skryptów. Zasadniczo musisz uważać na wersję Pythona, ponieważ nie jest ona tak stabilna jak sh. Dzięki za odpowiedź. –

+4

To powoduje pojawienie się kolejnego ważnego problemu; jeśli celujesz w konkretną wersję Pythona, nie będziesz w stanie obsłużyć wszystkich popularnych popularnych systemów opartych na Debianie. Na przykład najstarsze wydanie Ubuntu LTS (8.04) obsługuje tylko Python 2.5, a Ubuntu 10.04 tylko Python 2.6, a Ubuntu 12.04 tylko Python 2.7. Ale jeśli możesz napisać zgodny Python (nie jest to aż tak trudne), powinieneś być w porządku. –

Powiązane problemy