Gambas France BETA


Pas de compte ? Incription

configuration des paquets

Ce sujet est résolu.

12
AuteurMessages
valaquarus#1 Posté le 16/2/2018 à 12:24:49
-- Unus Ex Altera --Bonjour à tous,

quelqu'un peut il m'aider à comprendre comment on "explique" à l'IDE où l'on veut que son programme soit installé sur une machine et comment faire pour que les fichiers supplémentaires nécessaire à son fonctionnement (base de données, sons,..) soient retrouvé par le programme (un lien?)

je ne vais quand même pas tout mettre dans usr/bin (ça fait désordre) qui est le défaut non modifiable apparemment.

Ah que Merci!
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
linuxos#2 Posté le 17/2/2018 à 04:36:50
Un peu de sel, de poivre et la crevette sera... Bonjour valaquarus,

Peux tu être plus précis stp dans ta question car je ne suis pas sur de comprendre ton soucis ?

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
valaquarus#3 Posté le 17/2/2018 à 10:15:41
-- Unus Ex Altera --Bonjou Linuxos,
d'abord merci de répondre.
En fait je n'ai pas compris comment l'IDE prépare les paquets pour la distribution d'un programme. Je n'arrive pas à faire installer la base de données au même endroit que le programme du coup il ne fonctionne pas et ça c'est sur ma machine. Donc les autres éléments nécessaire à son fonctionnement que j'ai fait installer dans un sous répertoire dans usr/share (peut être faut il changer d'endroit) ne sont certainement pas vus.
Tu vois je n'ai pas vraiment compris comment il faut paramétrer l'ensemble au moment de la création des paquets.

Philippe.
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
linuxos#4 Posté le 18/2/2018 à 00:47:35
Un peu de sel, de poivre et la crevette sera... Je vais essayer de faire simple pour t'expliquer, en esperant ne pas me perdre dans les explications.

L'IDE de Gambas produit des 'packages' (paquets) en fonction d'un ou plusieurs systèmes de paquets existant sur les différentes distributions Linux existante (fichier DEB, RPM,etc..)
D'apres ta signature, il semblerait que tu soit du KUBUNTU, donc basé dur UBUNTU, donc paquets du type DEBIAN (.deb).

Dans ce cas la, l'IDE va prendre les fichiers que constituent ton projet, compiler le tout et créer un executable <nom_du_projet>.gambas , contenant les sources + les données du projets (a l'exceptions de certaines données et répertoire).

Lors de l'utilisation de l'Assistant de création d'un paquet, un certain nombre de renseignements sont a fournir, comme le nom du paquet, la version, etc. Par défaut l'IDE ajout au paquet les dépendances nécessaire a Gambas lui même sous forme de paquet (EX: gambas-runtime, gambas-db, etc...), donc cela suppose que pour installer ton nouveau paquet sur un autre ordinateur, ces dépendances soient satisfaites bien sur.
Si tu as installé Gambas sur ton 2eme ordinateur a partir de sources de Gambas (pour avoir la dernière version de développement par exemple) et que tu essayes d'installer ton paquet, tu aura l'erreur direct que Gambas version XX n'est pas installé et donc que ton paquet ne peux pas satisfaire ses dépendances.

Plus loin dans l'Assistant de création de paquet (Panneau 7), il est possible d'ajouter des dépendances a d'autres paquets de ta distribution dont ton projet a besoin mais que Gambas ne peut pas deviner. Ainsi si tu accèdes dans ton projet a une commande Linux fournie pas un paquet de ta distribution mais qui n'a rien a voir avec Gambas lui même, il est utile d'ajout sa dépendance ici dans ce panneau. Lors de l'installation de ton paquet, si ta commande Linux n'est pas présente, alors le système d'installation se chargera de le faire pour toi, donc plutôt cool.

Dans le panneau 8 de l'Assistant de création de paquet, il est possible d’intégrer certains fichiers (a toi de choisir lesquels) de ton projets présents dans l'IDE, coté arborescence -> répertoire 'Projet' (juste au dessus de 'Sources'). Ce répertoire 'Projet' correspond physiquement au répertoire '.hidden', présent dans le répertoire de ton projet sur disque dur.
Ce répertoire est dit caché car toutes les données qu'il contient ne sont pas intégrés dans l’exécutable .gambas mais servent par exemple pour être ajouté lors de la création de paquet.

En ce qui concerne les bases de données, en général, un paquet (.deb, .rpm, etc...) ne contient pas de bases de données en tant que tel (les données elle même). Au mieux, selon le type de base de données (on parle ici du moteur de base de données comme SQLite, MySQL, PostgreSQL, etc...), on ajoute dans le paquet la dépendance pour le moteur de BD nécessaire.
Dans le cas de SQLite, comme dans la base de données (les données elle même ici) est sous forme de fichier, la oui, il est possible de l’intégrer dans le paquet que l'on créer. Pour les autres moteurs de BD, type MySQL, PostgreSQL, etc... il n'y a pas physiquement de fichiers puisque que l'on accède aux données par réseau (soit sur lui même, soit à distance).

Bon, j’espère que je n'ai pas été trop confus dans mes explications.

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
valaquarus#5 Posté le 18/2/2018 à 10:46:26
-- Unus Ex Altera --Merci linuxos,
mais je ne sais toujours pas où le paquet terminé va s'installer par défaut car j'ai bien tout "embarqué" ce qui est nécessaire au fonctionnement du programme mais une fois installé sur une machine le programme ne retrouve pas le fichier de base de données (sqlite, ici) car non installé dans le répertoire du programme et le reste comme les sons, les images, etc....
Vaut il mieux installer dans usr/share/monrépertoire ou dans /opt/monrépertoire de façon générale puisque l'assistant de création de paquet me demande la destination des fichiers que je veux "embarquer".

Merci, c'est vrai que je pratique Linux depuis 2005 mais la structure je ne la connais pas bien.
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
gambix#6 Posté le 18/2/2018 à 18:44:38
Faire simple !Il n'est pas logique d'installer la base de donnée dans le même dossier que l'exécutable !!... tu es sous linux et les donnée ne doivent pas être dans le même dossier. SI c'est une base statique tu peux la mettre dans /usr/share/tonprogramme. Si c'est une base qui doit être utilisé par ton utilisateur /home/utilisateur/.local/share/tonprogramme. dans le deuxième cas tu doit stocker la base dans le binaire puis la copier dans le dossier ou bien la générée dynamiquement a partir de ton programme.
Moins de texte dans une signature c'est agrandir son espace.
valaquarus#7 Posté le 19/2/2018 à 22:23:08
-- Unus Ex Altera --Merci Gambix pour ta sollicitude.



Je crois que l'image ne veut pas se montrer.
Mais elle raconte simplement :

this application has raised an unexpected error and must abort.
Unable to locate database'hautParleur.kexi' in '/usr/bin'

J'ai pourtant fait comme tu m'as dit j'ai installé les fichiers nécessaire au fonctionnement du programme dans "/home/utilisateur/.local/share/tonprogramme" d'ailleurs ils y sont bien.
Mais j'ai toujours cette erreur comme si un lien ne se faisait pas entre l'"exe" et les autres éléments.

Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
valaquarus#8 Posté le 20/2/2018 à 10:37:12
-- Unus Ex Altera --
Dans ce cas la, l'IDE va prendre les fichiers que constituent ton projet, compiler le tout et créer un executable <nom_du_projet>.gambas , contenant les sources + les données du projets (a l'exceptions de certaines données et répertoire).
Une citation de linuxos (Olivier) qui me fait réagir. Comment savoir quels sont les fichiers ou répertoires du sous répertoire de l'IDE nommé "Données"qui vont être intégrer dans le binaire (paquet) et ceux qu'il faut rajouter en les plaçant dans le répertoire .hidden du projet en fournissant une "adresse" de destination dans l'assistant de création. Quelle adresse d'ailleurs car d'après monsieur internet on a le choix mais ce qui m'importe c'est que le programme retrouve ses petits pour fonctionner or pour l'instant ce n'est pas le cas, une fois installé mon programme ne retrouve ni sa base de données ni ses fichiers images et sons.
Comment donne t'on l'adresse dans le home du sous répertoire caché : /.local/share/ce_que_je_veux, pour n'importe quelle machine dans l'assistant ; sur ma machine c'est facile mais sur celle de monsieur toulemonde comment désigne t on le répertoire home/user?
j'ai fait plusieurs essais différents avant de poster mais j'ai pas du faire le bon car ça ne marche pas.
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
valaquarus#9 Posté le 20/2/2018 à 13:47:54
-- Unus Ex Altera --En fait tout fonctionne en installant par défaut tout ce dont se sert le programme (ça fait vraiment désordre dans /usr/bin) rangé comme dans le répertoire de travail de l'IDE. Par exemple : Les sons sont dans un sous répertoire, le programme fait appel à eux de cette manière : MonSon = Sound.Load(Application.Path & "/sons/ouverture3.ogg") donc pour changer l'appel il faut changer le répertoire de localisation des sons en par exemple : ~/.local/share/monProg/sons/ouverture3.ogg ceci dans le programme pas dans le paquet, idem pour la base de données et tout objet appelé par le programme, images et autres. D'où ma question :
le tilde qui représente le répertoire home/utilisateur comment le nommer dans la programmation parce que le paquet va créer un sous répertoire ~ à la racine du disque si on l'écrit tel quel.
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
valaquarus#10 Posté le 20/2/2018 à 14:04:08
-- Unus Ex Altera --Gambix, bonjour

Je ne peux pas insérer des images dans mes messages ni toujours pas changer d'avatar, je sais que ce n'est pas important mais pratique. Serait-ce un mauvais paramétrage sur ma machine?
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
gambix#11 Posté le 20/2/2018 à 16:23:37
Faire simple !non sur le serveur
Moins de texte dans une signature c'est agrandir son espace.
valaquarus#12 Posté le 21/2/2018 à 10:41:14
-- Unus Ex Altera --Bonjour,
dans l'assistant de création de paquet comment renseigne t on le répertoire d'installation des objets "supplémentaires", genre sons etc... car si on met une adresse absolue de son propre répertoire home, l'installateur recopie cette adresse, sur sa machine ça va bien là où l'on a décidé que cela irait mais sur la machine de monsieur tout le monde l'installateur cherche votre propre home sans le trouver (et pour cause). J'ai bien récupérer la variable User.home mais dans l'assistant de création de paquet, je n'ai certainement pas la syntaxe voulue car cela ne fonctionne pas, il me créer un répertoire User.home à la racine du disque. Je voudrais comme me l'a dit Gambix installer les objets "supplémentaires" dans /home/$USER/.local/share/monProg cela serait plus facile dans /user/share/monProg mais la base sqlite est alors en lecture seule et ne peut être modifiée.
Un coup de pouce serait apprécié.
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
gambix#13 Posté le 22/2/2018 à 09:55:22
Faire simple !Un installateur effectue une installation en mode root. Donc même si vous lui donniez un chemin relatif genre ~/.local/etc.. ceci logerait les fichiers dans /root qui est le ~ user en cour. Bien sur imaginez aussi si vous avez plusieurs utilisateurs sur la machine ... Donc votre solution est dans l'installation de vos donnée dans /usr/share/votreprog

ensuite lorsque l'utilisateur lance le programme, celui-ci va controler la présence des fichiers dans la zone utilisateur genre une structure de base de donnée. Et la copier si elle n'est pas présente.

Je pense cependant que vous allez devoir m'envoyer vos sources parcequ'il y a l'air d'y avoir un problème de conception a la racine de tout ça. Certainement quelque chose de pas très grave.

Moins de texte dans une signature c'est agrandir son espace.
valaquarus#14 Posté le 22/2/2018 à 12:11:29
-- Unus Ex Altera --Merci Gambix de votre réponse.
Si j'ai bien compris il vaut mieux utiliser le répertoire /usr/share/MonProg pour installer les compléments au programme que d'essayer de placer le tout supplémentaire dans home/utilisateur/.local/share/MonProg car on ne peux pas demander à l'assistant de le faire dans le chemin relatif à la machine sur laquelle on essaye d'installer le prog autre que sa propre machine car là il suffit de donner le chemin absolue exacte.
J'ai déjà essayé la solution dont vous faite état mais la base sqlite se retrouve en lecture seule et ne peut être modifiée par l'utilisateur si je place le tout dans /usr/share/MonProg (à moins d'une astuce particulière que je n'ai pas découverte, encore).

Le code suivant correspond à la connection à la base si je la met dans le répertoire mentionné, ici cela marche puisque sur ma machine j'ai bien la base qui s'installe là où je lui demande.

1
2
3
4
5
6
7
8
9
10
11
12
PUBLIC PROCEDURE Connect()

maconnexion.Type = "sqlite"
'maconnexion.Host = Application.Path '& "/MonProg" ' J'ai essayé ça aussi mais je ne vais pas installer la base de données dans usr/bin ????
maconnexion.Host = User.home & "/.local/share/MonProg"
maconnexion.Name = "MaBaseDeDonnées.kexi"
maconnexion.Login = ""
maconnexion.Password = ""
maconnexion.Port = ""
maconnexion.Open()

END


Merci encore et bonne journée.
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
gambix#15 Posté le 24/2/2018 à 07:48:13
Faire simple !est-ce que au départ la base de donnée est vide ?

J'ai déjà essayé la solution dont vous faite état mais la base sqlite se retrouve en lecture seule et ne peut être modifiée par l'utilisateur si je place le tout dans /usr/share/MonProg


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PUBLIC SUB Connect()


IF NOT exist ("~/.local/share/Monprog/mabase.kexi") THEN

COPY "/usr/share/Monprog/mabase.kexi" TO "~/.local/share/Monprog/mabase.kexi"

ENDIF

maconnexion.Type = "sqlite"
maconnexion.Host = "~/.local/share/MonProg"
maconnexion.Name = "MaBase.kexi"
maconnexion.Open()

END
Moins de texte dans une signature c'est agrandir son espace.
12