Linux Pakete mit fpm bauen
Table of Contents
Software installieren⌗
Unter den meisten Linux Distributionen wird Software zumeist via Paketmanager
installiert.
Gerade in der Software-Entwicklung kommt es aber immer wieder dazu, dass
man selbstkompilierte oder selbstentwickelte Software installieren muss.
Der übliche “Installationsmechanismus” via
./configure && make && make install
führt jedoch dazu, dass die Software unversioniert installiert wird und eine
Deinstallation nur in mühseliger Handarbeit möglich ist.
Auch die Installation auf mehreren Rechner erfordert immer wieder den selben
Aufwand und eine Updatemöglichkeit gibt es ebenfalls nicht.
Pakete⌗
Die optimale Lösung für unser Problem ist natürlich die Erstellung eines
eigenen Pakets:
Das Paket wird ein einziges Mal gebaut, kann jederzeit deinstalliert werden
und die Version des Pakets ist ebenfalls protokolliert, so dass später Updates
möglich sind.
Das Problem daran ist, dass das Entwickeln von Paketen recht Aufwändig ist.
Eine Abhilfe schafft hierbei das
Werkzeug fpm.
Installation⌗
Zunächst stellen wir sicher, dass auf unserem Rechner das Paket ruby-dev
installiert ist:
Bei auf Debian basierenden Systemen (z.B. Ubuntu):
sudo apt-get install install ruby-dev
Bei auf RedHat basierenden Systemen (z.B. CentOS):
sudo yum install fpm
Nun können wir mit dem Ruby Paketinstaller gem
das Programm installieren:
gem install fpm
Nun sollte das Programm fpm
auf der Kommandozeile zur Verfügung stehen.
Paket bauen⌗
Wir haben nun unsere Software wie zuvor und bauen diese - jedoch mit einem
Präfix, z.B.:
mkdir /tmp/place_to_install
./configure && make && make install DESTDIR=/tmp/place_to_install
Wenn wir nun an den Ort /tmp/place_to_install
schauen, sehen wir dort die
installierten Daten. Diese sollen nun in unser Paket kommen.
Diese bauen wir mit:
fpm -s dir -t rpm -n myprogram -v 0.1.2 -C /tmp/place_to_install bin lib
Hierbei stehen die Parameter für:
-s dir
: Das Paket wird aus einem Verzeichnis gebaut (andere Möglichkeiten u.a. Python Module, rpm Dateien usw.)-t rpm
: Es soll ein rpm-Paket gebaut werden. Auch deb-Pakete sind möglich-n myprogram
: Der Name des Pakets-v 0.1.2
: Die Version des Pakets-C /tmp/place_to_install
: Das Verzeichnis, in dem sich die Dateien befindenbin lib
: Die Dateien/Verzeichnisse in dem Verzeichnis, welche auch wirklich im Zielsystem installiert werden sollen
Nach kurzer Wartezeit purzelt aus dem Werkzeugs ein installierbares Paket heraus.
Fazit⌗
Mit fpm lassen sich bequem, schnell und einfach Pakete bauen.
Natürlich berücksichtigt das hier erstellte Paket keinerlei Abhängigkeiten und
es werden auch nicht alle Möglichkeiten und Funktionen des Paketmanagements genutzt, aber
in der Praxis erleichtert dies die Installation von Software - gerade in Teams
ungemein.
Jetzt nur noch ein Repository-Server aufgesetzt - und schon hat man im Team
eine komfortablen Weg Software bereit zu stellen.