Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.
Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
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.
#!/bin/sh
CWD=`pwd`
TMP=${TMP:-/tmp/txz}
PKG=$TMP/package-jdownloader
# Script for automatic JDownloader setup
# Author: Luigi Caiazza
NAME=jdownloader
FILENAME=JDownloader
INSTALLDIR=/usr/share
VERSION=1.0
ARCH=${ARCH:-noarch}
BUILD=1lc
if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
if [ ! -d $PKG ]; then
mkdir -p $PKG
fi
rm -rf $PKG
mkdir -p $PKG
cd $PKG
mkdir -p $PKG/$INSTALLDIR
unzip $CWD/$FILENAME.zip -d $PKG/$INSTALLDIR
rm -rf $PKG/$INSTALLDIR/$FILENAME/tools/Windows $PKG/$INSTALLDIR/$FILENAME/tools/mac $PKG/$INSTALLDIR/$FILENAME/*.exe $PKG/$INSTALLDIR/$FILENAME/*.bat
chmod 777 $PKG/$INSTALLDIR/$FILENAME
mkdir -p $PKG/usr/bin
cat <<EOF > $PKG/usr/bin/$NAME
#!/bin/sh
java -Xmx512m -jar $INSTALLDIR/JDownloader/JDownloader.jar
EOF
chmod +x $PKG/usr/bin/$NAME
mkdir -p $PKG/usr/share/icons/
cp -a $PKG/$FILENAME/jd/img/logo/logo_20_20.png $PKG/usr/share/icons/jdownloader.png
mkdir -p $PKG/usr/share/applications
cat << EOF > $PKG/usr/share/applications/$NAME.desktop
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=JDownloader
GenericName=Java Download Manager
GenericName[it]=Download Manager in Java
Comment=An open source download manager
Comment[it]=Un download manager open source
Icon=jdownloader.png
Exec=jdownloader
Terminal=false
Categories=Application;Network;
EOF
mkdir -p $PKG/usr/doc/$NAME-$VERSION
mkdir $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/slack-desc > $PKG/usr/doc/$NAME-$VERSION/slack-desc
cat $CWD/$NAME.SlackBuild > $PKG/usr/doc/$NAME-$VERSION/$NAME.SlackBuild
cd $PKG
chown -R root:root .
makepkg -l y -c n $CWD/$NAME-$VERSION-$ARCH-$BUILD.txz
if [ "$1" = "--cleanup" ]; then
rm -rf $PKG
fi
Per renderlo il più possibile portabile (e quindi non si può mettere nella home, che è legata al nome utente) l'ho fatto installare in /usr/share. Essendoci però il problema di dover rendere scrivibile la dir (per gli aggiornamenti del software e delle configurazioni), non sono riuscito a risolvere in altro modo che con chmod 777.
Volevo chiedervi se avete idea di una soluzione più pulita, e intanto spero di aver fatto qualcosa che vi possa piacere.
Il file .zip a cui lo slackbuild è legato è: http://ul.to/06q3lm .
Basta modificare solo la variabile INSTALLDIR, che ho fatto apposta per rendere più istantaneo questo tipo di modifica.
Il discorso è che il problema di permessi si verificherebbe anche lì, giusto? Come risolverlo efficacemente oltre a chmod 777?
if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
if [ ! -d $PKG ]; then
mkdir -p $PKG
fi
rm -rf $PKG
mkdir -p $PKG
scusa ma non ho capito il senso di questa parte Secondo lo script tu controlli la presenza della directory rappresentata dalla variabile $TMP e della directory rappresentata dalla variabile $PKG e se non sono presenti vengono create. Poi però ordini di cancellare la directory della variabile $PKG e la ricrei. Scusami ma non ha molto senso.
conviene dare un:
così ordini di cancellare a priori la directory di compilazione e di ricrearla insieme alla directory temporanea di pacchettizzazione. Il tutto diventa più pulito e sicuro perchè in caso di una cattiva costruzione del pacchetto non hai bisogno di eliminare a mano le directories perchè lo farà lo SlackBuild.
Se invece non vuoi toccare la directory di compilazione
Hai perfettamente ragione, non me lo spiego nemmeno io.
Avevo fatto più di qualche prova perché non è proprio una compilazione di sorgenti, ma veri e propri file "eseguibili" (bytecode) che in teoria si dovrebbero solo decomprimere e avviare, con in più il problema dei permessi (se non hai il permesso di scrivere nella directory di deploy, l'applicazione non si avvia nemmeno).
Devo essermi dimenticato di cancellare qualcosa, credo sia l'unica spiegazione che posso dare.
Allo stesso modo in cui lo stai gestendo più, forse un poco in maniera più pulita, ma comunque è normale, basta rivedere un po il codice e provarlo sulla proprio macchina e poi raggiungi un buon stato dello script, ora che hai aggiustato quel blocco di if(che comunque si trova forse o negli script di gohanz o in quelli di loris) dovrebbe andare bene, comunque sarebbe infatti meglio se installassi tutto in /opt
#!/bin/sh
CWD=`pwd`
TMP=${TMP:-/tmp/txz}
PKG=/tmp/package-jdownloader
# Script for automatic JDownloader setup
# Author: Luigi Caiazza
# You can download zip package from:
# http://ul.to/06q3lm
NAME=jdownloader
FILENAME=JDownloader
INSTALLDIR=/opt
VERSION=1.0
ARCH=${ARCH:-noarch}
BUILD=1lc
rm -rf $PKG
rm -rf $TMP
mkdir -p $TMP $PKG
cd $PKG
mkdir -p $PKG/$INSTALLDIR
unzip $CWD/$FILENAME.zip -d $PKG/$INSTALLDIR
rm -rf $PKG/$INSTALLDIR/$FILENAME/tools/Windows $PKG/$INSTALLDIR/$FILENAME/tools/mac $PKG/$INSTALLDIR/$FILENAME/*.exe $PKG/$INSTALLDIR/$FILENAME/*.bat
chmod 777 $PKG/$INSTALLDIR/$FILENAME
mkdir -p $PKG/usr/bin
cat <<EOF > $PKG/usr/bin/$NAME
#!/bin/sh
java -Xmx512m -jar $INSTALLDIR/JDownloader/JDownloader.jar
EOF
chmod +x $PKG/usr/bin/$NAME
mkdir -p $PKG/usr/share/icons/
cp -a $PKG/$FILENAME/jd/img/logo/logo_20_20.png $PKG/usr/share/icons/jdownloader.png
mkdir -p $PKG/usr/share/applications
cat << EOF > $PKG/usr/share/applications/$NAME.desktop
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=JDownloader
GenericName=Java Download Manager
GenericName[it]=Download Manager in Java
Comment=An open source download manager
Comment[it]=Un download manager open source
Icon=jdownloader.png
Exec=$NAME
Terminal=false
Categories=Application;Network;
EOF
mkdir -p $PKG/usr/doc/$NAME-$VERSION
mkdir $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/slack-desc > $PKG/usr/doc/$NAME-$VERSION/slack-desc
cat $CWD/$NAME.SlackBuild > $PKG/usr/doc/$NAME-$VERSION/$NAME.SlackBuild
cd $PKG
chown -R root:root .
makepkg -l y -c n $CWD/$NAME-$VERSION-$ARCH-$BUILD.txz
if [ "$1" = "--cleanup" ]; then
rm -rf $PKG
fi
Ho tagliato la testa al toro e tirato fuori la directory del package da quella di estrazione.
Avevo anche commesso un piccolo errore nella chiamata dell'Exec dal collegamento del menu: chiama il bin che ho costruito poco prima, ma l'ho chiamato $NAME e non jdownloader. Se la variabile cambiasse sarebbe un link morto.
Il download automatico purtroppo non è possibile perché il mirror principale non punta a un URL fisso, ma a uno generato su uploaded.to. Ho messo un commento con quello più diretto possibile.
Ti consiglio di aggiungere il controllo delle dipendeze del pacchetto con requiredbuilder....uno strumento indispensabile per noi pacchettizzatori. Con questo potrai vedere se la tua opera risulta pulita o "sporca" di qualche pacchetto che non c'entra. Requiredbuilder lo trovi sul repo di Slackware 13.1 32 bit