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.
kobaiachi
Linux 4.x
Linux 4.x
Messaggi: 1368
Iscritto il: gio 14 lug 2005, 0:00
Località: roma
Contatta:

Re: Script per un chroot

Messaggio da kobaiachi »

in realta non serve una cosa come l'installer avanzato di slackware ma una cosa un po diversa:
una volta definito l'applicativo da mettere in chroot lo script si va a controllare tutte le dipendenze del pacchetto e da queste ricava poi la lista dei pacchetti base da installare .
una volta fatto questo installa questi pacchetti (serie A, ap, etc ) , le dipendenze del software finale , e poi il software da mettere in chroot.


Ok ora che lo ho scritto mi rendo conto che effettivamente hai ragione non è piu un semplice script ma un vero e propio software .

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 »

lo script si va a controllare tutte le dipendenze del pacchetto e da queste ricava poi la lista dei pacchetti base da installare .
LOL, e che è... Mica dobbiamo fare nulla di così complesso, cioè per ogni pacchetto dovremmo anadare a mo di ldd, a che ci siamo lo trasformiamo in una specie di gestore dei pacchetti di terze parti che risolve le dipendenze da solo, tipo swaret, slackyd, slapt-get... Ma ti direi comunque che non c'entra molto col compito di questo script... Del resto come dice conraid:

Codice: Seleziona tutto

upgradepkg */*.t?z
Va benissimo, ci pensa lui e la sintassi di sh a risolvere i problemi.
al massimo comunque si potrebbe modificare lo script per chiedere di volta in volta quale sezione scaricare ed installare (soprattutto per sezioni IMHO superflue come F, KDE, KDEI, X, XAP e Y)
Poi la cosa diventerà troppo lunga, rispondere ad ogni domanda y ed n e magari fare tutto in uno switch case... Però bho, non saprei, sarebbe anche questa una bell'idea. Sempre meglio di tutte quelle variabili di wget alla fine...

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 »

metrofox ha scritto:
lo script si va a controllare tutte le dipendenze del pacchetto e da queste ricava poi la lista dei pacchetti base da installare .
LOL, e che è... Mica dobbiamo fare nulla di così complesso, del resto come dice conraid:

Codice: Seleziona tutto

upgradepkg */*.t?z
Va benissimo, ci pensa lui e la sintassi di sh a risolvere i problemi.
Offtopic: c'è un equivoco di fondo, creato dal titolo del topic
un chroot solitamente si fa per i motivi indicati da kobaiachi, non per replicare installazioni full su cui compilare pacchetti. Questa è una esigenza che capita a noi, ma normalmente si mette in chroot l'applicativo da rendere disponibile e le librerie disponibili, in modo che un eventuale "problema" sia "ingabbiato" in questa jail/root e non sull'intero sistema.
Che l'applicativo da rendere disponibile sia una Slackware full è un caso, non la regola :-)
Solo che mancando la gestione delle dipendenze diventa anche complicato (non impossibile) mettersi a cercare i vari pacchetti da installare. I quali poi in Slackware hanno non solo le librerie, ma tutto il resto.
Per queste cose "in mia umile opinione" sono migliori altre distribuzioni

hashbang
Packager
Packager
Messaggi: 2021
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 »

ok allora a questo punto ottimizziamo il codice togliendo i download e installazioni frammentate..prima però vorrei capire in cosa migliorerebbe il download effettuato con rsync....perchè se come dice conraid è meglio di wget, possiamo sostituire il download manager senza problemi.
conraid ha scritto:Offtopic: Che l'applicativo da rendere disponibile sia una Slackware full è un caso, non la regola Solo che mancando la gestione delle dipendenze diventa anche complicato (non impossibile) mettersi a cercare i vari pacchetti da installare. I quali poi in Slackware hanno non solo le librerie, ma tutto il resto.
Per queste cose "in mia umile opinione" sono migliori altre distribuzioni
Più che un caso, se parliamo di packagers, è una necessità ;)
Comunque è vero per un utilizzo "classico" del chroot credo sia più conveniente usare soluzioni che avendo una gestione dei pacchetti più automatizzata permettano un uso più facile dell'ambiente di chroot.

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 »

non è che rsync o lftp siano meglio o peggio di wget, semplicemente ti permettono di crearti un mirror e tenerlo aggiornato.
Capisco che per una installazione di una stable ha poco senso, ma allora perché non scaricare l'iso e montarla?
wget lo trovo inadatto a queste cose, capisco che come dici le fa, ma per situazioni dove ho server ftp o rsync mi sembra più adatto utilizzare un client ftp ed rsync

kobaiachi
Linux 4.x
Linux 4.x
Messaggi: 1368
Iscritto il: gio 14 lug 2005, 0:00
Località: roma
Contatta:

Re: Script per un chroot

Messaggio da kobaiachi »

LOL scusate ragazzi non avevo capito che il tutto serviva per avere una installazione pulita su cui fare le prove di installazione dei pacchetti ....

hashbang
Packager
Packager
Messaggi: 2021
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:non è che rsync o lftp siano meglio o peggio di wget, semplicemente ti permettono di crearti un mirror e tenerlo aggiornato.
Capisco che per una installazione di una stable ha poco senso, ma allora perché non scaricare l'iso e montarla?
wget lo trovo inadatto a queste cose, capisco che come dici le fa, ma per situazioni dove ho server ftp o rsync mi sembra più adatto utilizzare un client ftp ed rsync
Beh scaricare una ISO è un bel malloppo (sono pur sempre 4GB :D)...comunque mi sono deciso: ho attuato i tuoi suggerimenti sul download e installazione con un comando unico ;) L'unico problema è che vorrei escludere dal download generale kdei e scaricarla separatamente con la lingua impostata nella variabile $KDELANG. Per ora le prove le ho fatte con wget (anche se voglio provare lftp) aggiungendo il paramentro --exclude-dirs=kdei però è come se non lo vedesse :-k

hashbang
Packager
Packager
Messaggi: 2021
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 »

ho quasi finito le ultime modifiche. A breve riposterò lo script con le ultime ottimizzazioni. :)

hashbang
Packager
Packager
Messaggi: 2021
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 »

Con le ultime modifiche fatte ho avuto problemi nel download della localizzazione. Pertanto per me va bene l'ultima modifca (fatta da metrofox).

hashbang
Packager
Packager
Messaggi: 2021
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 »

Sinceramente sto pensando all'abbandono del download di kdei. Alla fine se uso una Slackware stabile per i pacchetti a che mi serve la localizzazione di kde. Io neanche lo uso kde (lo installo perchè devo). Uso la slack in chroot in riga di comando. Quindi che ne pensate di togliere kdei dal chroot script e procedere con un download unico?

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 »

Se fossi in te farei in modo che lo script chiedesse l'installazione di una serie con uno switch case o qualcosa del genere(dipende come vorresti fare tu le cose)... Magari dicendo:

Codice: Seleziona tutto

a/ series */ series are strongly required, so they will be automatically installed.
You can edit this script if you don't want to install them. kde/ series, kdei/ series, [...]/ series are not required.
The installer is going to ask you some questions if you want to install them or not

Do you want to install kde/ series, y/n? n
Do you want to install kdei/ series, y/n? n
Sarebbe grazioso installare AUTOMATICAMENTE le serie di pacchetti a cui non si può dire di NO, mentre per i pacchetti a cui si potrebbe fare a meno allora vengono poste delle domande... Ciò permetterebbe all'utente di avere più libertà nella scelta delle cose da installare.

hashbang
Packager
Packager
Messaggi: 2021
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:Se fossi in te farei in modo che lo script chiedesse l'installazione di una serie con uno switch case o qualcosa del genere(dipende come vorresti fare tu le cose)... Magari dicendo:

Codice: Seleziona tutto

a/ series */ series are strongly required, so they will be automatically installed.
You can edit this script if you don't want to install them. kde/ series, kdei/ series, [...]/ series are not required.
The installer is going to ask you some questions if you want to install them or not

Do you want to install kde/ series, y/n? n
Do you want to install kdei/ series, y/n? n
Sarebbe grazioso installare AUTOMATICAMENTE le serie di pacchetti a cui non si può dire di NO, mentre per i pacchetti a cui si potrebbe fare a meno allora vengono poste delle domande... Ciò permetterebbe all'utente di avere più libertà nella scelta delle cose da installare.
Sto testando il pacchetto con delle nuove modifiche. Se tutto va bene lo script oltre alla possibilità di scegliere il tipo di installazione (questo funziona) dovrebbe anche far scegliere la lingua per kde (ovviamente sono disponibili ben 58 opzioni linguistiche; dalla 0 che permette di passare oltre alla 58 che installa il language pack cinese). Certo, è un pò lunghetto e forse anche un pò complesso. Ma sinceramente a me della lunghezza e della complessità non me ne frega molto. Tanto siamo noi a perdere tempo :D Scherzo, è un pò più complesso e lungo di prima, però se si vogliono fare le cose per bene a volte non si può fare a meno della complessità.

Ora lo script agisce come un'installer: i tipi di installazione sono:
Basic (A,AP,D,E,F,K,L,N)
Standard (Basic + T,TCL,X,XAP,Y)
Full (Standard + KDE)

Inoltre per chi ha scelto l'opzione full potrà segliere se installare o meno la localizzazione e soprattutto quale localizzazione (questo però è da testare). Se funziona vi posto lo script :)

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 »

Postalo anche se non funziona :D

hashbang
Packager
Packager
Messaggi: 2021
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 »

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, kobaiachi 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
PKGDIR=${PKGDIR:-/tmp/Slack_$version}
CHROOTDIR=${CHROOTDIR:-/mnt/chroot}
MIRROR=${MIRROR:-ftp.slackware.at}
PKGA=${PKGA:-ftp://$MIRROR/slackware-$version/slackware/a/*.t?z}
PKGAP=${PKGAP:-ftp://$MIRROR/slackware-$version/slackware/ap/*.t?z}
PKGD=${PKGD:-ftp://$MIRROR/slackware-$version/slackware/d/*.t?z}
PKGE=${PKGE:-ftp://$MIRROR/slackware-$version/slackware/e/*.t?z}
PKGF=${PKGF:-ftp://$MIRROR/slackware-$version/slackware/f/*.t?z}
PKGK=${PKGK:-ftp://$MIRROR/slackware-$version/slackware/k/*.t?z}
PKGL=${PKGL:-ftp://$MIRROR/slackware-$version/slackware/l/*.t?z}
PKGN=${PKGN:-ftp://$MIRROR/slackware-$version/slackware/n/*.t?z}
PKGT=${PKGT:-ftp://$MIRROR/slackware-$version/slackware/t/*.t?z}
PKGTCL=${PKGTCL:-ftp://$MIRROR/slackware-$version/slackware/tcl/*.t?z}
PKGX=${PKGX:-ftp://$MIRROR/slackware-$version/slackware/x/*.t?z}
PKGXAP=${PKGXAP:-ftp://$MIRROR/slackware-$version/slackware/xap/*.t?z}
PKGY=${PKGY:-ftp://$MIRROR/slackware-$version/slackware/y/*.t?z}
PATCHES=${PATCHES:-ftp://$MIRROR/slackware-$version/patches/packages/*.t?z}
PATCHDIR=${PATCHDIR:-$PKGDIR/slackware.at/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()
{
if ping -c2 $MIRROR > /dev/null 2>&1 ; then
	echo "OK"
else
        ERRNUM=$?
        echo "FAIL"
        exit $?
fi
}

# Main Script
echo "+----------------------------------+"
echo "|  StArTiNg ChRoOt AuToBuIlDeR...  |"
echo "+----------------------------------+"

echo
echo "Select your Slackware"
echo
echo "Please choose the version of Slackware wich you want to chroot."
echo "For example: if you want to chroot a Slackware-current you must"
echo "write current. (CTRL+D for exit)"
echo
echo -n "Slackware version: "
read version
echo "Slackware version is selected: $version"
echo
echo "This script will install Slackware $version 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 /tmp/Slack_*
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"
else
  echo "OK"
fi

# Ping Mirror
echo -n "Checking for mirror... "
connection_check

# Choose your installation type
echo
echo "Slackware Linux $version Setup"
echo
echo "Choose installation type"
echo
echo "[F] Full Installation (Standard + KDE)"
echo "[B] Basic (Only A,AP,D,E,F,K,L and N package series)"
echo "[S] Standard (Base + T,TCL,X,XAP,Y)"
echo "[E] Exit"
echo
echo -n "Installation type: "
read type

case "$type" in
  
  "E" | "e" )
  echo
  echo "Exiting from installer..."
  exit 1
  ;;
  
  "F" | "f" )
  echo
  echo "Full installation mode selected"
  echo "[WARNING] The full mode installation may take several minutes. So please wait until the operation completes. [WARNING]"
  echo -n "Downloading Slackware... "
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 --exclude-directories=slackware-$SLACKVERSION/slackware/kdei ftp://slackware.at/slackware-$SLACKVERSION/slackware/* > /dev/null 2>&1 
  mkdir -p $PKGDIR/slackware.at/kdei
  echo "DONE"
  ;;

  "B" | "b" )
  echo
  echo "Basic installation mode selected"
  echo "Downloading core packages..."
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGA > /dev/null 2>&1 
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGAP > /dev/null 2>&1 
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGD > /dev/null 2>&1
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGE > /dev/null 2>&1
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGF > /dev/null 2>&1
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGK > /dev/null 2>&1
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGL > /dev/null 2>&1
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGN > /dev/null 2>&1
  ;;

  "S" | "s" )
  echo
  echo "Standard installation mode selected"
  echo -n "Downloading core packages... "
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGA > /dev/null 2>&1 
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGAP > /dev/null 2>&1 
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGD > /dev/null 2>&1
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGE > /dev/null 2>&1
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGF > /dev/null 2>&1
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGK > /dev/null 2>&1
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGL > /dev/null 2>&1
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGN > /dev/null 2>&1
  echo "DONE"
  echo -n "Downloading extras... "
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGT > /dev/null 2>&1 
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGTCL > /dev/null 2>&1
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGX > /dev/null 2>&1
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGXAP > /dev/null 2>&1
  wget -c -r --directory-prefix=$PKGDIR -np --cut-dirs=2 $PKGY > /dev/null 2>&1
  echo "DONE"
  ;;
  
esac

echo "Installing Slackware..."
cd $PKGDIR/slackware.at
installpkg -root $CHROOTDIR */*.t?z > /dev/null 2>&1
echo "Slackware $version was installed successfully"

# Choose localization
if [ -d $PKGDIR/slackware.at/kdei ]; then
  cd $PKGDIR/slackware.at/kdei
  echo
  echo "KDE SC and KOffice localization"
  echo
  echo "if you selected Full mode install you can choose to install the kdei section"
  echo
  echo "[0] I don't want kdei"
  echo "[1] Arabic"
  echo "[2] Bulgarian"
  echo "[3] Catalan"
  echo "[4] Catalan (Valencian)"
  echo "[5] Czech"
  echo "[6] Kashubian"
  echo "[7] Danish"
  echo "[8] German"
  echo "[9] Greek"
  echo "[10] English (UK)"
  echo "[11] Esperanto"
  echo "[12] Spanish"
  echo "[13] Estonian"
  echo "[14] Basque"
  echo "[15] Finnish"
  echo "[16] French"
  echo "[17] Abkhasysk"
  echo "[18] Irish"
  echo "[19] Galician"
  echo "[20] Gujarati"
  echo "[21] Hebrew"
  echo "[22] Hindi"
  echo "[23] Croatian"
  echo "[24] Hungarian"
  echo "[25] Indonesian"
  echo "[26] Icelandic"
  echo "[27] Italian"
  echo "[28] Japanese"
  echo "[29] Kazakh"
  echo "[30] Khmer"
  echo "[31] Kannada"
  echo "[32] Korean"
  echo "[33] Lithuanian"
  echo "[34] Latvian"
  echo "[35] Maithili"
  echo "[36] Macedonian"
  echo "[37] Malayam"
  echo "[38] Norwegian (Bokmaal)"
  echo "[39] Low Saxon"
  echo "[40] Dutch"
  echo "[41] Norwegian (Nynorsk)"
  echo "[42] Punjabi"
  echo "[43] Polish"
  echo "[44] Portuguese"
  echo "[45] Brasil"
  echo "[46] Romanian"
  echo "[47] Russian"
  echo "[48] Sinhala"
  echo "[49] Slovak"
  echo "[50] Slovenian"
  echo "[51] Serbian"
  echo "[52] Swedish"
  echo "[53] Tajik"
  echo "[54] Turkish"
  echo "[55] Ukrainan"
  echo "[56] Walloon"
  echo "[57] Simplified Chinese"
  echo "[58] Chinese"
  echo "[59] All kdei packages"
  echo
  echo -n "Language n.: "
  read lang

  case "$lang" in

    "0" )
    echo
    echo "Skip kdei installation"
    rm -rf $PKGDIR/slackware.at/kdei
    continue
    ;;
  
    "1" )
    echo
    echo "Arabic selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*ar*.t?z > /dev/null 2>&1
    ;;
    
    "2" )
    echo
    echo "Bulgarian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*bg*.t?z > /dev/null 2>&1
    ;;
    
    "3" )
    echo
    echo "Catalan selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*ca*.t?z > /dev/null 2>&1
    ;;

    "4" )
    echo
    echo "Catalan (Valencian) selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*ca@valencia*.t?z > /dev/null 2>&1
    ;;
    
    "5" )
    echo
    echo "Czech selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*cs*.t?z > /dev/null 2>&1
    ;;

    "6" )
    echo
    echo "Kashubian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*csb*.t?z > /dev/null 2>&1
    ;;
    
    "7" )
    echo
    echo "Danish selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*da*.t?z > /dev/null 2>&1
    ;;

    "8" )
    echo
    echo "German selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*de*.t?z > /dev/null 2>&1
    installpkg *de*.t?z
    ;;
    
    "9" )
    echo
    echo "Greek selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*el*.t?z > /dev/null 2>&1
    ;;

    "10" )
    echo
    echo "English (UK) selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*en_GB*.t?z > /dev/null 2>&1
    ;;
    
    "11" )
    echo
    echo "Esperanto selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*eo*.t?z > /dev/null 2>&1
    ;;

    "12" )
    echo
    echo "Spanish selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*es*.t?z > /dev/null 2>&1
    ;;
    
    "13" )
    echo
    echo "Estonian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*et*.t?z > /dev/null 2>&1
    ;;

    "14" )
    echo
    echo "Basque selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*eu*.t?z > /dev/null 2>&1
    ;;
    
    "15" )
    echo
    echo "Finnish selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*fi*.t?z > /dev/null 2>&1
    ;;

    "16" )
    echo
    echo "French selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*fr*.t?z > /dev/null 2>&1
    ;;
    
    "17" )
    echo
    echo "Abkhasysk selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*fy*.t?z > /dev/null 2>&1
    ;;

    "18" )
    echo
    echo "Irish selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*ga*.t?z > /dev/null 2>&1
    ;;
    
    "19" )
    echo
    echo "Galician selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*gl*.t?z > /dev/null 2>&1
    ;;

    "20" )
    echo
    echo "Gujarati selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*gu*.t?z > /dev/null 2>&1
    ;;
    
    "21" )
    echo
    echo "Hebrew selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*he*.t?z > /dev/null 2>&1
    ;;

    "22" )
    echo
    echo "Hindi selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*hi*.t?z > /dev/null 2>&1
    ;;
    
    "23" )
    echo
    echo "Croatian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*hr*.t?z > /dev/null 2>&1
    ;;

    "24" )
    echo
    echo "Hungarian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*hu*.t?z > /dev/null 2>&1
    ;;
    
    "25" )
    echo
    echo "Indonesian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*id*.t?z > /dev/null 2>&1
    ;;

    "26" )
    echo
    echo "Icelandic selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*is*.t?z > /dev/null 2>&1
    ;;
    
    "27" )
    echo
    echo "Italian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*it*.t?z > /dev/null 2>&1
    ;;

    "28" )
    echo
    echo "Japanese selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*ja*.t?z > /dev/null 2>&1
    ;;
    
    "29" )
    echo
    echo "Kazakh selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*kk*.t?z > /dev/null 2>&1
    ;;

    "30" )
    echo
    echo "Khmer selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*km*.t?z > /dev/null 2>&1
    ;;
    
    "31" )
    echo
    echo "Kannada selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*kn*.t?z > /dev/null 2>&1
    ;;

    "32" )
    echo
    echo "Korean selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*ko*.t?z > /dev/null 2>&1
    ;;
    
    "33" )
    echo
    echo "Lithuanian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*lt*.t?z > /dev/null 2>&1
    ;;

    "34" )
    echo
    echo "Latvian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*lv*.t?z > /dev/null 2>&1
    ;;
    
    "35" )
    echo
    echo "Maithili selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*mai*.t?z > /dev/null 2>&1
    ;;

    "36" )
    echo
    echo "Macedonian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*mk*.t?z > /dev/null 2>&1
    ;;
    
    "37" )
    echo
    echo "Malayam selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*ml*.t?z > /dev/null 2>&1
    ;;

    "38" )
    echo
    echo "Norwegian (Bokmaal) selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*nb*.t?z > /dev/null 2>&1
    ;;
    
    "39" )
    echo
    echo "Low Saxon selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*nds*.t?z > /dev/null 2>&1
    ;;

    "40" )
    echo
    echo "Dutch selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*nl*.t?z > /dev/null 2>&1
    ;;
    
    "41" )
    echo
    echo "Norwegian (Nynorsk) selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*nn*.t?z > /dev/null 2>&1
    ;;

    "42" )
    echo
    echo "Punjabi selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*pa*.t?z > /dev/null 2>&1
    ;;
    
    "43" )
    echo
    echo "Polish selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*pl*.t?z > /dev/null 2>&1
    ;;

    "44" )
    echo
    echo "Portuguese selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*pt*.t?z > /dev/null 2>&1
    ;;
    
    "45" )
    echo
    echo "Brasil selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*pt_BR*.t?z > /dev/null 2>&1
    ;;

    "46" )
    echo
    echo "Romanian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*ro*.t?z > /dev/null 2>&1
    ;;
    
    "47" )
    echo
    echo "Russian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*ru*.t?z > /dev/null 2>&1
    ;;

    "48" )
    echo
    echo "Sinhala selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*si*.t?z > /dev/null 2>&1
    ;;
    
    "49" )
    echo
    echo "Slovak selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*sk*.t?z > /dev/null 2>&1
    ;;

    "50" )
    echo
    echo "Slovenian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*sl*.t?z > /dev/null 2>&1
    ;;
    
    "51" )
    echo
    echo "Serbian selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*sr*.t?z > /dev/null 2>&1
    ;;

    "52" )
    echo
    echo "Swedish selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*sv*.t?z > /dev/null 2>&1
    ;;
    
    "53" )
    echo
    echo "Tajik selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*tg*.t?z > /dev/null 2>&1
    ;;

    "54" )
    echo
    echo "Turkish selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*tr*.t?z > /dev/null 2>&1
    ;;
    
    "55" )
    echo
    echo "Ukrainan selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*uk*.t?z > /dev/null 2>&1
    ;;

    "56" )
    echo
    echo "Walloon selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*wa*.t?z > /dev/null 2>&1
    ;;

    "57" )
    echo
    echo "Simplified Chinese selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*zh_CN*.t?z > /dev/null 2>&1
    ;;
    
    "58" )
    echo
    echo "Chinese selected"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*zh_TW*.t?z > /dev/null 2>&1
    ;;

    "59" )
    echo
    echo "All kdei packages selcted"
    wget -c ftp://ftp.slackware.at/slackware-$version/slackware/kdei/*.t?z
    ;;

  esac

  if [ $lang != 0 ]; then
    echo -n "Installing localization... "
    installpkg -root $CHROOTDIR *.t?z > /dev/null 2>&1
    echo "DONE"
  fi
fi

# 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 --reinstall --install-new $PATCHDIR/*.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 "#####################################################"
Changelog lun 23 ago 2010 21:14:50
Possibilità nativa di poter scegliere la versione da chrootare senza aprire lo script
Tre tipi di installazione disponibili
Localizzazioni disponibili a scelta compreso esclusione e inclusione dell'intera sezione kdei

Che ne pensate? :)
Ultima modifica di hashbang il mar 24 ago 2010, 11:28, modificato 2 volte in totale.

hashbang
Packager
Packager
Messaggi: 2021
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:Postalo anche se non funziona :D
Ora funziona tutto ;)

EDIT: Pensavo di sostituire il parametro

Codice: Seleziona tutto

if [ -d $PKGDIR/slackware.at/kdei ]; then
con

Codice: Seleziona tutto

if [ $type = F -o $type = f ]; then
che ne pensate?

Rispondi