Pagina 1 di 3
Slackbuild per JDownloader
Inviato: lun 16 ago 2010, 11:12
da Vic Steele
Ciao a tutti.
In 10 minuti di tempo libero ho creato uno slackbuild per JDownloader:
Codice: Seleziona tutto
#!/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 .
Grazie.
Re: Slackbuild per JDownloader
Inviato: lun 16 ago 2010, 11:20
da Blallo
Buttalo in /opt, secondo me è più pulita la cosa
Re: Slackbuild per JDownloader
Inviato: lun 16 ago 2010, 11:25
da Vic Steele
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?
Re: Slackbuild per JDownloader
Inviato: lun 16 ago 2010, 11:32
da Blallo
credo li puoi assegnare tranquillamente, non vedo il problema
Re: Slackbuild per JDownloader
Inviato: lun 16 ago 2010, 11:47
da Vic Steele
Ottimo allora. Credevo di essere stato troppo drastico.
C'è qualcosa che modificheresti?
Re: Slackbuild per JDownloader
Inviato: lun 16 ago 2010, 12:01
da Blallo
gli aggiungerei il download automatico dell'archivio di JDownloader
Re: Slackbuild per JDownloader
Inviato: lun 16 ago 2010, 19:23
da hashbang
Codice: Seleziona tutto
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:
se invece $PKG è contenuta in $TMP potresti dare
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
Codice: Seleziona tutto
if [ -d $TMP ]; then
mkdir -p $TMP
fi
cd $TMP # Solo se $PKG è contenuta in $TMP
rm -rf $PKG
mkdir -p $PKG
Re: Slackbuild per JDownloader
Inviato: lun 16 ago 2010, 22:23
da Vic Steele
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.
Re: Slackbuild per JDownloader
Inviato: mar 17 ago 2010, 1:09
da metrofox
Io tempo fa creai un pacchetto e lo resi disponibile proprio qui su slacky.eu con tutto il *.tgz ai tempi... Non so che fine abbia fatto però

Re: Slackbuild per JDownloader
Inviato: mar 17 ago 2010, 1:16
da Vic Steele
Davvero? Come lo avevi gestito?
Re: Slackbuild per JDownloader
Inviato: mar 17 ago 2010, 1:39
da metrofox
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
Re: Slackbuild per JDownloader
Inviato: mar 17 ago 2010, 9:12
da Vic Steele
Eccolo dopo le modifiche:
Codice: Seleziona tutto
#!/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.
Re: Slackbuild per JDownloader
Inviato: mar 17 ago 2010, 17:16
da hashbang
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
Re: Slackbuild per JDownloader
Inviato: mar 17 ago 2010, 19:59
da metrofox
Dipendenze su un software scritto in java? Mmm

Re: Slackbuild per JDownloader
Inviato: mar 17 ago 2010, 20:00
da Blallo
metrofox ha scritto:Dipendenze su un software scritto in java? Mmm

beh, la jre la chiede