Si potrebbe fare quanto segue, dal momento che OS X ha una fondazione UNIX. (Suppongo che abbia anche alcune utility standard come uudecode
e unzip
.);
- Creare un file zip per il pacchetto con gli strumenti di pacchettizzazione Python standard, come le distutils.
- Utilizzare
uuencode file.zip file.zip >uu.txt
per convertire questo file zip in testo.
- Creare uno shell-script.
- Inserire il testo generato da
uuencode
come here-document in quello script di shell, che viene inviato a uudecode
, per ricreare il file zip. Questo dovrebbe essere il secondo comando nello script di shell. I primi comandi dovrebbero verificare le utilità necessarie.
- Utilizzare qualsiasi strumento di installazione Python per installare il file zip.
- Fai qualsiasi cosa di post-installazione che desideri.
- Rimuovere il file zip.
Per installare il programma, eseguire lo shell-script. Su UNIX, questo script dovrebbe essere eseguito come root. Non so come sia gestito da OS X, però. Di seguito è riportato un esempio (il file zip incluso contiene due file con solo rumore casuale);
#!/bin/sh
# Install script for foo
# Check for special programs that are used in this script.
PROGS="uudecode unzip python"
for P in $PROGS; do
which $P >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "$(basename $0): The program \"$P\" cannot be found."
exit 1
fi
done
uudecode <<"EOF"
begin 644 test.zip
M4$L#!`H``````(<!K$`````````````````$`!P`9F]O+U54"0`#OHZM3ZB.
MK4]U>`L``03I`P``!.D#``!02P,$"@``````A`&L0$EXM>H``@````(```<`
M'`!F;V\O8F%R550)``.XCJU/N(ZM3W5X"P`!!.D#```$Z0,``)DCNBVSM81_
MA%IQ!+LKC\;\19[/E]F!`J2J*2:9B_8#MC^KM*]]9P1][email protected]+/H%Q"'2J'
M,;$7:C9E+WC]%M(BAUFN]4D\$%F63!^CA8O>'0C(-!YD?$\GQ[;M:[email protected]>=A/[
M61XK<A/]\.?!0$QX<5]T\9<ZP$;_?PRMV-3O(NK)/<MTI,!RYA&OWRK6<8%4
M_1!T/+-'7H^V#C[AK)+U?T>UCU."G]D(+JU[8Z#[email protected]'^10B:8.2$$9Q*@
MY:L4MK'^TVF)A5)9\%"/[email protected];]8\,I)$CCHHF#E&,D.GVM1=2N];4J?6WR
M0+YH]DXZ"UQ$GVA^F(`5L![=/<ROX]9RQCRWJ=?+G4Y>56[H=8:!:GTA_V;V
M2V$%U5([0D;T19H]P7+^448+^&M3;[/VJDEJ-SU=Q8U=3,IV^<)A>C)][email protected]
[email protected]`!&`\-CP["]B'FC&K7Z)T6K_&W1K5?M&K8D&^'C^J;H[Q4/ST
M(>QL].68#X)[email protected]`?9<R3#:4Y#A'X-<NT9C\OM3:4[<)`)[email protected]=*/[email protected]]VY
M_R!__:Q'_FP3((*8^6JQ"$_H&BIWDD.6<"3D,'<1^=^.9F^2Z7.:OE"1,SV[
M)M(9!&V(4):?M7^JFR^P"!H4U+(*A;[email protected]+]5ZIS]B1;K)&@LJ-Y,L9SQ.
M^Q-"&^@#KQG94$L#!`H``````(8!K$#%*"OR``(````"```'`!P`9F]O+V)A
M>E54"0`#O(ZM3[R.K4]U>`L``03I`P``!.D#``!NFMNGLA(C_K!_F=T%?;P3
M#TUC7%4F+!Y#A8<SFK[;E3M.%J`YT>1AVMNJPFOE58Q["7<#AWQFZ!SG_-RW
M*4`@@P.7\>+LGTBNTLH-7)CB(LJDMD)COV5'H]O8G_4I&C:PFTVC%4P=+X*B
M%A^I^$>BO+<!D\&8&GS:&VLQHJJ[!NFW0H5FD6+:'OUT2--U1HXQ2R?JF2,9
M(/@>A(/SU#.78MTFADG`ZZTK!6:Z6\;I`2?D6I;FE=_0V?4>_0MC;$0$P?H%
MDHQ]MCK4;,5W=<IZV<)<`7A_B7<_=U,:X[8/$_&/518\NNBDYS,\<',K2C]9
M4M.5UL/R<\'0E>G#$>`I>/[UX$QM.+T\LF4;D^WF6FX3.(L?2V<5B%5)$!5[
ME47K#7\&D*3Y>I)8#45-HL(!F7+$)%7C9,$_YYL]EG='3BN9W[&9!$.<.U?E
M#[email protected]%J/32)NAMI48M",_)0#JRR!*Y2P:[email protected])5/#UK!!3]*2M47V1GE
M'X0(FN%_*3BX_X'(6X!ONLKN!U/&_ML-L:^FD/24Q)S*-D8)Z>F4Y^+$]\_'
MB\$$;#D__S_RT(Y]MMK?B#%F1&C`>,)'7:12DX=F)T,/!*^(M*[,^N;6E4";
M31K\[email protected][@4L9MB.`1Z!`%@K5G)P<]0!?P\$RFUC/S:Y_Y\0*:\+$U+JEM%"
M9E!+`0(>`PH``````(<!K$`````````````````$`[email protected]`````````$`#M00``
M``!F;V\O550%``.^CJU/[email protected]+``$$Z0,```3I`P``4$L!`AX#"@``````A`&L
M0$EXM>H``@````(```<`&````````````*2!/@```&9O;R]B87)55`4``[B.
MK4]U>`L``03I`P``!.D#``!02P$"'@,*``````"&`:Q`[email protected]\@`"`````@``
M!P`8````````````I(%_`@``9F]O+V)A>E54!0`#O(ZM3W5X"P`!!.D#```$
:Z0,``%!+!08``````P`#`.0```#`!```````
`
end
EOF
# Unpack your zipfile
unzip test.zip
# Go into the created subdirectory and install
cd foo
python setup.py install
# whatever post-install stuff you want goes here...
cd ..
rm -rf foo test.zip
fonte
2012-05-11 22:33:04
Quali sono esattamente le vostre esigenze? Vuoi semplicemente un file che può essere fatto doppio clic per avviare un programma di installazione o sarebbe sufficiente distribuire un pacchetto che può essere installato con un comando a una riga che gli utenti possono copiare e incollare? O vuoi distribuire il tuo pacchetto all'interno di un file .dmg che richiama un buon programma di installazione della GUI? –
Dovrebbe essere altrettanto facile installare un .deb di ubuntu o un file EXE .exe. Abbiamo inoltre dipendenze (Setuptools) che desideriamo controllare e installare automaticamente se non sono presenti. L'installazione delle dipendenze viene eseguita nel .deb tramite l'elenco delle dipendenze esplicite e nel file .exe di windows specificando uno script di pre-installazione su bdist_wininst. Desideriamo inoltre avere uno script di post-installazione che, tra le altre cose, notifichi all'utente l'installazione riuscita/non riuscita/i passaggi successivi. – UsAaR33