Da will man ganz gemütlich seine MacPorts-Installation mit
$ sudo port upgrade outdated
aktualisieren und auf einmal bricht das ganz mit diesem Fehler ab:
---> Computing dependencies for freetype
---> Fetching archive for freetype
---> Attempting to fetch freetype-2.6.1_0.darwin_13.x86_64.tbz2 from http://nue.de.packages.macports.org/macports/packages/freetype
---> Attempting to fetch freetype-2.6.1_0.darwin_13.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/freetype
---> Attempting to fetch freetype-2.6.1_0.darwin_13.x86_64.tbz2 from http://lil.fr.packages.macports.org/freetype
---> Fetching distfiles for freetype
---> Verifying checksums for freetype
Error: Checksum (rmd160) mismatch for freetype-2.6.1.tar.bz2
Error: Checksum (sha256) mismatch for freetype-2.6.1.tar.bz2
Error: org.macports.checksum for port freetype returned: Unable to verify file checksums
Please see the log file for port freetype for details:
/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_print_freetype/freetype/main.log
Error: Unable to upgrade port: 1
Was tun? Nun, zunächst einmal habe ich ein Ticket erstellt: Checksum mismatch for freetype-2.6.1.tar.bz2.
Eigentlich eine gute Idee, und tatsächlich kam schon mit der zweiten Antwort die Lösung des Problems: Auf dieser Wiki-Seite – I get Error: checksum (md5/sha1/rmd160) mismatch for port. What can I do about it? – wird folgendes Vorgehen beschrieben:
$ sudo port selfupdate
$ sudo port clean --dist <portname>
$ sudo port install <portname>
Und schon lief wieder alles… Notiz an mich: Vor dem Öffnen eines neuen Tickets erst einmal ein wenig selber suchen…
In einem Ordner im Dateisystem liegen tausende Dateien und dutzende dieser Dateien müssen in einem anderen Ordner „gesammelt“ werden. Nun hat man nicht unbedingt Lust, jede Datei einzeln anzusprechen und zu kopieren…
Was man aber – wenn es gut läuft – hat, ist eine CSV-Datei mit einer Liste aller Dateinamen der benötigten Dateien. Diese Datei kann man nun mit einem Shell-Skript dazu verwenden, alle benötigten Dateien in den Zielordner zu kopieren -> copy-files.sh. CSV-Datei und Shell-Skript werden in den Ordner gespielt und das Shell-Skript ausgeführt, fertig!
Wie lautet nun der Inhalt des Shell-Skriptes? So:
#!/bin/bashwhile read line
do
filename=$(echo"$line" | awk-F","'{print $1}')cp$filename*"../targetfolder/"done < filenames.csv
Kopiert wird mit Wildcard, weil die Dateiendungen in diesem Fall unbekannt waren.
Zum ersten mal konnte ich am vergangenen Wochenende die Chemnitzer Linux-Tage besuchen und ich muß sagen: Es war sehr, sehr schön! Endlich einmal raus aus der „Alltagsblase“!
Und: Eine Keysigning-Party sollte jeder einmal in seinem Leben besucht haben… :-)
Meine – freigegebenen – Bilder liegen in meiner Lychee-Installation:
Als Web-Entwickler steht man häufig vor dem Problem, daß man unterschiedliche PHP-Versionen ansprechen muß: Das neue Supi-Dupi-Framework (aka Laravel) verlangt PHP 5.4 oder höher, die alte Arbeitssoftware kann aber nur mit PHP 5.3 so richtig…
Was also tun? Auf Mac OS X bietet sich dafür MacPorts an (kurze Bemerkung: Ich benutze MacPorts seit Jahren, komme damit gut zurecht, kein Grund also, Homebrew einzuwerfen…).
Die aktuelle Umgebung hier: Mac OS X 10.9.5 „Mavericks“, MacPorts 2.3.3., Apache 2.2.29 (über MacPorts)
Folgende Situation: In einem Ordner im Dateisystem liegen hunderte Dateien und dutzende dieser Dateien müssen umbenannt werden. Nun hat man nicht unbedingt Lust, jede Datei einzeln anzusprechen und entsprechend umzubenennen…
Was man aber – wenn es gut läuft – hat, ist eine CSV-Datei mit einer Liste dieser Dateien, in der ersten Spalte ist der alte, in der zweiten ist der neue Dateiname -> altneu.csv. Diese Datei kann man nun mit einem Shell-Skript dazu verwenden, alle aufgeführten Dateien umzubenennen -> rename.sh. CSV-Datei und Shell-Skript werden in den Ordner gespielt und das Shell-Skript ausgeführt, fertig!
Wie lautet nun der Inhalt des Shell-Skriptes? So:
#!/bin/bashwhile read line
do
old=$(echo"$line" | awk-F","'{print $1}')new=$(echo"$line" | awk-F","'{print $2}')mv"$old""$new"done < altneu.csv
Die CSV-Datei darf natürlich keine Spaltenbezeichnungen enthalten!
Wenn man keinen Zugriff auf die Konfigurationsdateien des Apache-Webservers hat, kann man die Benutzung von SSL (https) auch über eine .htaccess-Datei erzwingen. Dazu muß die RewriteEngine natürlich aktiviert sein!
Dies ist der benötigte Eintrag in die htaccess-Datei:
In einigen PHP-Anwendungen bei uns liegen die Konfigurationsdateien im Format „*.php.default“ im entsprechenden Ordner. Wie schafft man es nun am schnellsten, von all diesen Dateien eine Kopie im Format „*.php“ zu erstellen?
Natürlich im Terminal! In den entsprechenden Ordner gehen und dann folgendes aufrufen:
for old in*.default;do cp$old`basename$old .php.default`.php;done
Das „Hashen“ mit SHA wird häufig im Zusammenhang mit dem Verteilen oder Herunterladen von Software benutzt. Dadurch soll die Integrität der heruntergeladenen Dateien sichergestellt werden.
Die Überprüfung kann man auf Mac OS X mit folgendem Befehl im Terminal machen:
shasum /pfad/zur/datei
So wird auf einen SHA1-Hash überprüft. Muß man andere SHA-Hashtypen überprüfen (224, 256, 384, 512), muß man nur den Befehl um den Paramater -a ergänzen. Für SHA256 also: