我有以下脚本,通过它我可以在Heroku实例上安装Firefox。无论出于何种原因,即使路径确实存在,脚本也没有正确地将firefox与正确的路径相关联。
#!/bin/sh
set -e
BUILD_DIR=$1
CACHE_DIR=$2
# config
VERSION=58.0.1
LANG=en-US
PLATFORM=linux64
# PLATFORM=linux
# Buildpack URL
ARCHIVE_NAME=firefox
FILE_NAME=${ARCHIVE_NAME}-${VERSION}.tar.bz2
BUILDPACK_FIREFOX_PACKAGE="https://download.mozilla.org/?product=firefox-latest-ssl&os=linux64&lang=en-US"
mkdir -p $CACHE_DIR
if ! [ -e $CACHE_DIR/$FILE_NAME ]; then
echo "-----> Fetching Firefox package from ${BUILDPACK_FIREFOX_PACKAGE}"
curl $BUILDPACK_FIREFOX_PACKAGE -L -o $CACHE_DIR/$FILE_NAME
fi
echo "-----> Extracting Firefox binaries to ${BUILD_DIR}/vendor/${ARCHIVE_NAME}"
mkdir -p $CACHE_DIR/$ARCHIVE_NAME
mkdir -p $BUILD_DIR/vendor
tar jxf $CACHE_DIR/$FILE_NAME -C $BUILD_DIR/vendor/
echo "-----> exporting PATH and LIBRARY_PATH"
PROFILE_PATH="$BUILD_DIR/.profile.d/firefox.sh"
mkdir -p $(dirname $PROFILE_PATH)
echo 'export PATH="$PATH:$HOME/vendor/firefox"' >> $PROFILE_PATH
echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:vendor/firefox"' >> $PROFILE_PATH
所以在按照以下方式安装Firefox后,我无法运行它。
如果我这样做
which firefox
输出是:
/app/vendor/firefox/firefox
如果我这样做
whereis firefox
输出是:
firefox: /app/vendor/firefox/firefox /app/vendor/firefox/firefox.sig
如果我./firefox
输出是:
bash: /app/vendor/firefox/firefox: No such file or directory
但该文件肯定存在,因为
~/vendor/firefox $ pwd
/app/vendor/firefox
~/vendor/firefox $ ls -l
-rwx------ 1 u5487 dyno 206820 Jan 28 20:23 firefox
我在某处读到了我需要做一个符号链接的问题,但有没有什么方法可以让它在没有它的情况下工作?在shell脚本本身或以某种方式不同?
file firefox
firefox: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.18, BuildID[sha1]=f8af6497e4ec47fd4bd584917a78f224f88baee, stripped