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 :-k 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:

Codice: Seleziona tutto

rm -rf $TMP
rm -rf $PKG
mkdir -p $TMP $PKG
se invece $PKG è contenuta in $TMP potresti dare

Codice: Seleziona tutto

rm -rf $TMP
mkdir -p $TMP $PKG
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ò :-D

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