2016-06-28 17 views
0

Я использую mktemp для создания временного файла в Makefile и используя этот MakeFile в среде сборки RHEL5 U3.mktemp: invalid option - - on RHEL5 U3

setuptmp1=`mktemp setup.tmp.1.XXXXXXXX --tmpdir=/tmp` ; \ 

setuptmp2=`mktemp setup.tmp.2.XXXXXXXX --tmpdir=/tmp` ; \ 

Наблюдается следующее сообщение в журнале построения.

Mktemp: неверный вариант - -

Использование: Mktemp -V | -dqtu -p prefix template

Что это значит? Что-то не так в использовании mktemp?

+0

Вы пробовали метод '$()'? Это безопаснее и может справиться с этим лучше. 'setuptmp1 =" $ (mktemp setup.tmp.1.XXXXXX --tmpdir =/tmp) "' – SnakeDoc

+2

'mktemp' в rhel5 [отличается] (https://bugzilla.redhat.com/show_bug.cgi?id= 1155729), то в rhel6. Проверьте правильность использования справочной страницы. – mata

ответ

0

Согласно check-kernel-headers: mktemp --tmpdir not available on RedHat RHEL5,

mktemp --tmpdir не доступна на старых машинах Redhat RHEL5. Альтернатива , которая имеет такое же поведение, является 'mktemp -t'.

Существует родственная ошибка-отчет (без обратной совместимости либо): RHEL6 mktemp использует -t сослаться на то, что поддерживается RHEL5 с -r: Bug 1155729RHEL5 and RHEL6: mktemp -t XXXXXX.pdf: functionality differs

0

Утилита mktemp имеет различные наборы флагов на разном систем, в зависимости от версии, которая поставляется с этой системой. mktemp на OS X также отсутствует опция --tmpdir.

Однако все версии mktemp, что я могу видеть на моих системах чтит переменную TMPDIR среды при использовании -t (см the mktemp manual). Поэтому для вас должно быть выполнено следующее:

export TMPDIR="/tmp" 
setuptmp1=$(mktemp -t setup.tmp.1.XXXXXXXX) 
setuptmp2=$(mktemp -t setup.tmp.2.XXXXXXXX)