iftheshoefritz
iftheshoefritz

Reputation: 6129

Simpler way of installing native dependencies than Heroku buildpacks?

I have a rails app with a dependency on the project-honeypot gem which in turn has the following dependencies according to my Gemfile.lock:

net-dns2 
  packetfu
    network_interface
    pcarub (~> 0.12)

When I push to my heroku app it won't install pcarub. Other sources lead me to the conclusion that I'm missing libpcap and libpcap-devel. I hope someone will correct me if I'm wrong here.

Unfortunately as far as I can see there is no way to run arbitrary apt-get commands, apart from the complexity of heroku buildpacks. Is there any simpler solution?

Heroku / pcarub install error:

Building native extensions.  This could take a while...
ERROR:  Error installing pcaprub:
        ERROR: Failed to build gem native extension.

    /app/vendor/ruby-2.0.0/bin/ruby extconf.rb

[*] Running checks for pcaprub_c code...
platform is x86_64-linux
checking for pcap_open_live() in -lpcap... no
checking for pcap_setnonblock() in -lpcap... no
creating Makefile

make "DESTDIR="
compiling pcaprub.c
pcaprub.c:8:18: fatal error: pcap.h: No such file or directory
 #include <pcap.h>
                  ^
compilation terminated.
make: *** [pcaprub.o] Error 1


Gem files will remain installed in /app/vendor/ruby-2.0.0/lib/ruby/gems/2.0.0/gems/pcaprub-0.12.0 for inspection.
Results logged to /app/vendor/ruby-2.0.0/lib/ruby/gems/2.0.0/gems/pcaprub-0.12.0/ext/pcaprub_c/gem_make.out

Upvotes: 0

Views: 444

Answers (1)

iftheshoefritz
iftheshoefritz

Reputation: 6129

Heroku buildpacks turned out to be extremely simple to use. Heroku now provides first class support for multiple buildpacks. I needed to set the ruby buildpack explicitly:

heroku buildpacks:set https://github.com/heroku/heroku-buildpack-ruby.git

Then added heroku-buildpack-apt ahead of the ruby buildpack:

heroku buildpacks:add --index 1 https://github.com/ddollar/heroku-buildpack-apt.git

Then my dependency in a new file called Aptfile in the root of my project:

libpcap-dev

The next time I deployed Heroku used the new buildpack to apt-get install libpcap before running bundle install.

Upvotes: 2

Related Questions