EXIF-Manipulationen mit jhead

Das Kommandozeilenprogramm jhead (aus dem Paket media-gfx/jhead) ist ein mächtiges Werkzeug um Fotos umzubenennen und das Datei- oder EXIF-Datum zu ändern.

Hat man beispielsweise vergessen, die Zeit der Digitalkamera auf Sommerzeit umzustellen, ändert folgender Befehl das EXIF-Datum sämtlicher Fotos um 1 Stunde nach vorne:
jhead -ta+1:00:00 *.jpg
Der Befehl
jhead -ft *.jpg
ändert schließlich auch das Dateidatum auf die Zeit aus dem EXIF-Kopf.
Mittels
jhead -nf%Y-%m-%d_%H-%M-%S *.jpg
kann man den Dateinamen von jhead umbenennen lassen in das Format Jahr-Monat-Tag_Stunde-Minute-Sekunde.

Besitzt die Kamera einen Beschleunigungssensor, um die Drehrichtung der Aufnahmen zu erkennen (Hoch- oder Querkant), so kann man die Fotos mit
jhead -autorot *.jpg
automatisch rotieren lassen. Dies ist praktisch für Programme, die den EXIF-Header bei der Anzeige nicht automatisch betrachten.

Alles zusammen geht natürlich auch gleichzeitig:

jhead -autorot -nf%Y-%m-%d_%H-%M-%S -ft *.jpg

oder, wenn die Dateien, wie im Fall der Panasonic-Kamera eine großgeschriebene Dateienung aufweisen:

jhead -autorot -nf%Y-%m-%d_%H-%M-%S -ft *.JPG

Vorteilhaft an letztem Befehl ist, dass automatisch in .jpg (also kleingeschrieben) umbenannt wird.

Bilder verkleinern geht mit

mogrify -quality 80 -resize 1920x1080 *.jpg

Die Seitenverhältnisse bleiben dabei intakt. Aber Achtung: die Dateien werden überschrieben, daher sollte man nur mit Kopien der Originaldateien arbeiten.

—–
EDIT:

Die Kamera speichert die Fotos als *.JPG ab, folgender Befehl ändert die Dateierweiterung auf .jpg:
mmv '*.JPG' '#1.jpg'

Rekursiv lassen sich sämtliche {jpg,JPG}-Dateien mit folgendem Befehl automatisch drehen:
find . -iname "*.jpg" -exec jhead -autorot {} \;

Amarok stürzt ab wegen falscher Xine-Version

Da ich das Berkano-Overlay nutze, ist bei mir momentan das Paket media-libs/xine-lib in der Version 1.2.9999_p247 installiert. Das verträgt sich leider nicht mit phonon (media-sound/phonon). D.h. bei der Installation von phonon wird trotz xine-USE-Flag das xine-Backend nicht installiert. Das ist die Fehlermeldung beim emergen von phonon:

— The following OPTIONAL packages could NOT be located on your system.
— Consider installing them to enable more features from this software.
+ Xine: xine-lib v1.1.90 was found on your system. This version contains major changes compared to 1.1.x and has not been tested properly for use with this backend. Consider downgrading to version 1.1.9.
+ Xine: libxine is needed to compile phonon xine backend

Leider bricht der Kompiliervorgang hier nicht ab. Es wird einfach ohne das Xine-Backend weiter gemacht. Leider braucht aber u.a. Amarok genau dieses.

Meine (zugegebenermaßen unbefriedigende) Lösung ist das Maskieren der neuen Xine-lib-Versionen in /etc/portage/package.mask/monolithic

=media-libs/xine-lib-1.2.9999_p235
=media-libs/xine-lib-1.2.9999_p240
=media-libs/xine-lib-1.2.9999_p247

Danach sollte ein emerge xine-lib erfolgen, um wieder die alte Version zu installieren. Anschließend kann man wieder phonon installieren mit emerge phonon

Jetzt sollte auch Amarok wieder laufen.

Miktex und Texlive unter Linux

Ebuild für MiKTeX Tools:

dev-tex/miktex-tools/miktex-tools-2.8_beta2.ebuild

EAPI=1

inherit cmake-utils

DESCRIPTION=“Miktex Tools for Unix“

MY_P=“miktex-2.8-beta-2″
S=“${WORKDIR}/${MY_P}“

HOMEPAGE=“http://miktex.org/unx/“
SRC_URI=“http://ctan.osmirror.nl/systems/win32/miktex/source/${MY_P}.tar.bz2″

LICENSE=“GPL-2″
SLOT=“0″

KEYWORDS=“~x86 ~amd64″
IUSE=““

COMMON_DEPEND=“x11-libs/qt:4″

RDEPEND=“${COMMON_DEPEND}“

DEPEND=“${COMMON_DEPEND}“

src_unpack() {
unpack ${A}
cd „${S}“
epatch „${FILESDIR}/qvariant.patch“
}

Es ist noch ein Patch notwendig. Erstellt habe ich ihn mittels:

diff -u Programs/MiKTeX/PackageManager/Qt/PackageTableModel.cpp.bak Programs/MiKTeX/PackageManager/Qt/PackageTableModel.cpp > qvariant.patch

dev-tex/miktex-tools/files/qvariant.patch (Funktioniert so nicht, es müssen die Leerzeichen an den Zeilenanfängen durch Tabs ersetzt werden)

— Programs/MiKTeX/PackageManager/Qt/PackageTableModel.cpp.bak 2008-09-09 15:40:42.000000000 +0200
+++ Programs/MiKTeX/PackageManager/Qt/PackageTableModel.cpp 2009-03-23 14:02:02.000000000 +0100
@@ -97,7 +97,7 @@
true)
.c_str());
case 2:
– return (packageInfo.GetSize());
+ return (uint)(packageInfo.GetSize());
case 3:
return (QDateTime::fromTime_t(packageInfo.timePackaged).date());
case 4:

miktex-tools kann nun installiert werden (vorher sollte noch mpm (alte Version) deinstalliert werden):

emerge –unmerge dev-tex/mpm

MAKEOPTS=“-j1″ emerge miktex-tools

Das -j1 ist wichtig, da paralleles Make hier nicht funktioniert.
Anschließend speichert mpm die Latex-Pakete als normaler Benutzer in dem Verzeichnis ~/miktex-texmf ab.
Damit TeXLive sie auch findet, kann man einfach

rm ~/texmf
ln -s ~/miktex-texmf ~/texmf

ausführen. Pakete, die vom Miktex Packet Manager (z.B. mittels mpm_qt) installiert werden, werden nun (nach evtl erst nach texhash) auch von TexLive gefunden.

Pfade anzeigen lassen:
kpsewhich -expand-path „\$TEXMFHOME“
kpsewhich -show-path=tex

Konfigurationsdatei für texlive:
/etc/texmf/web2c/texmf.cnf

Virtualbox ab 2.1.0 mit Netzwerkkarte im Hostinterface-Modus

Um unter Gentoo als VirtualBox Host-System die Netzwerkkarte im Host-Modus zu betreiben, muss man einfach nur das Modul vboxnetflt laden mittels

modprobe vboxnetflt

Damit dies automatisch bei jedem Neustart passiert, ist Folgendes in die Datei /etc/conf.d/modules einzufügen:

modules_2_6=“${modules_2_6} vboxnetflt“ module_vboxnetflt_args_2_6=““

Anschließend ändert man die Virtuelle Maschine in Virtualbox so ab, dass sie die Netzwerkkarte des Host-PCs nutzt:

WLAN und WPA mit WPA_supplicant

Mein neuer WLAN-USB-Stick, ein Digitus DN-7003GT erzeugt mit lsusb folgende Ausgabe:

Bus 002 Device 003: ID 0bda:8189 Realtek Semiconductor Corp

Seit Kernel 2.6.27 funktioniert dieser Adapter tadellos mit dem Kernel-Modul RTL8187.

Das Programm iwconfig aus dem Paket net-wireless/wireless-tools listet den Stick unter dem Namen wlan0 auf.

Damit dieser sich auch mit einem WPA-Verschlüsselten Netzwerk verbinden kann sind folgende Schritte nötig:

Zunächst einmal muss das Paket net-wireless/wpa_supplicant installiert werden.

Anschließend wird die Datei /etc/conf.d/net.wlan0 mit folgendem Inhalt erstellt:

# wlan0 abschalten, wenn eine Netzwerkkabelverbindung gefunden wurde
# von http://www.gentoo-wiki.info/Wireless/Configuration#WPA
preup() {
if [[ ${IFACE} == „wlan0“ ]]; then
if ifplugstatus | grep -q ‚eth0: link beat detected‘; then
ewarn „Wired connection on eth0 detected, aborting configuration on ${IFACE}“
return 1
fi
fi
return 0
}

modules=( „wpa_supplicant“ )
wpa_supplicant_wlan0=“-D wext -c /etc/wpa_supplicant/wpa_supplicant.conf“


Zunächst Außerdem wird mit dem Befehl

ln -s /etc/init.d/net.lo /etc/init.d/net.wlan0

ein Init-Skript erzeugt.

Die Konfigurationsdatei für wpa_supplicant liegt unter /etc/wpa_supplicant/wpa_supplicant.conf

Sie erhält folgenden Inhalt:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=users
update_config=1

network={
ssid=“WPA-AP“
psk=“DAS_WPA_PASSWORT“
priority=5
}

network={
ssid=“WEP-AP“
key_mgmt=NONE
wep_key0=11111111111111111111111111
wep_tx_keyidx=0
priority=5
# auth_alg=SHARED
}

Nun sollte sich der WLAN-Stick mittels

/etc/init.d/net.wlan0 start

mit dem konfigurierten Netzwerk verbinden können.

Netzwerk: WLAN nur aktivieren, wenn kein Netzwerkkabel eingesteckt ist

Um seine WLAN-Karte (oder WLAN-USB-Stick) nur zu aktivieren, wenn gerade kein Netzwerkkabel eingesteckt ist, kann man folgende Schritte ausführen.

(Annahme: die WLAN-Karte firmiert unter dem Namen wlan0)

Inhalt der Datei /etc/conf.d/net.eth0

# wlan0 einschalten, wenn das Netzwerkkabel nicht eingesteckt wurde
preup() {
if ethtool „${IFACE}“ | grep -q ‚Link detected: no‘; then
ewarn „No link on ${IFACE}, aborting configuration“
/etc/init.d/net.wlan0 start
fi
return 0
}

#config_eth0=( „dhcp“ )
config_eth0=( „192.168.0.10/24“ )
routes_eth0=(
„default via 192.168.0.1“ # IPv4 default route
)

Für den Inhalt der Datei /etc/conf.d/net.wlan0 siehe vorherigen Post.

Danach sollte man das Paket sys-apps/ifplugd installieren. Es ermöglicht es festzustellen, ob an der Netzwerkkarte ein Kabel angeschlossen ist und reagiert automatisch auf Veränderungen des Zustands.

Anschließend sollte man die Datei /etc/ifplugd/ifplugd.action dahingehend abändern, dass beim Entfernen des Netzwerkkabels automatisch das wlan0-Interface gestartet wird und entsprechend beim Einstecken des Netzwerkkabels wieder gestoppt wird.

Ausschnitt aus der Datei /etc/ifplugd/ifplugd.action (siehe dazu auch das gentoo-wiki.info)

case „$2“ in
up)
if [ „${INITNG}“ = „yes“ ]
then
ARGS=“-u net/$1″
else
ARGS=“–quiet start“
#wenn ein Netzwerkkabel eingesteckt wurde, soll wlan0 gestoppt werden
/etc/init.d/net.wlan0 –quiet stop
fi
;;
down)
if [ „${INITNG}“ = „yes“ ]
then
ARGS=“-d net/$1″
else
ARGS=“–quiet stop“
#wenn das Netzwerkkabel gezogen wurde, soll wlan0 gestartet werden
/etc/init.d/net.wlan0 –quiet start
fi
;;
*)
echo „$0: wrong arguments“ >&2
echo „Call with “ >&2
exit 1
;;
esac

Um zu verhindern, dass wlan0 automatisch beim Hochfahren gestartet wird, kann man in der Datei /etc/rc.conf die Zeile

rc_plug_services=“!net.wlan0″

einfügen.

System Stresstest

Um seinen Rechner mal testweise unter Volllast laufen zu lassen, bietet sich stress an (im Paket app-benchmarks/stress).

Beispielsweise sorgt der folgende Befehl dafür, dass die CPU mit 8 Threads und der Arbeitsspeicher und die Festplatte für 5 Minuten voll ausgelastet werden:

stress –cpu 8 –io 4 –vm 2 -hdd 1 –timeout 300s

Damit lässt sich prüfen, ob die Kühlung im Rechner ausreichend ist.

Plasmoids in kde4.1

Ich habe von kde-look.org die Quellen von verschiedenen Plasmoids runtergeladen.
Kompiliert habe ich sie wie folg:

cmake -G „Unix Makefiles“
make

Leider klappt aber das Installieren mittels sudo make install nicht, da die Dateien in die falschen Verzeichnisse kopiert werden.
Am einfachsten legt man sich symbolische Links an, damit sowohl die kompilierten Plasma .so-Dateien als auch die zugehörigen .desktop-Dateien an eine Stelle kopiert werden, wo Plasma sie auch findet.

ln -sf /usr/lib/kde4/ /usr/local/lib/kde4/
ln -sf /usr/share/kde4/services/ /usr/local/share/kde4/services

Man sollte natürlich vorher prüfen, ob die Verzeichnisse unter /usr/local auch leer sind.