debbie
debbie copied to clipboard
.DEB Built In Erlang
debbie
.DEB Built In Erlang.
Overview
debbie
is an Erlang module that creates DEBIAN binary or sources packages from an usual DEBIAN package directory structure on disk.
debbie
use edgar for Gnu AR format, and swab for fakeroot or Uid/Gid setting.
debbie
is FULL Erlang, and no external command is done, allowing to create DEBIAN packages on any platform where Erlang can run.
An Erlang equivalent to dpkg-deb -Zgzip --build dir/
No need of a DEBIAN machine or VM, but obviously, only cross-compiled or multi-platform applications must be used if your local platform is incompatible with your target platform... debbie
is not magic !
No need to have root privilege, neither fakeroot
command, UID/GID are modified in embedded TAR files.
Specific global non-root UID/GID and user/group names can also be set to data packed in data.tar.gz, otherwise default is set to 0/root.
TIP : For easier integration in scripts, please see also debut , which will also rename the package to valid DEBIAN package name for you ...
Example
Considere this below trivial DEBIAN binary package structure for 'myapp' application :
tree /path/to/my/debian/structure/
├── DEBIAN
│ └── control
├── etc
│ └── myapp.conf
└── usr
└── bin
└── myapp
(note : a valid DEBIAN package should have more files, like copyright, Man pages, etc... See Debian policy).
Creating a .deb package, in a erl shell, is simple as :
debbie:fy([{root_path, "/path/to/my/debian/structure/"}]).
The file debian.deb
is created in /path/to/my/debian/structure/
directory.
Demo
A Debian structure is ready in priv/
directory, with a simple helloworld
application.
Simply run in your Erlang Shell :
debbie:fy([{root_path, "priv/"}]).
Then, under root, you can test the debian package by installing it :
#> dpkg -i priv/debian.deb
#> helloworld
Hello world !
Then, removing this dummy package :
dpkg -r helloworld
Limitation
Only few controls are done : presence of control
file and something to pack, i.e. at least another directory than DEBIAN/debian under root path.
No attempt is done to check if control files are valid.
It's up to you, or another module/application, to create a valid DEBIAN package structure.
Documentation
A complete documentation is available.
Simply run make docs
and open doc/index.html
in your favorite browser, this will insure you having the documentation related to your version.
Quick Start
git clone git://github.com/crownedgrouse/debbie.git
cd debbie
make
erl -pa `pwd`/ebin -pa `pwd`/deps/edgar/ebin -pa `pwd`/deps/swab/ebin
Contributing
Contributions are welcome. Please use pull-requests.