Pourquoi topdir at-il la valeur par défaut lorsque rpmbuild est appelé à partir de tcl?

StackOverflow https://stackoverflow.com/questions/416983

  •  03-07-2019
  •  | 
  •  

Question

J'ai un script tcl qui 'exec' rpmbuild. En faisant cela, le 'topdir' utilisé par rpmbuild est faux. J'ai un fichier .rpmmacros dans mon répertoire personnel et si j'appelle manuellement rpmbuild, cela fonctionne bien, c'est-à-dire. le 'topdir' n'est pas celui par défaut.

J'ai ajouté un [exec rpmbuild "- showrc " ] dans le script tcl pour vérifier la valeur de topdir et indiquer "-14: _topdir% {_ usrsrc} / redhat", qui est la valeur par défaut.

Quelqu'un peut-il m'expliquer pourquoi cette situation se présente et comment la résoudre?

Je préférerais ne pas avoir à le spécifier avec --define car cela est fait dans un fichier makefile et je ne veux pas le toucher (si je n'ai pas d'autre choix, je le ferai).

Était-ce utile?

La solution

Il existe deux façons de modifier le répertoire par défaut rpmbuild topdir:

  1. Par utilisateur: en configurant le répertoire racine de RPM dans $ HOME / .rpmmacros

    %_topdir    %{getenv:HOME}/rpmbuild
    
  2. Par projet: en configurant le RPM topdir dans le Makefile ou sur la ligne de commande

    rpmbuild --define '_topdir build' -ba package.spec
    

Remarque: dans les deux cas, vous devrez vous assurer que votre répertoire topdir contient les répertoires appropriés (BUILD, SRPM, RPM, SPECS et SOURCES)

.

Autres conseils

Dans RHEL6 , procédez comme suit:

  rpm --showrc|grep topdir
  rpm --showrc|grep srcrpmdir

Pour voir quels sont les chemins utilisés!

Apporter cette modification (mon topdir n'était PAS défini sur / usr / src / ):

vi  /usr/lib/rpm/macros
#       Path to top of build area.
#%_topdir               %{getenv:HOME}/rpmbuild
%_topdir                %{_usrsrc}/redhat

rpm --showrc|grep topdir    now shows   /usr/src/redhat/ as its BUILD dir

TCL sera exécuté dans le répertoire en cours par défaut. Vous pouvez modifier le répertoire en cours à l'aide de la commande TCL http: // www. .tcl.tk / man / tcl8.4 / TclCmd / cd.htm , par exemple:

cd ~username

Si topdir est une variable d'environnement, vous pourrez peut-être la définir http://www.tcl.tk/man/tcl8.4/TclCmd/tclvars.htm#M4 comme ceci:

set env(topdir) whatever/you/want

Mon premier contrôle serait de s’assurer que vous exécutez la même chose. Effectuez ces deux opérations sur la ligne de commande pour vous assurer que les alias ou les chemins ne dérangez rien.

which rpmbuild

echo 'puts [auto_execok rpmbuild]' | tclsh

Dans mon cas, cela est dû à la variable $ HOME qui n'est pas définie lorsque rpmbuild est appelée.
La variable est utilisée pour rechercher le fichier '/ rpmmacros'. Je suggère d'utiliser la commande 'printenv' pour vérifier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top