View previous topic :: View next topic |
Author |
Message |
gioi Apprentice
![Apprentice Apprentice](/images/ranks/rank_rect_2.gif)
Joined: 14 Feb 2006 Posts: 236
|
Posted: Tue Oct 02, 2007 9:10 am Post subject: DIFFICILE: Includere binario in uno script. |
|
|
Salve a tutti,
stavolta la domanda è davvero difficile...
Ho la necessità di creare uno script autoinstallante che contenga al suo interno un binario (un modulo del kernel) ed uno script per caricarlo.
creare il secondo script dall'interno dello script di installazione è abbastanza semplice, ma il file binario?
So che è possibile e sono in molti a farlo (mi viene in mente il pacchetto di auto-installazione di nvidia), ma come si fa?
Qualche idea?
Grazie! _________________ --
My blog http://gioitech.wordpress.com |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
randomaze Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/191195238462262e08ea92.jpg)
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Tue Oct 02, 2007 9:32 am Post subject: Re: DIFFICILE: Includere binario in uno script. |
|
|
gioi wrote: | Ho la necessità di creare uno script autoinstallante che contenga al suo interno un binario (un modulo del kernel) ed uno script per caricarlo. |
Se non ricordo male:
a te l'onere di leggere la documentazione... _________________ Ciao da me! |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
gioi Apprentice
![Apprentice Apprentice](/images/ranks/rank_rect_2.gif)
Joined: 14 Feb 2006 Posts: 236
|
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
cloc3 Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/39525275142a0fd302dc7e.gif)
Joined: 13 Jan 2004 Posts: 4815 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Wed Oct 03, 2007 12:17 am Post subject: |
|
|
ho fatto alcuni tentativi nubbi con il costrutto << di bash, ma si stampava inesorabilmente sul codice binario.
allora ho provato ad usare gli archivi cpio ed è venuta una cosina che mi sembra abbastanza elementare.
esempio d'uso:
Code: |
./crea_installer.sh programma_binario file_installato
|
programmino:
Code: |
cloc3@s939 ~/ls $ cat crea_installer.sh
#!/bin/bash
# genera lo script
cat <<- EOF >install.sh
#!/bin/bash
dd if=./install.sh bs=xxx skip=1 2>/dev/null |cpio -i -H newc --to-stdout >$2
chmod +x $2
exit
EOF
# determina la lunghezza dello script
fs='/'
nc=$(cat ./install.sh|wc -c)
sed_line='s/xxx/'${nc}${fs}
sed -i $sed_line ./install.sh
# incolla il binario
echo $1|cpio -o -H newc >>install.sh
chmod +x ./install.sh
|
test:
Code: |
cloc3@s939 ~/ls $ ./crea_installer.sh `which ls` file_installato
179 blocks
cloc3@s939 ~/ls $ ./install.sh
179 blocks
cloc3@s939 ~/ls $ diff `which ls` file_installato
cloc3@s939 ~/ls $
|
naturalmente è facile modificare il codice per la compressione del binario.
nota: attenti al taglia incolla! a me aggiunge un carattere di spaziatura dopo EOF che ha esiti deleteri. _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
drizztbsd Retired Dev
![Retired Dev Retired Dev](/images/ranks/rank-retired.gif)
![](images/avatars/84221162347457c55a967d.png)
Joined: 21 Nov 2004 Posts: 278 Location: Cesano Maderno
|
Posted: Wed Oct 03, 2007 8:23 am Post subject: |
|
|
come complicarsi la vita (inutilmente) e vivere felici?
Code: | drizzt@janeway ~ $ cat create_installer.sh
#!/bin/sh
echo '#!/bin/sh' > installer.sh
echo 'tail -n +5 "$0" | bunzip2 > '"\"$2\"" >> installer.sh
echo 'chmod +x '"\"$2\"" >> installer.sh
echo 'exit 0' >> installer.sh
bzip2 -9c "$1" >> installer.sh
chmod +x installer.sh
|
Così è pure POSIX sh e va su ogni macchina che abbia sh (e non per forza bash)
Edit:
- Aggiunto il chmod +x (vedi commento successivo)
- Sistemato il codice per essere compatibile con file con spazi
_________________ Gentoo/Alt lead
Gentoo/*BSD and Gentoo/FreeBSD deputy lead
Paludis contributor
Last edited by drizztbsd on Wed Oct 03, 2007 1:46 pm; edited 2 times in total |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
cloc3 Advocate
![Advocate Advocate](/images/ranks/rank-G-1-advocate.gif)
![](images/avatars/39525275142a0fd302dc7e.gif)
Joined: 13 Jan 2004 Posts: 4815 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Wed Oct 03, 2007 9:20 am Post subject: |
|
|
drizztbsd wrote: | come complicarsi la vita (inutilmente) e vivere felici?
|
che bello.
così bene non ci sarei riuscito lo stesso.
ma io avevo scartato in principio questo tipo di percorso perché non sapevo proprio usare tail con il +4.
adesso che è tardi me lo spiego:
man tail wrote: |
-n, --lines=N
output the last N lines, instead of the last 10; or use +N to output lines starting with the Nth
|
diffettuccio. manca una riga `chmod + x $2` in installer.sh _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
|