2012-07-05 17 views
7

Sono interessato a quali trappole possono essere (tranne Python non è installato nel sistema di destinazione) quando si utilizza Python per il controllo del flusso del pacchetto deb script (preinst, postinst, ecc.). Sarà pratico implementare questi script in Python, non in sh?Sarà pratico implementare gli script deb preinst, postint, ecc. In Python, non in sh

Come ho capito è almeno possibile.

+0

È possibile utilizzare qualsiasi lingua finchè preinst o qualunque cosa sia un eseguibile. Può essere uno script 'chmod + x'ed con hashbang appropriato o un programma C compilato. – C0deH4cker

+0

tcc per compilare c come linguaggio di scripting;) –

+0

Puoi, ma perché dovresti? 'sh' è abbastanza buono come quello che fa, che è un linguaggio colla per chiamare vari programmi. Non c'è molta logica negli script di controllo del flusso, nemmeno calcoli: si tratta principalmente di spostare file, modificare i permessi, creare collegamenti simbolici ... – cha0site

risposta

6

L'unico motivo per cui questo non è comunemente fatto, afaik, è che non è convenzione, e Python di solito non è più utile o diretto dello script di shell semplice per le cose che gli script del manutentore fanno. Quando è più utile, puoi spesso estrapolare la funzionalità che richiede Python in uno script Python separato che viene chiamato dagli script del manutentore.

Può aiutare a seguire la convenzione in questo tipo di situazione, poiché ci sono molti strumenti e script utili (ad esempio, Lintian, Debhelper) che generalmente presuppongono che gli script del manutentore utilizzino bash. Se non lo fanno, va bene, ma quegli strumenti potrebbero non essere così utili come sarebbero altrimenti. L'unico altro problema di cui si deve essere a conoscenza è che se gli script preinst o postrm richiedono Python, Python deve essere una pre-dipendenza (Pre-Depends) del pacchetto anziché solo uno Depends.

Detto questo, ho trovato utile usare Python in uno script del manutentore prima.

+0

Oh, ho anche pensato di separare lo script Python da quello principale, in quanto potrebbe esserci ancora qualche logica da implementare meglio in Python. I python come una dipendenza non è un problema, dato che di solito è preinstallato con quasi tutti i più diffusi sistemi operativi basati su Debian. Vedo il più grande problema nel supporto di tali script. Fondamentalmente devi fare attenzione alla versione di Python perché non è così stabile come sh. Grazie per la tua risposta. –

+4

Questo fa apparire un altro problema valido; se scegli come target una versione Python specifica, non sarai in grado di supportare tutti i SO attualmente diffusi basati su Debian. Ad esempio, la versione più recente di Ubuntu LTS (8.04) supporta solo Python 2.5, mentre Ubuntu 10.04 supporta solo Python 2.6 e Ubuntu 12.04 supporta solo Python 2.7. Ma se riesci a scrivere Python compatibile (non proprio così difficile), dovresti stare bene. –