NerdkramsPersönliches
mkdir * ; wundern ; sprengen

Ich bin seit einer Weile in einer dieser start-up-Firmen tätig, die irgendwas mit mobilen Anwendungen machen. Ursprünglich sollte ich dort die Backendentwicklung übernehmen; blöderweise hatte ich in meiner Bewerbung angegeben, dass ich auch schon mal einen Server gewartet habe, was dazu führte, dass man mir außerdem die Installation und Wartung eines Servers (in Form eines ausrangierten Mini-Towers) auftrug. Kein Problem, dachte ich, macht ja durchaus Spaß. (Dass die Firma ausnahmslos auf eine Mac-OS-X-Umgebung setzt, hätte mich schon stutzig machen sollen.)

Nach einigen Stunden war der ausrangierte Mini-Tower zu einem voll funktionstüchtigen FreeBSD-PHP-Entwicklungsserver herangereift, der genau das tat, was er sollte, regelmäßige Datenbank- und Webserver-Backups per rsync (also auf ein beliebiges Netzlaufwerk) inklusive. Dieser Server verrichtete anstandslos seinen Dienst und überstand auch größere updates ohne Probleme, wie man es eben von FreeBSD so kennt.

Trotz alldem gab es seitens der Entscheider (zwar keine „Schlipsis”, aber doch sehr ökonomisch denkend) vier Punkte an der Installation zu kritisieren: FreeBSD lasse sich nicht ohne Handarbeit in die sowieso herumstehende „Time Machine” (so ein appleeigenes Backupsystem) einbinden, was immens wichtig sei, falls mal die Festplatte „abrauche” (ein rsync-Backup erfordere ja manuelles Zurückspielen der Dateien, das sei viel zu umständlich); es sei eher blöd, wenn ich als Einziger im Haus wisse, wie man den Server wieder zum Laufen bekomme, wenn er mal streiken sollte (ich war bis dahin ernsthaft der Meinung, genau dafür seien Administratoren ja da); man könne auf FreeBSD (ich hatte kein GUI installiert) nicht so einfach neue virtuelle Hosts anlegen wie unter Mac OS X, wo ein einziger Klick genüge; im Übrigen passe der Minitower nicht in den „Serverschrank” (die Anführungszeichen sind ernst gemeint; in diesem „Serverschrank” stehen vor allem Mac minis herum), sondern müsse danebengestellt werden, was natürlich unzumutbar sei.

Die „Lösung” für diese Herausforderungen: Ein weiterer Mac mini wurde angeschafft und dem Zuständigen (mir) kurz erklärt, wie das Teil denn funktioniert, wie man also per Klick neue Webseiten hinzufügt (was offenbar nichts anderes ist als ein GUI zur Verwaltung von virtuellen Hosts im mitgelieferten Apache), sogar mit „hübscher” blauer checkbox zum An- und Abschalten von PHP (natürlich in einer Uraltversion; wer will schon aktuelle Software auf ‘nem Server nutzen? Mac-OS-Nutzer jedenfalls nicht). „Dann mal viel Spaß!”

Was ich per Versuch und Irrtum schnell herausfand: Das GUI für die Serverwartung in Mac OS X scheint tatsächlich einen gewissen Zweck zu erfüllen. Eine httpd.conf existiert zwar dort, wo man sie erwarten würde (es gibt tatsächlich ein Konfigurationsverzeichnis namens apache2), aber sie scheint für irgendwas anderes benutzt zu werden. Das (mittels homebrew; ein passender Name, denn die Benutzung macht Lust auf ein Bier) händisch nachinstallierte PHP 5.5 ließ sich über sie jedenfalls nicht aktivieren. „Mein” Projekt setzt im Übrigen auf MariaDB (also MySQL-Syntax) auf, Mac OS X bringt natürlich nur PostgreSQL mit (selbstverständlich ohne GUI, das wäre vermutlich zu einfach); auch hier war also Handarbeit nötig. Ob das ebenfalls per brew eingerichtete MariaDB korrekt mit dem Webserver zusammenarbeitet, ist mehr oder weniger ein Ratespiel, da ich noch nicht herausgefunden habe, wie ich an „meine” PHP-Installation komme. Das „PHP”-Häkchen schaltet ja nur die wo auch immer versteckte httpd.conf um, nicht die, die dort liegt, wo sie liegen sollte. Toll, so’n Mac. (Es sieht aber gut aus: Die Installation von Adminer im Ordner der Website „Default” ließ mich zumindest auf die Datenbank zugreifen, mysqladmin verrichtet auf der Konsole auch anstandslos seinen Dienst. Glück gehabt!)

Die Software war zumindest theoretisch erst mal installiert. Jetzt galt es das bestehende PHP-Projekt vom „alten” auf den „neuen” Server zu migrieren. Die Benutzung von scp bot sich an. Natürlich liegen Mac-OS-X-Websites nicht in /var/www oder irgendwo innerhalb von /usr oder /etc, sondern in einem merkwürdigen Sonderordner namens /Library (und auch nicht unter /Library/WebServer, was ebenfalls existiert, sondern unter /Library/Server), man will es Nicht-Mac-Nutzern ja nicht zu leicht machen, von BSD auf Mac OS X zu wechseln. Da könnte ja jeder kommen! Insofern ist es nur konsequent, dass Mac OS X nicht die tcsh, sondern die bash als Standardshell verwendet. Die bash verhält sich aber gelegentlich so, wie man es am Wenigsten erwarten würde (was einer der Gründe sein könnte, warum sie unter Linux so beliebt ist).

Ein Beispiel: Was, denkt ihr, tut folgender Befehl in einer Mac-OS-X-Shell?

Der gesunde Menschenverstand sieht, dass ./* eigentlich redundant ist und . genügen sollte, hat aber ansonsten keine weiteren Einwände. Die bash sieht das mit dem Globbing aber anders als der gesunde Menschenverstand. Obiger Befehl kopiert also rekursiv (-r) den Inhalt von /var/www/projekt auf dem BSD-Server in das aktuelle Verzeichnis – und zwar in einen Unterordner namens *, den er hierfür extra anlegt.

Oh, jetzt habe ich vor Schreck die Betonung vergessen: In einen Unterordner namens *! (Für die weniger Technikversierten: Das ist, als würde man sein Kind „Leerzeichen” nennen. Oder „Jeder”.)

Wie beseitigt man dieses Malheur? Erst mal alles einen Ordner höher kopieren, dann den Ordner namens * entfernen:

Fiese Falle: rm -rf * würde auch funktionieren, aber anders als gewünscht.

Mac OS X überrascht mich immer wieder. Incredible!

Zum Glück ist Wochenende.

Senfecke:

  1. Wenn man Apple-Hardware benutzt, wieso auch nicht einen Server vom Apfel? Genau dafür ist doch das ganze System ausgelegt…eigentlich wollte man in so einem Unternehmen doch wissen, worauf man sich einlässt, oder?

    Das Problem scheint überall aufzutreten, wo Apple-Hardware eingeführt wird. Was vorher praktisch war, muss plötzlich praktischerer werden…und zum Schluss wird es doch ganz schön komplex.

    Ist diese tcsh etwas BSD-spezifisches? Wenn ich mich nicht irre, hat PC-BSD die zsh benutzt…ich habe gedacht, die zsh wäre unter *BSD durchgehend Standard, und Mac OS ist ja auch eines?

    • Die tcsh ist so etwas wie der Nachfolger der csh, Standardshell unter den meisten BSDs (jedenfalls unter denen, die nicht die ksh nutzen). (Offenlegung: Diese Information kann stimmen, muss aber nicht. Ich kenne nur FreeBSD wirklich gut genug. – Nachtrag: Die Information stimmt jedenfalls für FreeBSD und seine Abkömmlinge.)

      Die zsh ist bournekompatibel, wahrscheinlich hat die ähnliche „Probleme” wie die bash – das habe ich unter Mac OS X noch nicht ausprobiert (und auf meinem BSD-Server traue ich mich jetzt nicht mehr).

  2. „(mittels homebrew; ein passender Name, denn die Benutzung macht Lust auf ein Bier)”
    Ja, „brew update && brew install mariadb” ist auf jeden Fall nervenaufreibender als ein „portsnap fetch && portsnap extract”, 10 Minuten warten, „whereis mariadb”, in den Ordner wechseln, „make install clean” und dann den entsprechenden Startup-Befehl noch in die /etc/rc.conf schreiben, völlig klar. m(

    „Natürlich liegen Mac-OS-X-Websites nicht in /var/www oder irgendwo innerhalb von /usr oder /etc, sondern in einem merkwürdigen Sonderordner namens /Library”
    Natürlich liegen Debian-Websites nicht in /Library, oder irgendwo innerhalb von /usr oder /etc, sondern in einem merkwürdigen Sonderordner namens /var/www
    Natürlich liegen FreeBSD-Websites nicht in /var/www, oder irgendwo innerhalb von /Library oder /etc, sondern in einem merkwürdigen Sonderordner namens /usr/local/www/apache/data

    Wie es unter Windows aussieht, weiß ich nicht, aber du kannst da bestimmt prima ranten, dass die Slashes falsch herum sind.

    Merkste selbst, ne? Auch: Wie kommst du auf den absolut unsinnigen Gedanken, dass Webseiten jemals irgendwo in /etc liegen würden? Wenn du das jemals so eingerichtet haben solltest (denn Default ist es sicher nicht), dann muss ich dich leider erschießen. Und jedenfalls auf keinen Fall irgendwo als Admin einstellen. Gerade du als FreeBSD User solltest dich eher mit den Unix Directory Conventions (http://en.wikipedia.org/wiki/Unix_filesystem) auskennen als so mancher Linuxuser.

    Zu deiner Shell: Jo, auf MacOS-Systemen ist die Bash voreingestellt als Usershell. Aber, o Wunder, es gibt da eine Binary, die auf den Pfad /bin/tcsh hört. Und da du ja als FreeBSD-Experte und Administrator eingestellt wurdest, sollte man doch eigentlich davon ausgehen, dass du den chsh-Befehl kennst.

    Und schon sind mehrere Kritikpunkte, die du hier angesprochen hast, ausgehebelt. Aber einfach zu googlen wäre natürlich zu einfach gewesen, lieber mal den OS-Nazi raushängen lassen, oder?

    • tatonka:
      Ja, „brew update && brew install mariadb” ist auf jeden Fall nervenaufreibender als ein „portsnap fetch && portsnap extract”, 10 Minuten warten, „whereis mariadb”, in den Ordner wechseln, „make install clean” und dann den entsprechenden Startup-Befehl noch in die /etc/rc.conf schreiben, völlig klar. m(

      whereis mariadb führt ja auch zu nichts, weil es einen Port dieses Namens nicht gibt. Einfach in /usr/ports/databases/ nachzusehen wäre wahrscheinlich aber zu logisch. Du bist Macnutzer, nicht wahr?

      (Nebenbei bemerkt: pkg install mariadb-server führt auch zum Ziel. Ein Befehl weniger!)

      Natürlich liegen Debian-Websites nicht in /Library, oder irgendwo innerhalb von /usr oder /etc, sondern in einem merkwürdigen Sonderordner namens /var/www

      Total unlogisch benannt, nicht?

      Warum gibt es /Library/WebServer/, wenn da nichts drinliegt, was für den Webserver von Belang ist? :aufsmaul:

      Natürlich liegen FreeBSD-Websites nicht in /var/www, oder irgendwo innerhalb von /Library oder /etc, sondern in einem merkwürdigen Sonderordner namens /usr/local/www/apache/data

      Bei mir nicht.

      Wie es unter Windows aussieht, weiß ich nicht, aber du kannst da bestimmt prima ranten, dass die Slashes falsch herum sind.

      Unter Dreck OS X sind dafür die Backslashes falschrum.

      Wie kommst du auf den absolut unsinnigen Gedanken, dass Webseiten jemals irgendwo in /etc liegen würden?

      Unsinnige Verzeichnisaufteilung (“wir haben /Library/WebServer, aber /Library/Server ist doch viel schöner!!1″) sollte doch nicht mehr weiter verwundern.

      da du ja als FreeBSD-Experte und Administrator eingestellt wurdest, sollte man doch eigentlich davon ausgehen, dass du den chsh-Befehl kennst.

      Ist mir geläufig, ja, invalidiert aber meine Beschwerde nicht. Ich wurde übrigens als Webentwickler eingestellt, erst danach kam „kannst du mal…?” – vermutlich aus gutem Grund.

      Und schon sind mehrere Kritikpunkte, die du hier angesprochen hast, ausgehebelt.

      Nö.

      Aber einfach zu googlen wäre natürlich zu einfach gewesen, lieber mal den OS-Nazi raushängen lassen, oder?

      „Nachgucken, wie man Probleme lösen kann” ist das Eine.

      Wenn mir da aber ein System hingestellt wird, das als logisch durchdacht und einfach zu bedienen beworben wird und das mich dann fassungs- wie ratlos die total dämliche Verzeichnislogik bewundern lässt, werde ich mich ja wohl noch darüber auslassen dürfen, ohne dass gleich einer die Godwinkarte zieht.

      Auch Windows ist ein hervorragendes System, wenn du nachguckst, wie du die Probleme lösen kannst. Nun?

  3. Bei mir – unter Debian Testing – macht „bash” jedenfalls was es soll – ich weiß nicht wie das bei Mac OS X aussieht, aber normalerweise ist die Bash recht „Logisch”… ;)

    Es gibt einen guten Grund, warum OS X in Unternehmen so beliebt ist: Es ist fast Undurchsichtbar, Unnötig Kompliziert und auf ein Art und Weise verstrickt, die sich normale Linux/Unix User niemals vorstellen können. So kann man doch auch sicher die Geschäftsgeheimnisse Verstecken: Unlogik ist doch bestimmt die Sicherste OS X Verschlüsselungsmethode, die auch sehr oft eingesetzt wird *gg*

    Unter Fedora bzw. RHEL 5,6,7 und Debian(die kenne ich/hab ich auf meinem System) liegt PHP meist in /var/www(Debian) oder /var/www/html(RHEL) bzw /var/www(falls kein CGI mitinstalliert wurde).. Kryptologik-FTW! :aufsmaul:

    Bei dir in der Firma würde ich wohl direkt nach dem ersten „Geh zu OS X” wohl sagen, dass derjenige „sich doch bitte meine Arbeit oder OS X in den Anus schieben möge”… :evil:

  4. Pingback: Mac OS X – wieder einen “liebhaber gewonnen” – darksider3's Microblog

Comments are closed.

:) 
:D 
:( 
:o 
8O 
:? 
8) 
:lol: 
:x 
:aufsmaul: 
:P 
:ups: 
:cry: 
:evil: 
:twisted: 
mehr...
 

Erlaubte Tags:
<strong> <em> <pre class="" title="" data-url=""> <code class="" title="" data-url=""> <a href="" title=""> <img src="" title="" alt=""> <blockquote> <q> <b> <i> <del> <span style="" class="" title="" data-url=""> <strike>

Datenschutzhinweis: Ihre IP-Adresse wird nicht gespeichert. Details finden Sie hier.