Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Heroku应用程序上安装makefile_Heroku - Fatal编程技术网

在Heroku应用程序上安装makefile

在Heroku应用程序上安装makefile,heroku,Heroku,我有一个运行在Heroku上的Rails应用程序。我的应用程序调用通过Makefile安装的本地计算机上的CLI工具。我需要在我的Heroku应用程序上安装这个Makefile,这样我的所有应用程序实例都可以使用它 如何让heroku在部署时安装此makefile?我可以通过在CircleCI的配置文件中向它传递一些预部署参数来实现这一点: cd供应商/liblouis/配置;制作sudo制作安装 Heroku提供类似的服务吗? 我向他们寻求支持,但他们给我指出了一些makefiles的buil

我有一个运行在Heroku上的Rails应用程序。我的应用程序调用通过Makefile安装的本地计算机上的CLI工具。我需要在我的Heroku应用程序上安装这个Makefile,这样我的所有应用程序实例都可以使用它

如何让heroku在部署时安装此makefile?我可以通过在CircleCI的配置文件中向它传递一些预部署参数来实现这一点:

cd供应商/liblouis/配置;制作sudo制作安装

Heroku提供类似的服务吗?
我向他们寻求支持,但他们给我指出了一些makefiles的buildpack。我认为这不起作用,因为它不允许我运行。/configure

我认为这是可行的,但需要一些工作,并且很难给您提供直接的解决方案。您肯定应该使用构建包并在构建阶段编译所有内容。我找到了。我不知道这是否是一个建议,但它可以是一个很好的起点

确实,它不会运行configure,但实际上您可以使用fork并以您想要的方式修改它。您只需要在配置所有路径时保持智能。在/usr/bin或类似的东西中安装将不起作用。另外,您可能应该使用makeinstall而不是sudomakeinstall

在这个构建包中,您可以访问3个目录:build、cache和env。您需要在生成目录中安装可执行文件或库


我相信在修改这个构建包之前,您可以在一次性dyno上进行练习。只需运行heroku run bash并尝试编译您的Makefile。

所以我能够让它工作,但必须创建自己的自定义构建包。构建包比我想象的要简单得多,但我分叉了一个现有的构建包,并对其进行了编辑以适应我的案例。我将makefile存储在应用程序的供应商目录中

在buildpack中,我有以下代码:

#!/usr/bin/env bash
# bin/compile <build-dir> <cache-dir>

set -e
set -o pipefail

BUILD_DIR=$1
CACHE_DIR=$2

function indent() {
  c='s/^/       /'
  case $(uname) in
    Darwin) sed -l "$c";;
    *)      sed -u "$c";;
  esac
}

cd $BUILD_DIR/vendor/liblouis

# autoreconfig
echo "-----> Running autoreconfig"
  autoreconf -f -i  2>&1 | indent

# configure
if [ -f configure ]; then
  echo "-----> Configuring"
  ./configure --prefix=$BUILD_DIR/vendor/liblouis-exec 2>&1 | indent
fi

# make
echo "-----> Compiling with Make"
make 2>&1 | indent

# make install
echo "-----> Installing with Make"
make install 2>&1 | indent

现在,我可以调用此构建包中安装的CLI工具,它在heroku上的所有应用程序实例上都可用。

我可以在dyno heroku run bash上运行此工具,应用程序也可以运行。我用相同的命令组装了一个构建包,我可以看到在部署期间它安装正确。当我运行bash并尝试启动CLI工具时,它表示缺少共享库。我不知道如何让每个实例链接到共享库。。。
export LD_LIBRARY_PATH=$HOME/vendor/liblouis-exec/lib