tr & rpmbuild - utilisation de global variable d'environnement dans l' %section fichiers
J'ai eu du mal pendant un moment avec celui-ci.
J'ai donc écrit un .spécifications de fichier de mon projet et tout s'est bien passé. Le rpm est intégré, l'installation est lisse... mais j'ai eu quelques difficultés, parce que maintenant, je dois utiliser un mondial de la variable d'environnement pour définir le chemin d'installation.
Ce serait donner un %section fichiers en tant que tel :
%files
%defattr(-,root,root)
$INSTALLPATH/Crystal/bin/Crystal.jar
Où le Cristal est mon nom de projet, et INSTALLPATH est défini dans les env grâce à l'exportation de ligne de commande. Ensuite, lors de l'exécution de
buildrpm -ba de Cristal.spécifications
J'ai l'erreur suivante:
error: File must begin with "/" : $INSTALLPATH/Crystal/bin/Crystal.jar
J'ai essayé de définir une macro à l'intérieur de l' .rpmmacros fichier en tant que tel :
%_installpath $INSTALLPATH
Et dans mes specs fichier, quand je fais
echo %{_installpath}
J'obtiens la valeur que j'ai mis dans le .rpmmacros. Mais si je l'utilise en %fichiers:
%files
%defattr(-,root,root)
%{_installpath}/Crystal/bin/Crystal.jar
Je reçois la même erreur encore une fois!
error: File must begin with "/" : $INSTALLPATH/Crystal/bin/Crystal.jar
J'ai aussi essayé de définir une variable avec les spécifications de fichier et j'ai le même triste résultat. Il ressemble aussi longtemps que ma variable/macro est de référencement de dollars à INSTALLER, puis %des fichiers ne sera pas l'accepter. Mais je dois utiliser cette variable env!
C'est tout ce que je pouvais penser. Quelqu'un a une idée? Toute aide serait grandement appréciée.
Merci beaucoup d'avance!
OriginalL'auteur Rinita | 2014-09-17
Vous devez vous connecter pour publier un commentaire.
La
%files
section ne développez pas les variables shell. Vous ne pouvez pas le faire de cette façon.Vous avez quelques options que je peux voir désinvolte. Vous pouvez
générer un fichier avec une liste de vos fichiers (en cours de
%install
ou avez-vous), puis utiliser%files -f files.lst
développez
$INSTALLPATH
à tr /mn macro définition du temps avec:Reisner: Vous pouvez utiliser des variables shell dans
%files
section de la même manière que n'importe où ailleurs dans la spec, c'est peut-être assez moche et illisible. E. g. à l'aide de%(echo $INSTALLPATH/Crystal/bin/Crystal.jar)
doit réaliser ce que l'OP voulait.Ce n'est pas le
%files
l'article de l'expansion des variables shell (et je ne crois pas que le%files
article n'a que). C'estrpm
faire de l'expansion au moment de l'analyse manuellement parce que vous avez utilisé la%(...)
macro. Mais oui, ce serait (peut-être) ont travaillé... en supposant%(...)
les extensions sont réalisées dans le droit macro portée.Fonctionne bien dans
%files
section, nous l'utilisons pour certains particulièrement laid paquets de balise de certains fichiers dynamiquement avec%lang($lang)
et créer la partie de la%files
section à la volée. Mais la solution que vous proposez avec la liste des fichiers est probablement beaucoup plus propre pour l'OP 🙂Qu'est-ce qui fonctionne dans le
%files
section? Une entrée comme/usr/lib/$shellvar
? Votre créées dynamiquement liste contient des fichiers%lang($lang) /path/to/file
- t-il? Ou contient-il%lang(en) /path/to/file
?OriginalL'auteur Etan Reisner