seeseekey.net - Invictus Deus Ex Machina

Vor kurzem stand ich vor dem Problem, das ich eine Menge Git-Repositories auf der Festplatte hatte und diese um den .git Ordner bereinigen wollte. Unter Linux und Mac OS X kann man sich für diese Aufgabe mit der Kommandozeile behelfen. Dazu wechselt man in den entsprechenden Ordner und gibt im Terminal folgendes ein:

find . | grep .git | xargs rm -rf

Damit werden sämtliche .git Ordner rekursiv gesucht und gelöscht. Was übrig bleibt sind die aktuellen Arbeitskopien der jeweiligen Git-Repositores.

Möchte man die installierte Standard-Firewall unter Cent OS 7 deaktivieren, so muss man sich am Dienst firewalld zu schaffen machen. Dieser kann dabei mit dem Kommando:

systemctl stop firewalld

gestoppt werden. Anschließend kann der Dienst mittels:

systemctl disable firewalld

dauerhaft deaktiviert werden. Mit dem Kommando:

firewall-cmd --state

kann nun überprüft werden ob der Dienst wirklich deaktiviert wurde. Wenn dies der Fall zeigt das Kommando die Ausschrift not running an.

Wenn man ein CentOS 7 in der Minimal-Installation installiert (und dabei nicht aufpasst), wird man nach der Installation feststellen das man über keine Konnektivität verfügt. Das ist bedingt dadurch das die entsprechende Netzwerkschnittstelle beim Booten nicht konfiguriert wird. Um die Schnittstelle zu konfigurieren, sollte im ersten Schritt in den entsprechenden Ordner gewechselt werden:

cd /etc/sysconfig/network-scripts/

In diesem Ordner befindet sich eine Datei ifcfg-eth0 (alternativ sind auch andere Schnittstellennamen wie ifcfg-enp0s3, em1 und ähnliche möglich). Die entsprechende Datei wird nun mittels vi geöffnet:

vi ifcfg-eth0

In dieser Datei gibt es eine Option mit dem Namen ONBOOT, deren Wert standardmäßig auf no gestellt ist. Dieser Wert muss in yes geändert werden und anschließend die Datei gespeichert werden (:w zum Speichern der Datei, :q um VIM zu schließen). Nach einem anschließenden Neustart, sollte die Netzwerkschnittstelle konfiguriert und funktionsfähig sein.

Nutzt man die freie Git-Hosting-Lösung Gogs, so kommt man regelmäßig in den Genuss von Updates. Möchte man das Upgrade einspielen, so gibt es einige Dinge zu beachten. Im ersten Schritt sollte der Dienst auf dem Server natürlich beendet werden:

service gogs stop

Anschließend wird in den Kontext des Nutzers gewechselt unter welchem Gogs betrieben wird:

su git
cd

Der nächste Schritt ist der Download der neuen Version, sowie die Verschiebung der alten Version und das Kopieren der Konfigurationsdatei von der alten zur neuen Version:

mv gogs gogs_old
wget https://github.com/gogits/gogs/releases/download/v0.8.10/linux_amd64.zip
unzip linux_amd64.zip 
cp -R gogs_old/custom gogs
cp -R gogs_old/data gogs
cp -R gogs_old/log gogs

Danach wird in den Gogs Ordner gewechselt und Gogs manuell gestartet.

cd gogs
./gogs web

Bei diesem Start wird die Migration der Datenbank durchgeführt. Anschließend kann Gogs wie gehabt genutzt werden. Die heruntergeladene Datei sowie der Ordner gogs_old können anschließend entfernt werden.

Auf vielen unixoiden Systemen gibt es den Texteditor nano. Im Standardmodus ist die Anzeige der Zeilennummerierung unter nano deaktiviert. Möchte man dies ändern so muss der Parameter -c beim Aufruf des Editors angetragen werden:

nano -c config.cfg

nano mit aktivierter Anzeige der Zeilennummerierung

Damit zeigt nano im unteren Bereich unter anderem die Zeilennummer an, so das man eine bestimmte Zeile bei Fehlern schnell finden kann.

Das CHM-Format ist vielen bekannt als das Windows-Hilfedatei-Format. Auch wenn das Format mittlerweile aus der Mode gekommen ist, findet man ab und an eine solche Datei und möchte sie anzeigen. Unter Linux und Mac OS X gibt es dafür die freie Anwendung xCHM.

xCHM unter Mac OS X

Lizenziert ist xCHM unter der GPL in Version 2 und damit freie Software. Bezogen werden kann xCHM über die offiziellen Seite. Unter Mac OS X kann es alternativ über MacPorts (Port xCHM) installiert zu werden.

Vor ein paar Tagen schrieb ich in einem Artikel wie man Gogs (einen Git-Service) auf einem Ubuntu-Server aufsetzt. Das aktuelle Release v0.6.15 wird dabei mit einem Init-Script für Debian mitgeliefert. Dieses Skript funktioniert allerdings nicht wie gewünscht.

Die Änderung welche das Init-Script wieder repariert

Wenn man das Skript mittels:

service gogs start

ausführt wird Gogs angeblich gestartet. Allerdings zeigt:

service gogs status

das dies nicht der Fall ist. Das Problem am Init-Skript ist die nicht gesetzte USER-Variable. Mit der aktuellen Version des Skriptes funktioniert der Start von Gogs über service wieder ohne Probleme.

Nachdem ich die aktuelle Version von LibreOffice installiert hatte und ein Dokument mit einem Bild verfassen wollte, stellte ich fest das es ein Problem mit der Darstellung von Bildern gibt. Es wurde nur noch der Rahmen aber nicht mehr der Inhalt dargestellt.

Das Bild wird nicht dargestellt

Ursache für das Problem ist eine deaktivierte Checkbox in den Optionen. Öffnet man die Einstellungen unter Extras -> Optionen -> LibreOffice Writer gibt es im Punkt Ansicht die Checkbox Grafiken und Objekte im Punkt Anzeigen.

Die Checkbox Grafiken und Objekte ist deaktiviert

Nachdem die Checkbox wieder gesetzt ist, zeigt LibreOffice wieder wie gewohnt Bilder an.

Möchte man Git-Repositories auf einem Ubuntu-Server hosten, so ist das schnell erledigt. Wenn etwas mehr Komfort aller GitHub gewünscht ist, so sollte man sich Gogs anschauen. Gogs steht dabei für Go Git Service. Wie der Name andeutet handelt es sich um einen komplett in Go geschriebenden Git-Service. Im ersten Schritt muss Git auf dem Server installiert werden:

apt-get install git

Nachdem Git installiert ist, muss der für Gogs verwendete Nutzer angelegt und in diesen gewechselt werden:

useradd -m gogs
su gogs
cd

Danach kann das Gogs Binary heruntergeladen:

wget https://github.com/gogits/gogs/releases/download/v0.6.15/linux_amd64.zip
linux_amd64.zip
unzip linux_amd64.zip

und anschließend entpackt werden. Nachdem man mittels cd in den Ordner gogs gewechselt ist, kann gogs gestartet werden:

./gogs web

Damit wird ein Webserver auf Port 3000 gestartet. Mit dem Aufruf der passenden URL im Browser (z.B. http://example.org:3000) öffnet sich die Installationsroutine von Gogs.

Die Installationsroutine von Gogs

In der Routine wird die gewünschte Datenbank eingestellt und einige weitere Punkte konfiguriert. Die Installationsroutine erstellt eine app.ini im Verzeichnis custom/conf/. Dort können die Optionen später geändert werden. Damit Gogs automatisch startet – wird der Nutzer verlassen und ein Initscript angelegt, an die Konfiguration angepasst und zu den automatisch startenden Prozessen hinzugefügt:

cp /home/gogs/scripts/init/debian/gogs /etc/init.d/gogs
nano /etc/init.d/gogs
chmod +x /etc/init.d/gogs
update-rc.d gogs defaults

Damit sollte sich der Service über:

service gogs start

starten lassen. Bei mir führt das allerdings zu dem Problem das der Service angeblich gestartet wird, aber trotzdem nicht läuft. Wird der Service manuell per:

sh -x /etc/init.d/gogs start

gestartet funktioniert er ohne Probleme – hier ist noch der entsprechende Fehler zu finden.

Manpages sind eine der praktischen Dinge auf einem Linux und Mac OS X System. Mit Hilfe des Kommandos man ist es möglich für ein Shellkommando sich die entsprechende Handbuchseite anzuzeigen. In einer solchen Manpage werden unter anderem die Parameter für ein Kommando erklärt. Dies kann dann z.B. so aussehen:

git submodule [--quiet] status [--cached] [--recursive] [--] [<path>…]

Eine Kleinigkeit irritierte mich bis vor kurzem immer an der Syntax zur Beschreibung der Parameter. Es taucht immer der Parameter:

[--]

auf. Wenn man sich in einem entsprechenden Dokument der IEEE zu dieser Syntax umschaut, so wird diese Unklarheit beseitigt. Dort wird unter Guideline 10 erklärt:

The argument — should be accepted as a delimiter indicating the end of options. Any following arguments should be treated as operands, even if they begin with the ‚-‚ character. The — argument should not be used as an option or as an operand.

Damit wird klar das die Syntax zur Trennung der Option von den folgenden Operanden dient. Sie findet bei der Nutzung eines Kommandos keine Anwendung, sondern ist nur für den Leser der Beschreibung gedacht.