我在屏幕上使用tts gem语音,并且在本地开发站上工作正常,但在heroku的服务器上输了500。 tts gem取决于mpg123。
heroku日志在运行时发回以下错误:
2014-06-23T09:37:47.024478+00:00 app[web.1]: mpg123 executable NOT found. This function only work with POSIX systems.
2014-06-23T09:37:47.024485+00:00 app[web.1]: Install mpg123 with `brew install mpg123` or `apt-get install mpg123`
2014-06-23T09:37:47.025829+00:00 app[web.1]: Completed 500 Internal Server Error in 196ms
首次尝试: heroku运行brew install mpg123
Running `brew install mpg123` attached to terminal... up, run.1741
bash: brew: command not found
第二次尝试: heroku运行apt-get install mpg123
Running `apt-get install mpg123` attached to terminal... up, run.5879
W: Not using locking for read only lock file /var/lib/dpkg/lock
E: Unable to write to /var/cache/apt/
E: The package lists or status file could not be parsed or opened.
经过进一步研究,我现在明白'custom buildpack'需要实施吗?如果是这样,如何确定使用哪个buildpack以及如何使用它安装mpg123?除非有更简单或更恰当的方式,否则我当然也愿意接受。
从this post收集一些线索,我在黑暗中通过添加以下版本进行了一些尝试,然后重新运行上述尝试,但无济于事:
heroku plugins:install https://github.com/heroku/heroku-buildpacks
Installing heroku-buildpacks... done
heroku config:add BUILDPACK_URL=https://github.com/benjie/heroku-buildpack-apt
heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-ruby
heroku config:add BUILDPACK_URL=https://github.com/atris/heroku-buildpack-C
对于它的价值,这是一个在heroku的雪松堆下运行的rails 4项目。
谢谢!
答案 0 :(得分:0)
Heroku的工作方式,所有系统依赖,如mpg123必须通过buildpacks安装。这是因为Heroku在部署后不允许应用程序写入文件系统(这就是你的brew和apt命令不起作用的原因)。
所以如果你想这样做,你可能需要create a custom buildpack来获得mpg123,因为似乎没有其他人已经建立了一个。
有关自定义buildpack的示例,请查看LAME: https://github.com/lepinsk/heroku-buildpack-lame
然后,您将要使用multi-buildpack buildpack,它将允许您安装mpg123 buildpack和app buildpack(例如,Ruby)。
答案 1 :(得分:0)
晚了 7 年,但...
我遇到了同样的问题,并与技术支持 @ Heroku 进行了讨论。如错误所示,mpg123 可通过 apt-based package 获得。因此,您可以这样做:
heroku login
heroku buildpacks:add --index 1 heroku-community/apt
# myapp/Aptfile
mpg123
git push heroku main
。在不到 5 分钟的时间内完成了非常简单的方法。无需创建自定义构建包或切换到 Amazon Web Services。