Repository 32bit  Forum
Repository 64bit  Wiki

Script per un chroot

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Script per un chroot

Messaggioda hashbang » mer ago 11, 2010 18:58

Ciao a tutti,
circa una settimana fa mi è venuta un'idea di fare uno script che effettuasse un'installazione della Slackware in una directory. Insomma che preparasse un ambiente di chroot.
Lo script l'ho realizzato ma vorrei sottoporlo a voi per un eventuale miglioramento. Ho voluto realizzarlo in quanto utlizzando lo script pubblicato su slackworld
(era inizialmente per slackware 11.0, ma lo adattai alla 13.1) quando arrivava all'installazione non finiva mai. Infatti i pacchetti continuavano l'installazione all'infinito. Secondo me era derivato dal fatto che lo script effettuava un
Codice: Seleziona tutto
installpkg -root $CHROOTDIR *.t?z
cioè senza seguire un'ordine.
Il mio script invece installa il tutto come nell'installer di slackware (sezione per sezione).
Ecco lo script:
Codice: Seleziona tutto
#!/bin/sh

# Chroot Environment AutoBuilder
# Copyright (C) 2010 Luca De Pandis aka atomix600
# All rights reserved.
# Contact me @ Slacky.eu ( http://www.slacky.eu )
#
# Heavily based on the Tom Newsom's Chroot Howto ( http://slackworld.berlios.de/2007/chroot_howto.html )
#
# Thanks to conraid, zoros and metrofox for improvements
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AS IS AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Exit on most errors
set -e

# Set variables
SLACKVERSION=${SLACKVERSION:-13.1}
PKGDIR=${PKGDIR:-/tmp/Slack_$SLACKVERSION}
SERIESDIR=${SERIESDIR:-"a ap d e f k kde kdei l n t tcl x xap y"}
CHROOTDIR=${CHROOTDIR:-/mnt/chroot}
MIRROR=${MIRROR:-ftp.slackware.at}
KDELANG=${KDELANG:-it} # Change this value for different language
PKGA=${PKGA:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/a/*.t?z}
PKGAP=${PKGAP:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/ap/*.t?z}
PKGD=${PKGD:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/d/*.t?z}
PKGE=${PKGE:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/e/*.t?z}
PKGF=${PKGF:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/f/*.t?z}
PKGK=${PKGK:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/k/*.t?z}
PKGKDE=${PKGKDE:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/kde/*.t?z}
PKGKDEI=${PKGKDEI:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/kdei/*$KDELANG*.t?z}
PKGL=${PKGL:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/l/*.t?z}
PKGN=${PKGN:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/n/*.t?z}
PKGT=${PKGT:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/t/*.t?z}
PKGTCL=${PKGTCL:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/tcl/*.t?z}
PKGX=${PKGX:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/x/*.t?z}
PKGXAP=${PKGXAP:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/xap/*.t?z}
PKGY=${PKGY:-ftp://$MIRROR/slackware-$SLACKVERSION/slackware/y/*.t?z}
PATCHES=${PATCHES:-ftp://$MIRROR/slackware-$SLACKVERSION/patches/packages/*.t?z}
PATCHDIR=${PATCHDIR:-patches}
HOSTFILE=${HOSTFILE:-/etc/hosts}
FSTABFILE=${FSTABFILE:-/etc/fstab}
SPACE_REQUIRED=7 # GByte


# Set Functions
check_space_on_hd()
{
     SPACE=$(df -P -m $PKGDIR 2> /dev/null | tr -s ' ' | cut -f4 -d' ' | tail -1)
     if [ -z "$SPACE" ]; then
       echo 2 #error
     elif [ $(expr $SPACE - $SPACE_REQUIRED) -gt 0 ]; then
       echo 1
     else
       echo 0
     fi
}

connection_check()
{
 messaggio="[ERROR] This script was not be able to connect to the mirror. Try later or check your internet connection."
 if [ -z "$ftp" ]; then
    ping -c5 ftp.slackware.at > /dev/null 2>&1
    if [ $? != 0 ]; then
       echo $messaggio
       exit 1
    fi
 fi
}

echo "+----------------------------------+"
echo "|  StArTiNg ChRoOt AuToBuIlDeR...  |"
echo "+----------------------------------+"

echo "This script will install Slackware $SLACKVERSION in a chroot environment."
echo "The estimated time for completion of the transaction is 80 minutes,"
echo "but it may vary depending on the configuration of the computer."
echo "[WARNING] you'll need about ${SPACE_REQUIRED} GiB in / to run this script [WARNING]"
echo "[WARNING] it's recommended a fast internet connection for download [WARNING]"

# Remove directories if that is necessary
echo -n "Checking for directories... "
rm -rf $PKGDIR
rm -rf $CHROOTDIR
mkdir -p $PKGDIR
echo "DONE"

# Check available space on hard disk
echo -n "Checking for space... "
CHECK=$(check_space_on_hd)
if [ $CHECK = 0 -o $CHECK = 2 ]; then
  echo "FAIL. There is NOT enough space."
else
  echo "OK"
fi

# Ping Mirror
echo -n "Checking for mirror... "
CHECK=$(connection_check)
echo "OK"

# Download Slackware Packages
cd $PKGDIR
mkdir -p $SERIESDIR
echo "Downloading packages from mirror..."
echo -n "Downloading Series A...    "
cd $PKGDIR/a
wget -c $PKGA > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series AP...   "
cd $PKGDIR/ap
wget -c $PKGAP > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series D...    "
cd $PKGDIR/d
wget -c $PKGD > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series E...    "
cd $PKGDIR/e
wget -c $PKGE > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series F...    "
cd $PKGDIR/f
wget -c $PKGF > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series K...    "
cd $PKGDIR/k
wget -c $PKGK > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series KDE...  "
cd $PKGDIR/kde
wget -c $PKGKDE > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series KDEI... "
cd $PKGDIR/kdei
wget -c $PKGKDEI > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series L...    "
cd $PKGDIR/l
wget -c $PKGL > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series N...    "
cd $PKGDIR/n
wget -c $PKGN > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series T...    "
cd $PKGDIR/t
wget -c $PKGT > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series TCL...  "
cd $PKGDIR/tcl
wget -c $PKGTCL > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series X...    "
cd $PKGDIR/x
wget -c $PKGX > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series XAP...  "
cd $PKGDIR/xap
wget -c $PKGXAP > /dev/null 2>&1
echo "DONE"

echo -n "Downloading Series Y...    "
cd $PKGDIR/y
wget -c $PKGY > /dev/null 2>&1
echo "DONE"

echo "Slackware $SLACKVERSION was downloaded successfully..."

# Prepare your Chroot Environment
echo "Starting Installation..."
cd $PKGDIR
mkdir -p $CHROOTDIR

# Install packages in chroot
echo -n "Installing series A...    "
installpkg -root $CHROOTDIR a/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series AP...   "
installpkg -root $CHROOTDIR ap/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series D...    "
installpkg -root $CHROOTDIR d/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series E...    "
installpkg -root $CHROOTDIR e/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series F...    "
installpkg -root $CHROOTDIR f/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series K...    "
installpkg -root $CHROOTDIR k/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series KDE...  "
installpkg -root $CHROOTDIR kde/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series KDEI... "
installpkg -root $CHROOTDIR kdei/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series L...    "
installpkg -root $CHROOTDIR l/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series N...    "
installpkg -root $CHROOTDIR n/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series T...    "
installpkg -root $CHROOTDIR t/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series TCL...  "
installpkg -root $CHROOTDIR tcl/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series X...    "
installpkg -root $CHROOTDIR x/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series XAP...  "
installpkg -root $CHROOTDIR xap/*.t?z > /dev/null 2>&1
echo "DONE"

echo -n "Installing series Y...    "
installpkg -root $CHROOTDIR y/*.t?z > /dev/null 2>&1
echo "DONE"

echo "Slackware $SLACKVERSION was installed successfully"

# Download patches
echo -n "Downloading patches... "
mkdir -p $PATCHDIR
(cd $PATCHDIR
wget -c $PATCHES > /dev/null 2>&1)
echo "DONE"

# Install patches
echo -n "Patching Slackware... "
ROOT=$CHROOTDIR upgradepkg --install-new patches/*.t?z > /dev/null 2>&1
echo "DONE"

# Copy host name and host partition table
echo -n "Configuring hostname and partition table... "
cp -a $HOSTFILE $CHROOTDIR/etc/hosts
cp -a $FSTABFILE $CHROOTDIR/etc/fstab
echo "DONE"

# Remove Slackware Packages
echo -n "Cleaning Cache... "
cd /tmp
rm -r $PKGDIR
echo "DONE"

echo "Finish!!!"

echo "+----------------------------------+"
echo "|  Thank you for using my builder  |"
echo "+----------------------------------+"

echo "#####################################################"
echo " If you want to start this chroot environment:"
echo " mount -o bind /proc $CHROOTDIR/proc"
echo " mount -o bind /dev $CHROOTDIR/dev"
echo " chroot $CHROOTDIR /bin/bash"
echo "#####################################################"
Che ne pensate?

EDIT: Ecco lo script con alcuni piccoli accorgimenti.
Ultima modifica di hashbang il dom ago 15, 2010 19:03, modificato 8 volte in totale.
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1842
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Script per un chroot

Messaggioda navajo » mer ago 11, 2010 19:07

be intanto, leggere qui: directory invece che directory----- mi vien da pensare ..
Avatar utente
navajo
Staff
Staff
 
Messaggi: 3830
Iscritto il: gio gen 08, 2004 0:00
Località: Roma
Nome Cognome: Massimiliano
Slackware: 13.37 (x86_64)
Kernel: 2.6.37.6
Desktop: KDE 4.7.0 (Alien)

Re: Script per un chroot

Messaggioda conraid » mer ago 11, 2010 19:33

bah, io ogni volta faccio
Codice: Seleziona tutto
installpkg --root /dir/dove/voglio */*.t?z

e non ho problemi
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12023
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Script per un chroot

Messaggioda hashbang » mer ago 11, 2010 19:39

è strano, perchè a me col suo script, scaricava tutto in una directory e poi installava, il problema era che l'installazione a distanza di ore non finiva (lo misi di pomeriggio e quando tornai di notte non aveva ancora finito, poi mi accorsi che installava sempre gli stessi pacchetti a rotazione). Comunque conraid anche io ho eseguito il tuo metodo solo che io ho specificato di volta in volta la directory delle sezioni. Forse mi sono complicato la vita ma è stato efficace. Comunque proverò il tuo metodo e vedo che problemi mi da.
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1842
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Script per un chroot

Messaggioda conraid » mer ago 11, 2010 19:47

script? mio metodo?
è semplicemente un comando da terminale
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12023
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Script per un chroot

Messaggioda hashbang » mer ago 11, 2010 19:56

conraid ha scritto:script? mio metodo?
è semplicemente un comando da terminale
Mi sono espresso male, lo script a cui mi riferisco è quello messo a disposizione su slackworld.
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1842
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Script per un chroot

Messaggioda zoros » gio ago 12, 2010 20:50

conraid ha scritto:bah, io ogni volta faccio
Codice: Seleziona tutto
installpkg --root /dir/dove/voglio */*.t?z

e non ho problemi

be! tutto sommato è un metodo: documenta il fatto che l'installazione "full" di Slackware si riduce ad una sola riga di comando da terminale ...

il "metodo" funziona anche per installazioni "normali" con l'accorgimento di creare una voce per il filesystem "/" in fstab ed installare Lilo prima del reboot ... al riavvio si perfeziona in pkgtool --> setup eseguendo mkfontdir e fontconfig ...

scusate l'OT, ma forse può essere simpatico provare così ;) ...
vorrei riavere le mie firme ...
Avatar utente
zoros
Linux 3.x
Linux 3.x
 
Messaggi: 1307
Iscritto il: lun mag 28, 2007 21:51
Località: Gorizia
Nome Cognome: Fabio∙Zorba
Slackware: 14.1
Kernel: 3.10.30-smp
Desktop: KDE-3.5(works!)

Re: Script per un chroot

Messaggioda twister » ven ago 13, 2010 11:54

[OT]
Immagine!=Immagine
[/OT]
Avatar utente
twister
Staff
Staff
 
Messaggi: 1598
Iscritto il: mar nov 11, 2003 0:00
Località: Roma
Slackware: current

Re: Script per un chroot

Messaggioda metrofox » ven ago 13, 2010 13:22

Un'altra cosa:

Codice: Seleziona tutto
# Ping Mirror
echo "Checking for mirror..."
ping -c5 $MIRROR


Se il mirror è offline che succede? :D Lo script continua ad andare, quando invece se il mirror non è pingabile bisognerebbe cambiarlo o fermare lo script, metti un if o inventati qualcosa

Dopodiché:

Codice: Seleziona tutto
installpkg --root $CHROOTDIR */*.t?z


Efficiente e ti risparmia un sacco di fatica, come dice conraid...
Avatar utente
metrofox
Linux 2.6
Linux 2.6
 
Messaggi: 758
Iscritto il: gio ago 07, 2008 11:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)

Re: Script per un chroot

Messaggioda zoros » ven ago 13, 2010 21:20

ripensandoci ... finora avevo usato una procedura tipo:
Codice: Seleziona tutto
cd /hd-linux
for packages in a ap d e f n l t tcl x xap kde kdei k y
do
 installpkg -root /hd-linux /cdrom/$packages_path/$packages/*.t?z
done
(in /hd-linux una partizione vuota montata)

proprio oggi mi serviva una 10.0, così ho lanciato questo comando:
Codice: Seleziona tutto
installpkg --root /mnt/sdb4/slackware/10.0/rootfs */*.t?z


non so perché (forse il path troppo lungo?), ma il --root non l'ha preso, iniziando ad installare in "/" ... pochi secondi e mi sono ritrovato con questa root:
Codice: Seleziona tutto
root@FabioX:/mnt/sda3# ls -l
totale 216
...
lrwxrwxrwx  1 root root    10 13 ago 16:48 include -> ../include
lrwxrwxrwx  1 root root     6 13 ago 16:48 lib -> ../lib
lrwxrwxrwx  1 root root    10 13 ago 16:48 libexec -> ../libexec
...
lrwxrwxrwx  1 root root     6 13 ago 16:48 man -> ../man
...
lrwxrwxrwx  1 root root     8 13 ago 16:48 share -> ../share
...
più l'intero sistema X11 rimosso! ...

per ripristinare ho dovuto ricopiare "a manina" tutte le parti mancanti (sostituite, come si vede, da link al nulla!) ...

giusto per info, così magari per pensare a qualche controllo aggiuntivo "di coerenza" nello script :)
vorrei riavere le mie firme ...
Avatar utente
zoros
Linux 3.x
Linux 3.x
 
Messaggi: 1307
Iscritto il: lun mag 28, 2007 21:51
Località: Gorizia
Nome Cognome: Fabio∙Zorba
Slackware: 14.1
Kernel: 3.10.30-smp
Desktop: KDE-3.5(works!)

Re: Script per un chroot

Messaggioda hashbang » dom ago 15, 2010 16:09

Lo script è quasi pronto....ho apportato le modifiche da voi suggerite tranne quella dell'
Codice: Seleziona tutto
installpkg $CHROOTDIR */*.t?z
Non l'ho modificato per una questione di trasparenza...in questo modo chi esegue lo script sa a che punto sta l'installazione...per il controllo del mirror tutto ok...ora fa un check VERO. Se il mirror è ok parte il download, se il mirror è OUT il download non va e si chiude lo script :) ho postato la revisione nello stesso tag code del primo post (ovviamente ho sostituito la vecchia versione) :)
Ultima modifica di hashbang il dom ago 15, 2010 16:41, modificato 1 volta in totale.
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1842
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Script per un chroot

Messaggioda hashbang » dom ago 15, 2010 16:11

zoros ha scritto:ripensandoci ... finora avevo usato una procedura tipo:
Codice: Seleziona tutto
cd /hd-linux
for packages in a ap d e f n l t tcl x xap kde kdei k y
do
 installpkg -root /hd-linux /cdrom/$packages_path/$packages/*.t?z
done
(in /hd-linux una partizione vuota montata)

proprio oggi mi serviva una 10.0, così ho lanciato questo comando:
Codice: Seleziona tutto
installpkg --root /mnt/sdb4/slackware/10.0/rootfs */*.t?z


non so perché (forse il path troppo lungo?), ma il --root non l'ha preso, iniziando ad installare in "/" ... pochi secondi e mi sono ritrovato con questa root:
Codice: Seleziona tutto
root@FabioX:/mnt/sda3# ls -l
totale 216
...
lrwxrwxrwx  1 root root    10 13 ago 16:48 include -> ../include
lrwxrwxrwx  1 root root     6 13 ago 16:48 lib -> ../lib
lrwxrwxrwx  1 root root    10 13 ago 16:48 libexec -> ../libexec
...
lrwxrwxrwx  1 root root     6 13 ago 16:48 man -> ../man
...
lrwxrwxrwx  1 root root     8 13 ago 16:48 share -> ../share
...
più l'intero sistema X11 rimosso! ...

per ripristinare ho dovuto ricopiare "a manina" tutte le parti mancanti (sostituite, come si vede, da link al nulla!) ...

giusto per info, così magari per pensare a qualche controllo aggiuntivo "di coerenza" nello script :)
Per questo ho usato un percorso per la directory di chroot molto breve: /mnt/chroot.
Inoltre lo script l'ho testato sul mio pc e non ho riscontrato nessun problema da te descritto....quindi se lasci la variablie $CHROOTDIR originale non dovresti avere problemi ;)
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1842
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Script per un chroot

Messaggioda metrofox » dom ago 15, 2010 17:31

Allora, sarebbe bene aumentarne la portabilità, l'efficienza di uno script oltre al fatto che debba essere scritto bene è anche il fatto che funzioni su svariati computer, così come un programma... Ad esempio, per il riconoscimento automatico della versione di slackware al posto di fare:

Codice: Seleziona tutto
SLACKVERSION=${SLACKVERSION:-13.1}


Potresti anche fare:

Codice: Seleziona tutto
SLACKVERSION=${SLACKVERSION:-$(cat /etc/slackware-version)}


Poi un'altra cosa:

Codice: Seleziona tutto
if [ -z "$ftp" ]; then


Stai facendo una condizione con una variabile che non è stata dichiarata, non che abbia un senso molto logico dopotutto...
Avatar utente
metrofox
Linux 2.6
Linux 2.6
 
Messaggi: 758
Iscritto il: gio ago 07, 2008 11:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)

Re: Script per un chroot

Messaggioda hashbang » dom ago 15, 2010 18:50

metrofox ha scritto:Allora, sarebbe bene aumentarne la portabilità, l'efficienza di uno script oltre al fatto che debba essere scritto bene è anche il fatto che funzioni su svariati computer, così come un programma... Ad esempio, per il riconoscimento automatico della versione di slackware al posto di fare:

Codice: Seleziona tutto
SLACKVERSION=${SLACKVERSION:-13.1}


Potresti anche fare:

Codice: Seleziona tutto
SLACKVERSION=${SLACKVERSION:-$(cat /etc/slackware-version)}


Poi un'altra cosa:

Codice: Seleziona tutto
if [ -z "$ftp" ]; then


Stai facendo una condizione con una variabile che non è stata dichiarata, non che abbia un senso molto logico dopotutto...
Ok per il primo punto non è stato chiaro il valore di $SLACKVERSION. Quella variabile indica la versione di slackware su cui bisogna operare e non quella in uso. Se tu imposti il valore 13.0 lui scaricherà i pacchetti di Slackware 13.0. Nel momento in cui uscirà, se sarà sempre della serie 13x, la 13.2 basterà cambiare il valore della variabile per chrootare una nuova versione della Slack. Ed è proprio per motivi di portabilità che ho scelto di utilizzare quella variabile. Infatti se hai fatto caso la uso anche nelle variabili dei pacchetti. Per il secondo punto hai ragione, sto correggendo il problema. Però è strano, la variabile è sbagliata ma fa il suo dovere :D .
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1842
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Script per un chroot

Messaggioda metrofox » dom ago 15, 2010 20:18

Ok per il primo punto non è stato chiaro il valore di $SLACKVERSION. Quella variabile indica la versione di slackware su cui bisogna operare e non quella in uso. Se tu imposti il valore 13.0 lui scaricherà i pacchetti di Slackware 13.0.


Ah vero, avevo dimenticato, sorry.

Però è strano, la variabile è sbagliata ma fa il suo dovere


Bhè, ma ci mancherebbe altro, fai una condizione che dice: "Se la variabile $ftp è nulla allora fai..." Non è un buon metodo comunque:

Offtopic: Post n.666
LOL
Avatar utente
metrofox
Linux 2.6
Linux 2.6
 
Messaggi: 758
Iscritto il: gio ago 07, 2008 11:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)

Prossimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron