benbjohnson/litestream

Extracting the executable file from the .deb release package

Closed this issue · 3 comments

Hey there. First off, let me say: I deeply love this project. I think it robustly solves a critical problem for SQLite-backed web applications. I am a Rails developer, and I have been exploring and writing a lot lately about how to get SQLite-backed Rails applications running smoothly. One detail is getting Litestream installed and setup. What I'd love to do is create a Litestream Ruby gem that packages up the executable for the various platforms that RubyGems and Litestream support (arm64-darwin, x86_64-darwin, and x86_64-linux).

A Litestream gem would allow any Ruby web app to install Litestream as simply as bundle add litestream. Then, for Rails applications, in addition to installing the executable, the gem could set up Litestream for the application automatically. That means creating a configuration file and starting the replication process. So the gem could provide an installation generator bin/rails generate litestream:install. This would create a Litestream configuration file in your application repository and add the Litestream process to your Procfile. This gem could also provide Rake tasks that wrap the CLI commands for Litestream.

I'm happy to take this work on myself, but I am trying to figure out how to get the compiled executables for the different platforms. You provide a .zip of the arm64-darwin and x86_64-darwin executables, but the x86_64-linux release asset is a .deb file that packages up the executable. How could I extract the x86_64-linux executable file from the .deb package programmatically?

You don't need to extract any files from the .deb. The executables are in the .tar.gz files, which are part of the releases assets.

Ah! That makes sense. Thanks for the heads up. Will get back to work trying to get the gem infrastructure setup properly. That is useful, thank you @mohammed90!

Made some solid progress. Think this should all be possible: https://github.com/fractaledmind/litestream-ruby https://rubygems.org/gems/litestream