如何将TMPDIR环境变量设置为另一个目录?

10

我正在尝试编译ffmpeg,但是由于/tmp目录被挂载为noexec,因此出现了问题:

./configure --enable-libmp3lame --enable-libvorbis --disable-mmx --enable-shared 无法在/tmp中创建和执行文件。请将TMPDIR环境变量设置为其他目录,并确保它未被挂载为noexec。测试失败。

如果您认为configure出现错误,请确保您正在使用来自SVN的最新版本。如果最新版本仍然失败,请将问题报告给ffmpeg-user@mplayerhq.hu邮件列表或IRC #ffmpeg on irc.freenode.net。包括由configure产生的日志文件“config.err”,这将有助于解决问题。

如何将TMPDIR环境变量设置为其他目录?


我的情况: PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib -ldl" --bindir="$HOME/bin" --pkg-config-flags="--static" --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 无法在/tmp中创建和执行文件。将TMPDIR环境变量设置为另一个目录,并确保它未挂载noexec。 Sanity test failed. - Ebrahim
2个回答

25

我能使用以下代码完成它:

$ export TMPDIR=~/tmp-ffmpeg

$ mkdir $TMPDIR

$ ./configure \
  --enable-gpl \
  --enable-version3 \
  --enable-shared \
  --enable-nonfree \
  --enable-postproc \
  --enable-libfaac \
  --enable-libmp3lame \
  --enable-libopencore-amrnb \
  --enable-libopencore-amrwb \
  --enable-libtheora \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libxvid \
  --enable-x11grab \
  --extra-cflags="-I/usr/local/include" \
  --extra-ldflags="-L/usr/local/lib"

$ make
$ make install
$ rm -rf $TMPDIR
$ unset TMPDIR

还有mktemp(1)命令。因此,您可以按以下方式设置TMPDIR:

$ TMPDIR="$(mktemp -d -q ~/tmp/tmp.XXXXX)"
$ echo $TMPDIR
/home/marcelo/tmp/tmp.I8V9H

这应该适用于GNU coreutils以及BSD(如macOS,FreeBSD等)。另请注意,您不需要导出TMPDIR,然后取消设置它。相反,尝试直接将变量传递给configure:

$ TMPDIR="/foo/bar/baz" ./configure ...
希望对其他人有所帮助 ;-)

Hope it helps somebody else ;-)


6
尝试使用unset TMPDIR代替export TMPDIR=。空字符串不是TMPDIR的好默认值。 - ceving

5

试试这个:

TMPDIR=/some/other/dir ./configure --enable-libmp3lame --enable-libvorbis --disable-mmx --enable-shared

如果您想使用新的TMPDIR执行多个命令,并且假设您正在使用bash作为shell,首先需要export它。
export TMPDIR=/some/other/dir
./configure --enable-libmp3lame --enable-libvorbis --disable-mmx --enable-shared
...

1
export 是 POSIX 标准而非仅限于 bash。您的示例应适用于任何符合 POSIX 标准的 shell。 - jordanm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接