如何允许访问根目录以外的二进制文件

在Heroku,我可以使用像ImageMagick和其他的二进制文件,但文件系统似乎chroot'ed和Web应用程序目录(git存储库)的克隆。

如何允许访问根目录外的二进制文件?

这真的不是一个特定的Heroku问题,但我真的想知道如何做到这一点。

你不能。 按照定义, chroot()以某种方式限制了你的访问,你不能从这个上下文中访问任何东西。 如果您需要使用其他二进制文件,则需要在chroot环境中安装它们及其依赖项。

要检查某个二进制文件的依赖关系,可以使用ldd命令。 例:

 xila:~# ldd /usr/bin/wget linux-gate.so.1 => (0xb7784000) libdl.so.2 => /lib/libdl.so.2 (0xb7775000) librt.so.1 => /lib/librt.so.1 (0xb776c000) libssl.so.0.9.8 => /usr/lib/i586/libssl.so.0.9.8 (0xb7729000) libcrypto.so.0.9.8 => /usr/lib/i586/libcrypto.so.0.9.8 (0xb75ea000) libc.so.6 => /lib/libc.so.6 (0xb74ac000) /lib/ld-linux.so.2 (0xb7785000) libpthread.so.0 => /lib/libpthread.so.0 (0xb7494000) libz.so.1 => /usr/lib/libz.so.1 (0xb747e000) 

如果你想让wget在你的chroot中运行,你需要把所有这些库拷贝到你的chroot中 – 进入适当的位置。 这意味着,你需要模仿目录结构。

但是,如果其中一个库取决于另一个不在这里列出,你也必须克隆这个。 在图书馆做一个ldd – 最终你会find他们。