[PKGBUILD] Logiciel java (résolu)

Mise à jour / Création /debug de paquetages
Tristelune
Elfe
Messages : 516
Inscription : mer. 01 août 2007, 16:38

[PKGBUILD] Logiciel java (résolu)

Message par Tristelune »

Salut à tous,

je vais prochainement adatper des PKGBUILD pour des logiciels java. Je suis en train d'adapter
geogebra5-beta. J'ai toutefois
le même problème que pour un autre. Si je l'installe chez moi, j'ai l'arboresence suivante:

Code : Tout sélectionner

drwxr-xr-x 2 users users 4096 May 23 18:42 geogebra
-r--r--r-- 1 users users  691 May 23 18:42 geogebra.png
-rwxr-xr-x 1 users users  980 May 23 18:42 geogebra-portable
drwxr-xr-x 4 users users 4096 May 23 18:42 jre1.7.0_45-i686
drwxr-xr-x 4 users users 4096 May 23 18:42 jre1.7.0_45-x86_64
-rw-r--r-- 1 users users   93 May 23 18:42 readme.txt
On voit ici qu'il y a deux répertoires qui sont jre1.7.0_45-i686 et jre1.7.0_45-x86_64. Je pense qu'il
s'agit de l'environnement java et si java est installé ce n'est pas nécessaire. Donc c'est inutile de les installer. Comment
gérer ça au mieux ? Faut-il les effacer du PKGBUILD à l'aide d'un rm, genre

Code : Tout sélectionner

package(){

      rm -r ${pgkdir}/jre1.7.0_45-i686
      rm -r ${pkgdir}/jre1.7.0_45-x86_64
}
Ou est-ce qu'il y a une meilleure solution ?

Merci!

EDIT: j'oubliais, j'ai bien vu la page du wiki pour java. Mais ça ne m'a pas aidé.
Dernière modification par Tristelune le mer. 18 juin 2014, 16:26, modifié 1 fois.
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [PKGBUILD] Logiciel java

Message par FoolEcho »

Salut,

S'il s'agit bien d'environnements java de base, tu dois effectivement pouvoir les dégager et les remplacer par la dépendance java-runtime (>= 7 en l'occurrence) et vérifier si le fonctionnement demeure correct (au besoin il faut ajouter un petit script bash pour lancer l'application depuis /usr/bin et vérifier les CLASSPATHS).

À défaut (s'il s'agit d'environnements modifiés, mais c'est peu probable), au moins supprimer le répertoire qui ne colle pas à l'architecture d'installation.
«The following statement is not true. The previous statement is true.» :nage:
Tristelune
Elfe
Messages : 516
Inscription : mer. 01 août 2007, 16:38

Re: [PKGBUILD] Logiciel java

Message par Tristelune »

Merci pour le coup de main. Je me pose toutefois encore une question. A force de bricoler j'arrive à obtenir quelque chose
mais j'aimerais une précision si quelqu'un peut m'aider. Voici le PKGBUILD que j'ai:

Code : Tout sélectionner

pkgname=geogebra5-beta
pkgver=4.9.273.0
pkgrel=1
pkgdesc="Dynamic mathematics software with interactive graphics (2D and 3D), algebra and spreadsheet"
arch=('i686' 'x86_64')
url="http://www.geogebra.org/"
license=('GPL3 CCPL:by-nc-sa')
depends=('java-runtime' 'desktop-file-utils' 'hicolor-icon-theme' 'gsl' 'xdg-utils')
optdepends=()
conflicts=('gnome-thumbnailer-geogebra' 'kde-thumbnailer-geogebra' 'geogebra')
install='geogebra5-beta.install'
source=("http://download.geogebra.org/installers/5.0/GeoGebra-Linux-Portable-${pkgver}.tar.bz2")
md5sums=('9b6d0fa09d33bf960764419cd931558b')

package() {

	cd "${srcdir}/GeoGebra-Linux-Portable-${pkgver}/geogebra/"
	install -dm 755 "${pkgdir}/usr/bin"
	install -dm 755 "${pkgdir}/usr/share/geogebra5-beta"
	install -dm 755 "${pkgdir}/usr/share/geogebra5-beta"
	cp ./geogebra "${pkgdir}/usr/bin"
	cp *jar "${pkgdir}/usr/share/geogebra5-beta"
	cp *txt "${pkgdir}/usr/share/geogebra5-beta"
}


Si j'exécute après avoir installé, voici ce que j'obtiens:

Code : Tout sélectionner

$ geogebra 
Error: Could not find or load main class geogebra.GeoGebra3D
J'en déduis qu'il y a une classe qu'il ne trouve pas. Détail: je ne développe pas en java, je sais juste que CLASSPATH sert à déterminer où chercher les bibliothèques. J'ai repris le code du wiki et j'ai fait:

Code : Tout sélectionner

$ for name in /usr/share/geogebra5-beta/*.jar; do CP=$CP:$name; done
ensuite

Code : Tout sélectionner

$ CLASSPATH=$CP
Et j'obtiens toujours

Code : Tout sélectionner

$ geogebra 
Error: Could not find or load main class geogebra.GeoGebra3D
Si je modifie mon PKGBUILD comme ceci:

Code : Tout sélectionner

package() {

	cd "${srcdir}/GeoGebra-Linux-Portable-${pkgver}/geogebra/"
	install -dm 755 "${pkgdir}/usr/bin"
	install -dm 755 "${pkgdir}/usr/share/geogebra"
	install -dm 755 "${pkgdir}/usr/share/geogebra"
	cp ./geogebra "${pkgdir}/usr/bin"
	cp *jar "${pkgdir}/usr/share/geogebra"
	cp *txt "${pkgdir}/usr/share/geogebra"
}


Donc je copie dans ${pkgdir}/usr/share/geogebra au lieu de ${pkgdir}/usr/share/geogegbra5-beta et ça fonctionne. Dois-je supposer que la variable CLASSPATH n'a aucune influence et que le chemin doit être obligatoirement celui-là ? J'ai trouvé des liens qui mentionnent que dans certaines conditions, CLASSPATH n'a aucune influence. C'est ici.
Its also worth noting that when you use the java -jar command line option to run your Java program as an executable JAR, then the CLASSPATH environment variable will be ignored, and also the -cp and -classpath switches will be ignored.
Si je me pose la question, c'est parce que j'aurai un autre paquet à faire pour un programme java et que dans le wiki ils conseillent d'installer les fichiers *jar dans /usr/share/java/geogebra.

Note: je viens de remarquer que si je crée un script:

Code : Tout sélectionner

#!/bin/sh
exec "$JAVA_HOME/bin/java" -jar '/usr/share/geogebra5-beta/geogebra.jar' "$@"
Ca fonctionne. Mais comme on est censé démarrer le programme avec /usr/bin/geogebra ça ne me paraît pas une alternative. Et je ne comprends toujours pas ce qui se passe. :(
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [PKGBUILD] Logiciel java

Message par FoolEcho »

Tristelune a écrit :

Code : Tout sélectionner

$ geogebra
Error: Could not find or load main class geogebra.GeoGebra3D
Pour y avoir jeté un œil, c'est parce qu'il y a une variable d'environnement (GG_PATH) qui permet d'indiquer où se trouvent les jars de geogebra (par défaut il prend le répértoire où se trouve l'exécutable donc il ne peut les trouver seul si tu dissocies /usr/bin et /usr/share).
Tristelune a écrit :Note: je viens de remarquer que si je crée un script:

Code : Tout sélectionner

#!/bin/sh
exec "$JAVA_HOME/bin/java" -jar '/usr/share/geogebra5-beta/geogebra.jar' "$@"
Ca fonctionne. Mais comme on est censé démarrer le programme avec /usr/bin/geogebra ça ne me paraît pas une alternative. Et je ne comprends toujours pas ce qui se passe. :(
Ça n'est effectivement pas bien car le script geogebra fait plus de choses et fourni plus d'options (il y a des chances qu'à utiliser directement le jar, l'application te claque dans les pattes à un moment ou un autre).

Ma proposition:
-installer dans /usr/share/geogebra5-beta, les jars *et* le script geogebra (comme ça se présente dans l'archive en fait).
-fournir un script bash à installer dans /usr/bin/ (que tu peux parfaitement appeler geogebra) avec pour contenu:

Code : Tout sélectionner

#!/bin/sh
cd /usr/share/geogebra5-beta
./geogebra $@
(le $@ permet de lancer le premier script avec des arguments à destination du vrai script, par exemple lancer geogebra --help devrait effectivement lancer l'aide du «vrai» script geogebra)
«The following statement is not true. The previous statement is true.» :nage:
Tristelune
Elfe
Messages : 516
Inscription : mer. 01 août 2007, 16:38

Re: [PKGBUILD] Logiciel java

Message par Tristelune »

J'ai suivi ton conseil et voici le PKGBUILD.

Merci du coup de main FoolEcho!!!
Répondre