Adminzeugs
Aus Leo's Wiki
Diese Seite ist mein öffentlicher Notizzettel von Dingen, die mich viel Zeit gekostet haben und die ich sicher irgendwann mal wieder brauche.
Android
failed to install app
Offenbar haben andere selbes Problem. Apps aus dem Market lassen sich problemlos runterladen, aber dann heißt es "Installation fehlgeschlagen". Grund war bei mir, dass die SD-Card voll war. Das wurde aber nicht angezeigt. Einer der Tipps im Netz war, SD-Card entfernen. Nach dem SC-unmount hatte ich dann endlich die lang ersehnte sinnvolle Fehlermeldung: "Kein Speicherplatz".
Hilfreiche Analysetools
- strace -eopen -f some_program
- trace what some_program is actually doing. -eopen to show only attempts to open other files. -f to follow into sub-processes.
- iotop -o -d10
- to see who's using the disc. -o for only show who actually used the disc. -d10 to update every 10s
- dstat 60
- to see what's going on. cpu usage by user, system, idle, waiting, ??, disk read, write, network received, sent, ??, ??, interrupts, context switches
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 10 1 88 1 0 0| 87k 35k|1740B 47k| 0 0 |2003 2465 5 1 93 0 0 0| 64k 47k|1357B 45k| 0 0 |1741 1863 6 1 91 1 0 0| 39k 41k|1482B 53k| 0 0 |1817 2022 6 1 92 1 0 0| 74k 33k|1536B 52k| 0 0 |1869 2073
alle .svn-Verzeichnisse strippen
Im Wurzelverzeichnis des SVN-Repositories:
$ find . -name ".svn" -exec echo '{}' \;
nas über nemo routen
- am nas
# einen gültigen nameserver hinterlegen echo nameserver 212.18.3.5>/etc/resolv.conf # nemo als default gateway eintragen route add default gw 192.168.0.20
- am nemo
# ip forwarding aktivieren echo 1 > /proc/sys/net/ipv4/ip_forward # routing nach draußen aktivieren iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Mit inn2 news server aufsetzen.
/etc/news/readers.conf
auth "public" {
hosts: "*"
default: ""
}
auth "localhost" {
hosts: "localhost, 127.0.0.1, stdin"
default: ""
}
auth "users" {
auth: "ckpasswd -f /etc/news/passwd"
}
access "public" {
users: ""
newsgroups: "*"
access:RP
}
access "users" {
users: "leo,moritz,van,michi"
newsgroups: "*"
access: RPA
}
access "localhost" {
users: ""
newsgroups: "*"
access: RPA
}
NNTP Clientseitig
Das befindet sich hier
Benutzerverwaltung
- neuer Benutzer (passwd erzeugen)
- htpasswd -c /etc/news/passwd leo
- neuer Benutzer/Passwort ändern
- htpasswd /etc/news/passwd leo
mercurial/hg
allgemeines
- für Glob2 eine hilfreiche Zeile
cd glob2 && hg pull http://hg.globulation2.org/glob2 && hg update -C default && scons -j 5
- für commits eine gültige e-mail adresse angeben
vi ~/.hgrc
[ui] username = leo <leo.wandersleb@irgendwo.de>
- eine Arbeitskopie holen
mkdir ~/projekte cd ~/projekte hg clone http://hg.globulation2.org/glob2 glob2test
- branch anzeigen
hg branch
- verfügbare branches anzeigen
hg branches
- alle daten abrufen (vom bekannten server)
hg pull
- speziell für globulation
- ein .deb-Paket schnüren, das die aktuellste Entwicklerversion enthält und den Fingerabdruck zwecks Eindeutigkeit auch als Versionsbezeichnung verwendet.
hg pull http://hg.globulation2.org/glob2 hg update -C -r beta3-rc vers=$(hg identify) vers=${vers:0:12} sudo checkinstall --nodoc --fstrans -y --pkgname glob2 --pkgversion $vers --type debian scons install
converting svn to mercurial
getting an svn repo converted to hg really was difficult when i hit problems with self signed cert problems. hg convert kept asking me to enter login and password but finally said "does not look like a subversion repo". the solution was to install the latest python-subversion package:
sudo aptitude install python-subversion python -c "import svn.core; print svn.core.SVN_VER_MINOR" #should print something >=5 now
and doing an svn ls on my repo:
svn ls https://my/repo/somewhere
to get asked this:
Certificate information: - Hostname: my - Valid: from Thu, 19 Nov 2009 05:57:53 GMT until Fri, 19 Nov 2010 05:57:53 GMT - Issuer: me - Fingerprint: .... (R)eject, accept (t)emporarily or accept (p)ermanently? p
and to then try again the actual import with
hg convert https://my/repo/somewhere mercurialSomewhere
bilderalbum
Mit so einer bash-Datei im Ordner mit Bildern kann man eine html-Datei bauen, die verkleinerte Versionen der Bilder als Thumbnails und als verlinkte Dateien verwendet:
#!/bin/bash
j=1;
wthumb=$1;
hthumb=$2;
wfull=$3;
hfull=$4;
cols=$5;
text=$6;
mkdir thumb;
mkdir full;
echo "<html><head><title>photos</title></head><body><center><table><tr>" > index.html;
for i in $(ls *.JPG *.jpg *.TIFF *.tiff *.png *.PNG); do
#if [ -a "./medium/medium$i" ]; then
convert ./$i -resize "${wthumb}x$hthumb>" +profile '*' ./thumb/$i;
convert ./$i -resize "${wfull}x$hfull>" +profile '*' ./full/$i;
composite -compose atop -gravity southeast copy.png ./full/$i ./full/$i;
echo "<td><a href='full/$i'><img src='thumb/$i' /></a></td>";
if [ $j -ge $cols ];then
echo "</tr><tr>";
j=$[0];
fi;
j=$[$j+1];
#fi;
done >> index.html;
echo "</table></center></body>">>index.html
#for i in $(ls *.JPG); do if [ -a "medium/medium$i" ]; then echo "<td><a href='full/$i'><img src='thumb/$i' /></a></td>"; if [ $j -ge 5 ];then echo "</tr><tr>"; j=$[0]; fi; j=$[$j+1]; fi; done >> index.html;
verschlüsselte Platten
Hab mir ne neue Platte besorgt und wie die vorherigen verschlüsselt. Das ging dann so:
Erstmal alles gemountet, was so da war. Dies ist wichtig, da man sich ja irgendwie vergewissern sollte, dass nicht die vorher verwendeten Platten durch die neue an neue Positionen verschoben wurden und man aus Versehn die falsche Platte formatiert. Dies war bei mir auch der Fall und somit hieß meine neue Platte wie eine Alte, nämlich /dev/sda
parted /dev/sda (parted) mklabel msdos //fragt mich nicht. amiga, bsd, dvh, gpt, mac, msdos, pc98, s390, sun, loop stehen zur Auswahl. msdos hab ich gelesen und glaub's (parted) mkpartfs primary ext3 0% 100% //evtl. nicht nötig. irgendwie wurde ein neustart vor dem nächsten schritt nötig (parted) q //zum Beenden cryptsetup luksFormat --cipher aes-cbc-essiv:sha256 /dev/sda1 cryptsetup luksOpen /dev/sda1 data2 //dies erzeugt /dev/mapper/data2 mkfs.ext3 /dev/mapper/data2 mkdir /data2 mount /dev/mapper/data2 /data2/ chown -R leo:leo /data2/
swap
- swap partition anlegen (zB auf erstem IDE-Laufwerk (/dev/hda), zweite partition (dev/hda2)).
# fdisk /dev/hda
- mit n Partition anlegen
- partition als swap ausweisen
# mkswap -c /dev/hda2
- swap einschalten
# swapon /dev/hda2
- swap für nächsten boot in /etc/fstab eintragen
# echo "/dev/hda2 swap swap default 0 0" >> /etc/fstab
arbeiten mit Videos
Videos umkodieren
Um videos von einem in ein anderes Format zu konvertieren, kann man ffmpeg nutzen. mencoder ist in manchen Situationen sicher einfacher, nur der ist leider wegen diverser Probleme mit GPL nicht in Debian vorhanden. Also ffmpeg2theora:
ffmpeg2theora CANON121/VIDEO_0123.AVI
ja, meine Canon IXUS produziert riesige Dateien, die nicht g'scheid weiter verarbeitet werden können. Um alle auf einmal zu verkleinern, hab ich mir diese Zeilen ausgedacht:
IFS=$'\n' #Dateinamen mit " " werden sonst als zwei Dateinamen erkannt.
cd /path/to/my/photos/
for i in $( ls -d *CANON ); do
cd /path/to/my/photos/$i
mkdir videos
mkdir videos/original
mkdir videos/small
for j in $( ls *.AVI ); do
echo $j
ffmpeg2theora -o videos/small/$j.ogv $j && mv $j videos/original/
done
done
IFS=$' '
Anwendungsvideo selbst gemacht
Um das Programm, das bei meiner Diplomarbeit entstand aufzuzeichnen, habe ich statt
./main.Linux.2_std
einfach
captury ./main.Linux.2_std
bzw.
captury --output-dir=. ./main.Linux.2_std
ausgeführt, die Aufzeichnung mit F12 gestartet und gestoppt (Achtung: Programm beenden, ohne die Aufzeichnung zu stoppen verwirft diese).
Mit
cpsrecode -i ./main.Linux.2_std\ -\ 2008-08-16\ 00\:16\:18.cps -c theora -o ./out3.avi
kann man daraus nun einen Film machen, mit dem auch normale Abspielprogramme wie mplayer oder vlc was anfangen können.
Bilder einer Webcam zu einem Video verwursten
Das Bildmaterial speichern. Um verschiedene Bildernamen zu erhalten, habe ich das Datum angehängt. Eine fortlaufende Nummer geht auch, verträgt sich aber nicht mit Neustarts:
while true ; do d=$( date "+%s" ); wget http://siljasteinberg.de/keller/FotosWebcam/biergarten.jpg; mv biergarten.jpg biergarten_$d.jpg; sleep $(( 60 * 5 )); done
Bildernamen normalisieren (mit Hilfe von Links):
mkdir tmp x=1; for i in $(ls -r -t *jpg); do counter=$(printf %06d $x); ln "$i" tmp/img"$counter".jpg; x=$(($x+1)); done
Bilder zu einem Film verbinden:
ffmpeg -f image2 -i tmp/img%06d.jpg -qscale 1 foo.mpg
sed
Stream edit kann man zum Beispiel verwenden, um für Dasher einen sogenannten Trainingstext aus einem Chatlog zu erzeugen. Meine Piratenpartei-Chatlogs sind mittlerweile 15MB groß, enthalten aber ein paar Unschönheiten.
cat ~/.purple/logs/irc/leo_ii@irc.freenode.net/#piratenpartei.chat/*.txt | sed 's/^.*: //g' | sed '/http/ d' | sed '/den Raum/ d' | sed '/(200/ d' | sed '/[^ ]?[^ ]/ d' > ~/Desktop/PiratTalk.txt
Das geht sicher besser, aber obige Zeile
- s/^.*: //g
- entsorgt alles bis zum letzten ": " einer Zeile. Bis zum ersten geht auch irgendwie, aber egal. Fliegen halt Zitateinleitungen raus.
- /http/ d
- entsorgt Zeilen mit urls
- /den Raum/ d
- entsorgt Systemmeldungen
- /(200/ d
- entsorgt auch Systemmeldungen
Backups
Meine Datenplatte back ich mit folgendem ~/.rsync/backup.sh up:
#!/bin/sh exc=/home/leo/.rsync/exclude backdir=/media/backup/backup/ sudo sh -c " rsync -ave --delete --delete-excluded --exclude-from=$exc / $backdir ; touch $backdir/BACKUP "
~/.rsync/exclude sieht so aus:
- /dev/ - /proc/ - /sys/ - lost+found/ - /media/* + /media/3660469e-83f2-4768-a073-9a42c19fea95/stuff - /media/3660469e-83f2-4768-a073-9a42c19fea95/stuff/video/bad - *.dv
ulimit
/etc/security/limits.conf
enthält einige limits, wie zB die max. Zahl an Prozessen, an die man unter Umständen auch ohne böse dos-Attacken stößt.
cobertura
Ein hilfreicher Link um einen ant-task für Codeabdeckung mit Cobertura zu erstellen.
Debian Packaging
- downloaded 0.9.4 from http://dl.sv.nongnu.org/releases/glob2/0.9.4/glob2-0.9.4.tar.gz
- downloaded 0.9.3 debian package source: apt-get source glob2
- that created glob2-0.9.3 directory. I've copied glob2-0.9.4.tar.gz into glob2-0.9.3 directory.
- then, uupdate -u glob2-0.9.4.tar.gz
- cd ../glob2-0.9.4, and then dpkg-buildpackage
- that failed with missing build dependencies, installed that with apt-get
- then dpkg-buildpackage failed on a patch, and later on a missing AUTHORS. Fixed patching problem and copied data/authors.txt to AUTHORS.
- then dpkg-buildpackage succeeds
Pidgin
Pidgin hat mich in letzter Zeit mächtig geärgert mit der Meldung XMPP Message Error Message delivery to li...@gmail.com failed: (Code 503). Da ich das Problem lange nicht gelöst habe und meistens nach einer halben Stunde googlen aufgab, hat mich dieses Problem in Summe sicher Stunden gekostet. Letztlich lösen konnte ich das Problem, indem ich den Benutzer aus meiner Liste mehrfach entfernte und wieder hinzufügte. Beim letzten, schließlich erfolgreichen Versuch ohne Spitznamen.
Unkategorisiertes
svn st
svnversion
svn info
svn log build.xml |less
svn st|grep "C "|awk '{print $2}'|xargs svn diff
svn st|grep "C "|awk '{print $2}'|xargs svn st

