Arbitrary files in fpm-built packages
2016 August 14
This approach was originally shared in the FPM Mailing list.
The example below creates a symlink file inside my ffi-rmzq-core debian package:
mq = FPM::Package::Gem.new
mq.input 'ffi-rzmq-core'
FileUtils.mkdir_p mq.staging_path 'var/lib/gems/2.1.0/gems/ffi-rzmq-core-1.0.5/ext'
mq.dependencies << "libzmq3"
# The actual shared object in the libzmq3 Debian package
FileUtils.ln_s '/usr/lib/x86_64-linux-gnu/libzmq.so.3.1.0', mq.staging_path('var/lib/gems/2.1.0/gems/ffi-rzmq-core-1.0.5/ext/libzmq.so')
mq.convert(FPM::Package::Deb).output './foo.deb'
The key to this approach is messing around with the FPM::Package#staging_path
and insert the files you need there. In theory, you can merge two input package types in fpm by making them share the #staging_path
. I will write a post about it once I used this approach in an actual project.