J'ai un fichier de spécifications. J'ai besoin de% définir une variable de spécification qui tire sa valeur d'un fichier d'une ligne sur le système.
Par exemple
%define path `cat /home/user/path_file`
et dans path_file est une ligne
/var/www/html/hosts
Cela fonctionne partiellement. Je dis que commence dans la sortie RPM BUILD parfois la valeur de ${path}
est littéralement ma commande cat /home/user/path_file
et parfois la valeur est la ligne du chemin_fichier (/ var/www/html/hosts) comme elle devrait l'être?
Vous pouvez définir des variables rpmbuild avec %(cmd)
en haut du fichier de spécifications. Notez que la commande est entre parenthèses, pas entre crochets. Un exemple:
%define whoami %(whoami)
Et ailleurs dans le fichier de spécifications, comme un script ou les sections build/install, utilisez la variable comme d'habitude entre crochets comme ceci:
echo "The user that built this is %{whoami}"
cmd
peut être n'importe quoi, y compris votre commande cat. Soyez prudent - lorsqu'un autre utilisateur reconstruit le fichier de spécifications, il peut ne pas trouver le fichier. Il sera donc préférable d'utiliser la macro% {sourcedir} comme ceci:
%define path %(cat %{sourcedir}/path_file)
Et assurez-vous que path_file
est dans le répertoire source et inclus comme source dans le fichier spec.