archimede333 Posté(e) 25 novembre 2014 Signaler Share Posté(e) 25 novembre 2014 Bonjour à tous, Je souhaite créer, pour un test, une variable d'environement pour Unison. Le problème, c'est que si je fais la commande : export HOME_UNISON=/share/MD0_DATA/ Cela ne reste pas au démarrage du NAS. J'ai également essayé d'intégrer le code présent dans le message suivant, dans mon autorun (présent dans le répertoire.qpkg) : http://forum.qnapclub.de/viewtopic.php?f=33&t=18283#p101343, mais cela ne fonctionne pas non plus. Exemple de mise en oeuvre : SET_HOME_UNISON="/share/MD0_DATA/" export HOME_UNISON=$SET_HOME_UNISON echo "export HOME_UNISON=$HOME_UNISON" >> /etc/profile Connaissez-vous une méthode pour créer une variable d'environnement, de façon permanente ? Ou de façon à la recréer à chaque démarrage ? Merci Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
0 father_mande Posté(e) 25 novembre 2014 Signaler Share Posté(e) 25 novembre 2014 Bonjour, Ce que vous avez fait en modifiant /etc/profile c'est que chaque nouveau shell (telnet ou ssh) aura votre export de fait ... Mais si c'est pour lancer un shell par ailleurs depuis init par exemple ... il faudra appeler un nouveau shell pour en profiter (donc pas de . ni de source) Ou mieux ajouter votre export dans vos propres fichiers de commande ... La méthode que vous utilisez fonctionne bien, Optware l'utilise, JE l'utilise dans certain de mes QPKG ... donc regardez 1 par un système de loc (echo dans un fichier) que autorun.sh est bien exécuté 2 vérifiez dans une console que c'est pris en compte ... 3 dites ce que vous voulez faire ... vous nous donner une partie du problème et la solution que vous avez choisi ... mais convient-elle ??? car nous nous ne voyons pas le problème, juste que vous avez, a priori, fait quelque chose de fonctionnel chez d'autres ... Philippe. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
0 archimede333 Posté(e) 26 novembre 2014 Auteur Signaler Share Posté(e) 26 novembre 2014 Bonjour father_mandes, Mon problème est exprimé dans le titre . En fait, dès lors que je redémarrage, la variable n'est pas créée. Alors que je veux que le système soit automatique. Mon "autorun" est fonctionnel (depuis longtemps), car mes points de montages sont lancés par là. Dans mon message précédent, j'expliquai ce que j'avais fait, afin d'écarter ces possibilité, ou de les corriger s'il y avait des erreurs Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
0 father_mande Posté(e) 26 novembre 2014 Signaler Share Posté(e) 26 novembre 2014 Bonjour, MAIS pour l'utiliser à QUOI ? démarrez un service (à la Optware) et là sa fonctionne SI c'est un nouveau shell DONC pas lancé avant la modification NI par init ... de plus il suffit d'ajouter cette variable au début du shell de service .. et de le redémarrer (puisque init l'aura dèjà fait) si c'est pour passez de commande, comme Optware, Python, etc. ... la solution du profile (si il es modifié ... je suppose que vous avez vérifier) autre ... là cela dépend des cas ... car si un QPKG par exemple est lancé par un autre LES 2 doivent avoir la variable et n'utiliserons pas autorun.sh et /etc/profile donc là il faut modifier (sed, awk, etc.) les 2 shell de lancement et faire un restart dessus ... Philippe. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
0 archimede333 Posté(e) 26 novembre 2014 Auteur Signaler Share Posté(e) 26 novembre 2014 Je ne voulais pas trop rentrer dans les détails et des explications super longues pour le besoin, mais si c'est mieux pour comprendre, alors je le mets Depuis que j'utilise Unison pour synchroniser mes NAS, j'ai toujours trouvé cela pas trop "propre" de devoir éditer un fichier de l'application pour renseigner le répertoire "racine" des données (ex. "/share/MD0_DATA"). De plus, depuis le passage en v4.1.0 (ou la v4.0.0), les derniers NAS, dont mon 869Pro, le répertoire "racine" aux données a été modifié en "/share/CACHEDEV1_DATA". Du coup, il fallait depuis la nouvelle version du firmware du NAS, compiler deux versions d'Unison différentes. Souhaitant tester une version plus récente d'Unison (façons de parler, c'est une bêta datant de 2012), afin de corriger des bugs, je me suis dit que je n'avais qu'a édité une seule fois le fichier, en mettant en place, une variable d'environnement, exprès pour Unison. Cette variable se nommerait "HOME_UNISON", et contiendrait le chemin où se trouvent les données du NAS (cf. mon premier message). En utilisant la commande ci-après, la variable est correctement créée, mais de façon non permanente (la variable n'est plus présente lors du redémarrage du NAS). export HOME_UNISON=/share/MD0_DATA/ Ma solution a été de passer par l'autorun, afin d'exécuter la commande au démarrage du NAS, mais hélas, cela ne fonctionne pas. J'ai donc essayé une syntaxe trouvée sur Internet (ci-après), mais la variable n'est pas présente lorsque je me connecte en SSH. Par contre, si j'exécute manuellement mon autorun, que je relance le shell (quitter PuTTY) et que je me reconnecte, la variable est présente. SET_HOME_UNISON="/share/MD0_DATA/" export HOME_UNISON=$SET_HOME_UNISON echo "export HOME_UNISON=$HOME_UNISON" >> /etc/profile Donc voilà, j'espère que je me suis exprimé de façons claire et compréhensible. Je souhaite, de la façon automatique, qu'une variable soit créée lors du démarrage du NAS, tout comme ont peu lancé des scripts grâce à l'autorun Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
0 father_mande Posté(e) 27 novembre 2014 Signaler Share Posté(e) 27 novembre 2014 Bonjour, La solution pour votre problème est autre ... car il faudrait pour chaque tache lancée savoir si l’environnement est complet ... car un bash NON intéractif ... n'utilise pas obligatoirement profile un programme lancé par init (le pére de toute tache Linux) n'utilise JAMAIS le profile un fork (programme lancé par un autre) utilisera ou pas suivant son mode de lancement et si il est dans un nouveau shell ou dans le même sans parler des cas des deamon qui peuvent "migrer" d’environnement ... Le mieux est de remplacer là ou vous avez besoin de cette variable par une sous-routines qui vous donnera TOUJOURS le bon chemin Il en existe plusieurs exemple : XX=`grep Public /etc/config/smb.conf | grep path | tr -d " " | cut -f 2 -d"="` DIR=${XX%/*} DIR contiendra le chemin qu'il soit MD0 ou CACHEDEV1 sans / à la fin ... et sera TOUJOURS le bon vous pouvez aussi utilisez la séquence de la plupart des install de QPKG ################################## # Determine BASE installation location ################################## # find_base(){ PUBLIC_SHARE=`/sbin/getcfg SHARE_DEF defPublic -d Public -f /etc/config/def_share.info` QPKG_BASE="" publicdir=`/sbin/getcfg ${PUBLIC_SHARE} path -f /etc/config/smb.conf` if [ ! -z $publicdir ] && [ -d $publicdir ];then publicdirp1=`/bin/echo $publicdir | /bin/cut -d "/" -f 2` publicdirp2=`/bin/echo $publicdir | /bin/cut -d "/" -f 3` publicdirp3=`/bin/echo $publicdir | /bin/cut -d "/" -f 4` if [ ! -z $publicdirp1 ] && [ ! -z $publicdirp2 ] && [ ! -z $publicdirp3 ]; then [ -d "/${publicdirp1}/${publicdirp2}/${PUBLIC_SHARE}" ] && QPKG_BASE="/${publicdirp1}/${publicdirp2}" fi fi # Determine BASE installation location by checking where the Public folder is. if [ -z $QPKG_BASE ]; then for datadirtest in /share/HDA_DATA /share/HDB_DATA /share/HDC_DATA /share/HDD_DATA /share/MD0_DATA /share/MD1_DATA; do [ -d $datadirtest/${PUBLIC_SHARE} ] && QPKG_BASE="/${publicdirp1}/${publicdirp2}" done fi if [ -z $QPKG_BASE ] ; then echo "The Public share not found." _exit 1 fi QPKG_INSTALL_PATH="${QPKG_BASE}/.qpkg" QPKG_DIR="${QPKG_INSTALL_PATH}/${QPKG_NAME}" } # Avec cela dans vos scripts ... ils seront indépendant de la machine d’accueil et de la structure choisi par le client ... NB il existe plus d'une dizaine de solutions ... mais une suffit ... Je n'ai jamais qu'un seul shell quelque soit la machine cible que ce soit en dev. interne comme en QPKG ... Philippe. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
0 archimede333 Posté(e) 30 novembre 2014 Auteur Signaler Share Posté(e) 30 novembre 2014 Encore une fois, je vous remercie Énormément Phillipe pour votre aide. Toutefois (c’est le « mais » auquel nous avons souvent le droit : /), l’application est en OCaml, un langage que j’arrive à lire, mais pas à développer. Du coup, je n’arrive pas à porter vos astuces dans ce langage. Je vais donc refaire la modification du code et compiler une version pour chaque NAS. c’est encore le plus simple Merci en tout cas pour votre aide et votre temps. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Question
archimede333
Bonjour à tous,
Je souhaite créer, pour un test, une variable d'environement pour Unison. Le problème, c'est que si je fais la commande :
Cela ne reste pas au démarrage du NAS.
J'ai également essayé d'intégrer le code présent dans le message suivant, dans mon autorun (présent dans le répertoire.qpkg) : http://forum.qnapclub.de/viewtopic.php?f=33&t=18283#p101343, mais cela ne fonctionne pas non plus.
Exemple de mise en oeuvre :
Connaissez-vous une méthode pour créer une variable d'environnement, de façon permanente ? Ou de façon à la recréer à chaque démarrage ?
Merci
Lien vers le commentaire
Partager sur d’autres sites
6 réponses à cette question
Messages recommandés
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.