¿Por qué se establece topdir en su valor predeterminado cuando rpmbuild se llama desde tcl?
Tengo un script tcl que 'exec' rpmbuild. Al hacerlo, el' topdir ' utilizado por rpmbuild es incorrecto. Tengo una .archivo rpmmacros en mi directorio personal y si llamo manualmente rpmbuild, funciona bien, es decir. el 'topdir' no es el predeterminado.
He añadido un [exec rpmbuild "--showrc" ] en el script tcl para comprobar el valor de topdir y dice '-14: _topdir %{_usrsrc}/redhat", que es el valor predeterminado.
¿Puede alguien explicarme por qué es esa situación y cómo resolverlo ?
Preferiría no tener que especificarlo con define define porque en realidad se hace en un makefile y no quiero tocarlo (si no hay otra opción, lo haré).
5 answers
Hay dos formas de cambiar el topdir predeterminado de rpmbuild:
-
Por usuario: Configurando el topdir RPM en HOME HOME/.rpmmacros
%_topdir %{getenv:HOME}/rpmbuild
-
Por proyecto: Configurando el topdir RPM en el Makefile o en la línea de comandos
rpmbuild --define '_topdir build' -ba package.spec
Nota: en ambos casos, deberá asegurarse de que su directorio topdir tenga los directorios apropiados (BUILD, SRPM, RPM, SPECS y SOURCES)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-14 10:08:20
In RHEL6 do:
rpm --showrc|grep topdir
rpm --showrc|grep srcrpmdir
Para ver cuáles son los caminos que se utilizan !
Hacer este cambio (mi topdir NO estaba establecido en /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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-03 04:41:31
TCL se ejecutará en el directorio actual por defecto. Puede cambiar el directorio actual utilizando el comando TCL http://www.tcl.tk/man/tcl8.4/TclCmd/cd.htm cd, por ejemplo:
cd ~username
Si topdir es una variable de entorno, es posible que pueda configurarla http://www.tcl.tk/man/tcl8.4/TclCmd/tclvars.htm#M4 así:
set env(topdir) whatever/you/want
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-06 18:09:44
Mi primera comprobación sería para asegurarse de que ejecuta la misma cosa. Haga estos dos en la línea de comandos para asegurarse de que los alias o las rutas no molestes nada.
which rpmbuild
echo 'puts [auto_execok rpmbuild]' | tclsh
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-16 21:02:15
En mi caso, esto se debe a la variable HOME HOME que no se establece cuando se llama a rpmbuild.
La variable se utiliza para buscar en el archivo '/rpmmacros'. Sugiero usar el comando 'printenv' para verificar.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-13 07:01:44