SD Karte beschreiben mit „flash“

Um einen Raspberry Pi in Betrieb zu nehmen, ist es notwendig eine SD Karte mit einem Betriebssystem zu beschreiben.
Dabei ist es in der Regel nicht mit einem einfachen Datei kopieren getan.

Unter Windows bietet sich Win32 Disk Imager an,
unter macOS das Tool ApplePi Baker und unter Linux nutzt man einfach dd.

SD Speicherkarte

Nun wünscht man sich bei häufiger Nutzung ein einfaches Kommandozeilentool, dass diese Aufgabe komfortabel übernimmt.

Genau das erledigt das Tool flash.
Das in bash geschrieben Werkzeug ist schnell installiert:

curl -O https://raw.githubusercontent.com/hypriot/flash/master/$(uname -s)/flash
chmod +x flash
sudo mv flash /usr/local/bin/flash

Wie in der Installationsanleitung auf Github zu sehen, sind noch optionale Abhängigkeiten auf einige Tools zu installieren (u.a. curl, pv, unzip).
Nach erfolgreicher Installation durch den Paketmanager des Vertrauens, können Raspberry Images geschrieben werden:

flash jessie-light.zip

Dabei übernimmt flash das entpacken (bzw. Download) der Datei und fordert den Benutzer anschließend auf, die SD Karte einzulegen. Nach Identifizieren des Speichermediums braucht man lediglich selbiges zu bestätigen und der Schreibeprozess beginnt.

Zum Abschluss des Ganzen werden auch alle Dateisystem ausgehängt und die Speicherkarte kann in den Raspberry Pi wandern.

Für mich ist flash das Werkzeug zum Schreiben von SD Karten geworden.
Minimalistisch, komfortabel und einfach zu handhaben erleichtert mit das kleine Helferlein den Alltag.

Systemdateien editieren mit sudoedit

Praktisch jeder Entwickler und jeder Administrator hat seine eigene Editor-Konfiguration.
Ob Farbschema, Plugins, eigene Kürzel oder Optionen - kaum ein Werkzeug wird
so intensiv den eigenen Vorstellungen, Wünschen und Vorlieben angepasst wie ein
Editor.

Muss jedoch eine Datei editiert werden, die nicht dem Benutzer "gehört" (z.B.
Konfigurationsdateien eines Webservers), funktioniert der "eigene" Editor nicht
mehr.

Read more "Systemdateien editieren mit sudoedit"

Kommandozeile mit FZF

Wer viel auf der Kommandozeile/Shell arbeitet, lernt im Lauf der Zeit einige nützliche Tools und Tastaturkürzel kennen.
So stöbert man in bash bzw. zshmit Ctrl+R in der Eingabe-History, sucht mit find Dateien in einem gegeben Pfad - und so weiter und so fort.

Ein nützliches Helferlein, welches die beiden Aktionen (und mehr) beschleunigt
ist fzf:

Read more "Kommandozeile mit FZF"

Editor für Hugo

Hugo ist eine schöne Software um Software um statische Webseiten und Blogs zu
erstellen.

Die in Go geschriebene Software ermöglicht das einfache
Nutzen von Templates für neue Beiträge. Ein neuer Beitrag wird auch leichter
Hand angelegt, z.B. hugo new post/hugo_editor.md.

Die Datei enthält danach alle Einträge des Templates - teilweise auch schon
ausgefüllt.

Eine interessante Konfigurationseinstellung in der config.toml (bzw.
config.yaml, config.json) ist der Eintrag newContentEditor:
Gesetzt auf den Editor öffnet sich dieser dem Anlegen der Datei die Schreiberei
kann beginnen.

newContentEditor = "vim"

Wget wiederaufnehmen

Beim Download großer Dateien (z.B. Iso-Images, Podcasts) ist es oft hilfreich einen bereits begonnenen Download weiterführen zu können.

Mit dem Download-Werkzeug wget ist dies einfach mit der Kommandozeilenoption -r möglich.

Damit man jedoch nicht immer daran denken muss, lässt sie dies auch als Standardverhalten einstellen.

Hierzu tragen wir die die Datei ~/.wgetrc folgendes ein:

continue = on

Ab sofort nimmt wget Downloads automatisch wieder auf.

Sharpkeys

Um Tasten wie Shift-Lock ("Feststelltaste") sinnvoller zu nutzen kann auch unter Windows die Belegung dieser Taste geändert werden.
Da Windows leider (noch) kein Werkzeug hierzu mitbringt, kann man sich einfach mit dem Freeware-Werkzeug "SharpKeys" behelfen.

Einfach installieren, Taste auswählen, neue Belegung auswählen und nach an- und abmelden ist die Taste neu belegt.

Tipp: Die Feststelltaste einfach mit Strg (Ctrl) belegen.

Linux Pakete mit fpm bauen

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 befinden
  • bin 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.

Myrepos: Alle meine Repositories

Repository-Zentrale

Dank VCSH habe ich all meine Dotfiles hübsch in Git-Repositories verpackt.
Das Einbinden eines einzelnen Repositories geht nun zwar schnell von der Hand,
aber wenn nun für vim und mutt und emacs und und und ... lauter
Repositories vorliegen wird es unbequem.
Auch das updaten (pull) jedes einzelnen Repos ist sehr mühselig und damit
fehleranfällig.

Abhilfe schafft hier myrepos (kurz mr),
dass es erlaubt Aktionen auf mehreren Repositories auszuführen.

Read more "Myrepos: Alle meine Repositories"