Foreign packages in GNU Guix
Examples from Ruby gems, Python modules and R/CRAN
- Track: GNU Guile devroom
- Room: K.3.201
- Day: Saturday
- Start: 13:00
- End: 13:20
GNU Guix allows creating higher level abstractions. This means you can have a short and elegant way to describe any source package. We added support for Ruby gems and Python modules to GNU Guix. We think the process of adding them is interesting for others who would like to support their language and or software stack.
The GNU software packaging project is packaging done right. Ruby deployment with rubygems used to be pretty good, years ago, but over time it has turned into a nightmare of dependencies. Tools like RVM, rbenv and bundler try to bring some level of control for running multiple versions of Ruby and gems, but over the last years they are showing their limitations clearly.
So when should you look at GNU Guix? You should look at Guix when you
are serious about software deployment
need to handle multiple versions of Ruby or gems
want clear isolation of dependencies
want clean separation of gems
want a reproducible environment
GNU Guix allows you to define a software package once with all its dependencies. Every time you install the package it gets reproduced exactly with its exact dependency graph, all the way down to glibc. See this figure. Whether you are a sysadmin who needs to deploy an exact Rails stack or you are a developer and need to support user environment, GNU Guix is the solution you require. Use cases are
test gems using multiple versions of Ruby
install concurrent rubies with or without linked openssl support
run minimal ruby to be exposed to the web
update ruby in production and roll-back after a problem
run multiple versions of the same gem against one ruby
run multiple versions of openssl dependencies
Use your imagination. The point is that you control the full dependency graph. Always. You can even give users rights to install and share software because the underlying system is ‘immutable’. Existing graphs can not be overwritten by others.
GNU Guix is a next generation software package installer with a range of features, including sane dependency handling, transactional and reproducible installs which can be rolled back. In short, GNU Guix has resolved the fundamental problems of software deployment and management. GNU Guix also should play well with Docker and VMs.
Speakers
Pjotr Prins | |
David Thompson |