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.
hashbang
Packager
Packager
Messaggi: 2020
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Script per un chroot

Messaggio da hashbang »

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 15 ago 2010, 20:03, modificato 8 volte in totale.

Avatar utente
navajo
Staff
Staff
Messaggi: 3884
Iscritto il: gio 8 gen 2004, 0:00
Nome Cognome: Massimiliano
Slackware: 13.37 (x86_64)
Kernel: 2.6.37.6
Desktop: KDE 4.7.0 (Alien)
Località: Roma

Re: Script per un chroot

Messaggio da navajo »

be intanto, leggere qui: directory invece che directory----- mi vien da pensare ..

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Script per un chroot

Messaggio da conraid »

bah, io ogni volta faccio

Codice: Seleziona tutto

installpkg --root /dir/dove/voglio */*.t?z
e non ho problemi

hashbang
Packager
Packager
Messaggi: 2020
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: Script per un chroot

Messaggio da hashbang »

è 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.

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Script per un chroot

Messaggio da conraid »

script? mio metodo?
è semplicemente un comando da terminale

hashbang
Packager
Packager
Messaggi: 2020
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: Script per un chroot

Messaggio da hashbang »

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.

Avatar utente
zoros
Linux 4.x
Linux 4.x
Messaggi: 1361
Iscritto il: lun 28 mag 2007, 22:51
Nome Cognome: Fabio`Zorba`
Slackware: 14.1
Kernel: 3.10.30-smp
Desktop: KDE-3.5(works!)
Località: Gorizia
Contatta:

Re: Script per un chroot

Messaggio da zoros »

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
twister
Staff
Staff
Messaggi: 1599
Iscritto il: mar 11 nov 2003, 0:00
Slackware: current
Località: Roma
Contatta:

Re: Script per un chroot

Messaggio da twister »

[OT]
Immagine!=Immagine
[/OT]

metrofox
Linux 3.x
Linux 3.x
Messaggi: 760
Iscritto il: gio 7 ago 2008, 12:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)
Località: London

Re: Script per un chroot

Messaggio da metrofox »

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
zoros
Linux 4.x
Linux 4.x
Messaggi: 1361
Iscritto il: lun 28 mag 2007, 22:51
Nome Cognome: Fabio`Zorba`
Slackware: 14.1
Kernel: 3.10.30-smp
Desktop: KDE-3.5(works!)
Località: Gorizia
Contatta:

Re: Script per un chroot

Messaggio da zoros »

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 ...

hashbang
Packager
Packager
Messaggi: 2020
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: Script per un chroot

Messaggio da hashbang »

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 15 ago 2010, 17:41, modificato 1 volta in totale.

hashbang
Packager
Packager
Messaggi: 2020
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: Script per un chroot

Messaggio da hashbang »

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 ;)

metrofox
Linux 3.x
Linux 3.x
Messaggi: 760
Iscritto il: gio 7 ago 2008, 12:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)
Località: London

Re: Script per un chroot

Messaggio da metrofox »

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...

hashbang
Packager
Packager
Messaggi: 2020
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: Script per un chroot

Messaggio da hashbang »

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 .

metrofox
Linux 3.x
Linux 3.x
Messaggi: 760
Iscritto il: gio 7 ago 2008, 12:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)
Località: London

Re: Script per un chroot

Messaggio da metrofox »

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

Rispondi