Bower auf Debian Servern installieren und auf Stand halten
Inhalt
Einleitung
Mit dem (Frontend) Package Manager Bower kann man sich bequem beispielsweise Bootstrap zusammen mit Font Awesome installieren und natürlich auch aktuell halten.
Bower auf Debian Servern zu installieren ist recht einfach, wenn man dazu nach der Installation auch noch schnell manuell einen Symlink setzen muss. Auch die Bower Pakete aktuell zu halten geht mit einem simplen Cronjob ziemlich einfach.
Dieser Beitrag soll in erster Linie aufzeigen, wie man Bower installiert (da ein kleiner manueller Schritt unter Debian nötig ist), in groben Zügen zeigen, wie man Bower nutzt (gute ausführliche Beiträge zur Nutzung von Bower gibt es ja schon einige), vor allem aber eine einfache Möglichkeit aufzeigen, wie Ihr Euch ganz einfach automatisch bei Bower Paketupdates benachrichtigen lassen könnt. Und so gehts:
Schritt 1: Bower installieren
Bower wird über npm (node package manager) installiert, das wiederum Node.js benötigt. Wir installieren also erst “nodejs”, das “npm” beinhaltet und dann den eigentlichen Paketemanager “Bower”
Sofern Ihr keine Installation von „sid“ (unstable) oder „backports“ Paketen zulassen solltet, müsst Ihr zunächst NodeSource als weitere Paket-Quelle zu apt
hinzufügen und könnt danach die Installation inkl. Updates wie bisher auch über apt
einspielen.
Zwar könnt Ihr das nodejs
auch über die offiziellen Debian Repos beziehen, jedoch derzeit nur in der Version 0.10 und nicht in der Version 0.12.
Eine genaue Dokumentation ist auf der Node.js Blog Seite (englisch) zu finden. Hier einmal die Befehle in Schnellform:
# become root su ## add nodesource to apt sources list echo 'deb https://deb.nodesource.com/node_0.12 jessie main' >> /etc/apt/sources.list.d/nodesource.list echo 'deb-src https://deb.nodesource.com/node_0.12 jessie main' >> /etc/apt/sources.list.d/nodesource.list ## make sure apt accepts https transport apt-get install apt-transport-https ## add nodesource key for apt curl https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - ## get package list from sources incl. new set source nodesource apt-get update ## install nodejs apt-get install nodejs ## install bower npm install -g bower
Das wars schon. Bower ist nun systemweit installiert und Ihr könnt loslegen.
Update (26.04.2015): Dieser Schritt wurde überarbeitet, um auch die aktuelle Node.js Version 0.12 installieren zu können.
Update (22.10.2015): Sollte es beim apt-get update
zur Fehlermeldung „Der Treiber für Methode /usr/lib/apt/methods/https konnte nicht gefunden werden.“ kommen, fehlt noch das Paket apt-transport-https
, dann wurde der Schritt in Zeile 9 vergessen.
Update (20.06.2016): Paketquellen von wheezy
auf jessie
aktualisiert (Stand jetzt geht es noch mit wohl wheezy
und jessie
).
Schritt 2: Bower nutzen / Pakete installieren
Einen sehr schönen Beitrag zur Nutzung von Bower gibt es bei Treehouse Blog (englisch). Eine Auflistung der einzelnen Befehle gibt es auf der Bower API Seite (englisch). Auch einen Blick wert ist die Seite für die Bower Konfiguration (englisch).
Grob zusammengefasst geht man so vor:
- Ins Projekthauptverzeichnis wechseln
- Mit
bower init
Bower einmalig für das Projekt initialisieren - Mit
bower search <query>
Pakete suchen - Mit
bower install package[#version] [--save]
Pakete installieren - Mit
bower list
die installierten Pakete einsehen (hier sieht man auch, ob es Updates gibt!) - Mit
bower update
die installieren Pakete aktualisieren
In dem konkreten Beispiel (Bootstrap & Font-Awesome installieren und nutzen) sieht das dann so aus:
cd /path/to/project ## init bower (creates bower.json which can be changed at any time later) bower init ## search for package (will give a lot of results incl. "bootstrap" itself) bower search bootstrap ## install bootstrap (--save option will also add an entry in bower.json) bower install bootstrap --save ## install font-awesome bower install fontawesome --save
Viel mehr muss man auch schon nicht machen. In der Regel beschränkt sich das Ganze (bei mir) auf die wenigen genannten Befehle oben.
Ich habe vorher eine noch .bowerrc
Datei im Projekthauptverzeichnis gemäß Bower Konfiguration angelegt und über directory
das Verzeichnis für alle Bower Pakete angegeben, aber das ist natürlich Geschmackssache.
Da ich meine Projekte in der Regel mit Git verwalte, habe ich das Verzeichnis mit den Bowerpaketen über die .gitignore
ausgeschlossen – auch Geschmackssache. Wenn ich das Projekt via Git neu auschecke, dann kann ich mir die Bower Pakete über bower install
jederzeit neu laden. Für den unwahrscheinlichen Fall, dass es die Bower Pakete nicht mehr gibt, habe ich ja noch ein Backup ;)
Schritt 3: Bower Pakete aktuell halten
Nun sind die Pakete zwar installiert, jedoch müsste man regelmäßig manuell mittels bower list
prüfen, ob es für die einzelnen installierten Pakete Updates gibt.
Einfacher geht es mit diesem kleinen Einzeiler, den man einfach als täglichen oder wöchentlichen Cronjob einrichten kann (in diesem Beispiel wird der Job immer sonntags um 8:55 Uhr ausgeführt):
55 08 * * 00 <user> cd </path/to/project> && [ -f bower.json ] && /usr/local/bin/bower list | grep -E '\(.*avail|latest' | sed 's!^[^ ]* !!'
Nun gibt es einmal pro Woche automatisch eine schlichte Email mit den Paketen zu denen es ein Update gibt. Wenn es keine neuen Updates gibt, dann wird auch keine Email verschickt.
Wichtig: Bitte darauf achten <user>
gegen den aktuellen User des Projekts auszutauschen genau wie </path/to/project>
.
Alternativ kann man natürlich ebenfalls mit einem Cronjob die Updates automatisch einspielen (hierzu einfach im genannten Cronjob das bower list | grep -E '\(.*avail|latest' | sed 's!^[^ ]* !!'
durch bower update
ersetzen), jedoch bin ich kein Freund von Autoupdates an dieser Stelle. Aus meiner Sicht sollten solche Pakete erstmal in einer Testumgebung installiert, getestet und dann live gestellt werden.
Update (26.04.2015): Um Bower selbst zu aktualisieren, geht man ziemlich genauso vor wie auch bei Composer und Bower Paketen:
# become root su ## update bower npm update -g bower ## or update all global installed npm packages npm update -g ## list global installed packages npm list -g --depth=0
Schritt 4: Bower Paketversionen verstehen
In der bower.json
steht im Bereich dependencies
in der Regel die Versionen pro installiertem Paket gemäß Semver (Semantic Versioning) in Form von bspw. ~4.2.0
mit einer Tilde (~) davor.
Das bedeutet jedoch, dass ein bower update
nur Patches einspielt (nur bis max Version 4.2.x
), jedoch keine Minor oder gar Major Updates. Dieses erkennt man beim Aufruf von bower list
an dem Wort latest
, das heißt: es gibt neuere Versionen, die gemäß dependencies
aber nicht mehr installiert (aktualisiert) werden dürfen.
Man kann die Versionierung aber einfach ändern: entweder von bspw. ~4.2.0
auf ~4.2,
~4
oder sogar >=4.2.0
(Details unter https://github.com/npm/node-semver)