Ask HN: What tool to use for building a Linux app installer?

5 points by tinktank ↗ HN
My company has a piece of software they want to demo to potential buyers by getting them to install the software on their machines. The software we produce binary rewrites other applications (e.g. Apache webserver and Apache Kafka) so it involves pulling something off the web, reading the configuration of the machine it's being installed on, getting some user input, creating some config files and copying some files. We will go across mostly Ubuntu and CentOS/Redhat machines.

I know the traditional ways of doing this are shell script or shar files. Is there something more common and easier to use that is commonly used today (e.g. SNAP packages)? I'm looking for ease of use on our end, extensibility and flexibility and the ability to extend to multiple applications over time. For various technical reasons, containers are a non-starter for us.

3 comments

[ 3.2 ms ] story [ 14.3 ms ] thread
Snaps with a reasonable rationale for it can be unconfined (they require the user to acknowledge that with —classic on install). Think a config management system, which needs to be able to read and write all over a traditional file system. That would work for you, and be cross platform, but the snapcraft community would need to be convinced that it’s not a Trojan horse vector.
Basically this is what configuration management does. So, why not use Ansible, esp. ansible pull ( https://docs.ansible.com/ansible/latest/cli/ansible-pull.htm... ). You'd prepare an ansible playbook, and your users would pull that via git. Should tick most of your boxes.

Incidentally, I'm currently working on a project/product to make that sort of thing easier, esp. in terms of flexibility and easy of use (for both end users and developers). It's not finished yet, but use-able. I haven't figured out how I do licensing yet, but I'd need some beta testers with real problems soon...

Anyway, have a look at Ansible pull first, maybe it does what you need it to do. Ping me if you need some pointers. I also have a few scripts lying around that make bootstrapping that type of things easier.