seeseekey.net - Invictus Deus Ex Machina

Mit Homebrew gibt es neben MacPorts einen Paket-Manager für macOS. Wenn man Homebrew installiert wird man feststellen das automatisch einer anonymen Datensammlung zugestimmt wurde. Möchte man dieser Datensammlung widersprechen so kann dies mit dem Kommando:

brew analytics off

bewerkstelligt werden. Auf einer gesonderten Info-Seite informiert das Homebrew-Projekt darüber welche Daten gesammelt werden.

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

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.

Für ein kleines Projekt war ich auf der Suche nach einer Möglichkeit eine Reihe von Wave-Dateien mit einem Echo zu versehen. Fündig wurde ich schließlich beim freien Werkzeug Sound eXchange oder kurz sox, mit welchem solche Operationen möglich sind. Es handelt sich dabei um ein Schweizer Taschenmesser für Audiobearbeitung. Ein Echo wird dabei mittels Sound eXchange wie folgt auf eine Datei gerechnet:

sox clean.wav echo.wav echo 0.8 0.87 60 0.4

Dank MacPorts kann man das Tool nicht nur unter Linux, sondern auch unter Mac OS X nutzen. Die offizielle Projektseite ist auf SourceForge zu finden.

Unter Mac OS X ist ein Backup schnell eingerichtet – Time Machine, die dafür zuständige Applikation wird bei Inbetriebnahme des Mac eingerichtet und verrichtet ihren Dienst anschließend im Hintergrund. Backups werden nun regelmäßig auf ein entsprechendes Medium geschrieben.

Time Machine sichert die Daten

Time Machine sichert die Daten

Interessant ist nun, welche Dateien Time Machine sichert – so wird nicht das gesamte Systeme gesichert, sondern nur bestimmte Dinge wie die Programme und Anwendungen des Nutzers. Cache-, Logdateien, der Papierkorb und das eigentliche Betriebsystem werden nicht gesichert. Bei einer vollständigen Wiederherstellung wird stattdessen das System neu installiert und anschließend das Time Machine-Backup wieder eingespielt. Das führt unter anderem dazu das installierte MacPorts, nach dem Rückspielen des Dateisystems nicht mehr vorhanden sind.

Wenn man unter Linux die Zeilenumbrüche einer Datei von DOS zu UNIX ändern möchte, kann man das Kommando dos2unix benutzen. Um das gleiche (ohne Zuhilfenahme von MacPorts) unter Mac OS X zu bewerkstelligen, muss man sich bei dem eingebauten Perl bedienen. Mittels der Kommandozeile:

perl -pe 's/\r\n|\n|\r/\n/g'   input > output

kann man eine Datei in das Unix-Format (LF bzw. \n) umwandeln.

Bei der Nutzung von MacPorts werden nicht nur die Ports auf dem System installiert, sondern auch eine Reihe von temporären Dateien. Möchte man seine MacPorts-Installation aufräumen, so kann man dies mittels zwei Befehlen bewerkstelligen:

sudo port clean --all all
sudo port -f uninstall inactive

Der erste Befehl löscht besagte temporären Dateien, der zweite deinstalliert nicht mehr benötigte Ports. Je nach MacPorts-Nutzung kann der Vorgang längere Zeit in Anspruch nehmen.

Möchte man MacPorts auf einer höheren Betriebssystemversion installieren, so wird im Normalfall der Installer für die passende Version heruntergeladen und ausgeführt. Leider gibt es noch keinen fertigen Installer für Mac OS X 10.10 alias Yosemite. In diesem Fall wird MacPorts manuell kompiliert werden. Dazu muss das Terminal geöffnet werden und folgendes eingegeben werden:

curl -O https://distfiles.macports.org/MacPorts/MacPorts-2.3.1.tar.bz2
tar xf MacPorts-2.3.1.tar.bz2
cd MacPorts-2.3.1/
./configure
make
sudo make install

Anschließend können die Ports mittels:

sudo port -v selfupdate
sudo port upgrade outdated
sudo port uninstall inactive

auf den aktuellen Stand gebracht werden. Zu beachten ist, das es durch den Beta-Status der Mac OS X Version natürlich zu Problemen kommen kann.

Wenn man Ports unter MacPorts entfernt kann es passieren das Bibliotheken, welche von dem Port genutzt werden, im System verbleiben. Mit dem Umstieg von MacPorts auf eine SQL-Datenbank zur Haltung der Paketinformationen ist es möglich geworden diese ungenutzten Bibliotheken zu entfernen. Dazu muss im Terminal:

sudo port uninstall leaves

eingegeben werden. Anschließend werden die ungenutzten Bibliotheken entfernt und damit Plattenplatz freigegeben. Die Funktionalität der installierten Ports wird dadurch nicht beeinträchtigt.

Nach einem Update aller Ports unter MacPorts funktioniert EncFS nicht mehr. Auf der Konsole wird dies auch ausführlich dokumentiert:

dyld: lazy symbol binding failed: Symbol not found: __ZN5boost7archive6detail17shared_ptr_helperC2Ev
  Referenced from: /opt/local/lib/libencfs.6.dylib
  Expected in: /opt/local/lib/libboost_serialization-mt.dylib

dyld: Symbol not found: __ZN5boost7archive6detail17shared_ptr_helperC2Ev
  Referenced from: /opt/local/lib/libencfs.6.dylib
  Expected in: /opt/local/lib/libboost_serialization-mt.dylib

Die Lösung für das Problem ist dabei simpel. Der Port EncFS muss noch einmal neu gebaut werden. Dafür gibt man auf der Konsole:

sudo port -ns upgrade --force encfs

ein. Anschließend kann EncFS wieder wie gewohnt genutzt werden.

Bei Homebrew handelt es sich neben MacPorts um einen Paketmanager für Mac OS X. Möchte man Homebrew wieder loswerden empfiehlt die offizielle FAQ folgendes Skript:

#!/bin/sh
# Just copy and paste the lines below (all at once, it won't work line by line!)
# MAKE SURE YOU ARE HAPPY WITH WHAT IT DOES FIRST! THERE IS NO WARRANTY!

function abort {
echo "$1"
exit 1
}

set -e

/usr/bin/which -s git || abort "brew install git first!"
test -d /usr/local/.git || abort "brew update first!"

cd `brew --prefix`
git checkout master
git ls-files -z | pbcopy
rm -rf Cellar
bin/brew prune
pbpaste | xargs -0 rm
rm -r Library/Homebrew Library/Aliases Library/Formula Library/Contributions
test -d Library/LinkedKegs && rm -r Library/LinkedKegs
rmdir -p bin Library share/man/man1 2> /dev/null
rm -rf .git
rm -rf ~/Library/Caches/Homebrew
rm -rf ~/Library/Logs/Homebrew
rm -rf /Library/Caches/Homebrew

Nach dem erfolgreichen Durchlauf des Skriptes, sollte Homebrew Geschichte sein. Dabei ist zu beachten, das dass Skript nur funktioniert, wenn Homebrew unter /usr/local installiert wurde, was allerdings der Normalfall sein sollte.