Schlagwort-Archive: Gentoo

Hinweis zum Gentoo-Update auf www-apps/owncloud-5.0.12

Kurzer Hinweis zu letzten Owncloud-Update unter Gentoo: Durch eine nicht ganz performante Funktion scheint das ebuild in der Install-Phase zu hängen. Auf einem Atom-System dauerte es 2 Stunden bis Portage den Vorgang abschließen konnte, auf einem i7 mit RAID 15 Minuten, also nicht ungeduldig werden und nach Anstoßen des Updates doch erst mal eine (Familien)Pizza essen gehen. Der Installationsvorgang kann mit lsof auf den Temp-Ordner (/var/tmp/portage/) beobachtet werden.

top: write error

Nutzt man unter Linux „top“ kombiniert mit einer Pipe kommt es in einigen Fällen derzeit zu einem Fehler, z.B.

top -bn1 | head -n 10
top: write error

Schuld ist offenbar ein Bug in einer top-Version. Der Fehler tritt auf wenn die Pipe vor top beendet wird, also z.B. bei „head“ – in diesem Fall erhält top ein SIGPIPE und wirft die Meldung. Betroffen ist 3.3.6 (Gentoo) und einige 3.3.7 (Fedora). Unter Fedora sollte >=3.3.7-6.fc19 aus Stable Abhilfe schaffen, unter Gentoo ist der Fehler auch in der aktuellen Testing (3.3.8) vorhanden, hier muss manuell der zugehörige 1-Zeilen-Patch aus dem Upstream eingespielt werden. Gentoo-Bug mit genauerer Beschreibung existiert jetzt, ich vermute mal der Einzeiler sollte es recht schnell schaffen.

—Update—

Status: CONFIRMED -> RESOLVED
Resolution: FIXED

*procps-3.3.8-r1 (25 Oct 2013)

25 Oct 2013; Lars Wendler +procps-3.3.8-r1.ebuild:
Fixed write error when using top with pipes. Thanks to Florian Knodt for reporting this in bug #485952.

Linux LVM: „Hängende“ Snapshots entfernen

Was ein Murks: Einer meiner Server brauchte dank Problem des Festplattentreibers einen Neustart. Nach dem Boot fiel mir auf, dass im LVM-System einige alte Snapshots von Systemtests liegen geblieben sind. Schnell mal aufräumen – oder auch nicht, denn dummerweise wollte LVM da nicht mitspielen. Erst mal eine kleine Übersicht des Systems:

root@rescue:~# pvs
PV VG Fmt Attr PSize PFree
/dev/md2 storage lvm2 a-- 2.70t 1.57t
root@rescue:~# vgs
VG #PV #LV #SN Attr VSize VFree
storage 1 32 9 wz--n- 2.70t 1.57t
root@rescue:~# lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
[...]
test-www4-boot storage swi-a-s- 512.00m www4-boot 0.10
test-www4-data storage swi-a-s- 70.00g www4-data 38.39
test-www4-root storage swi-a-s- 20.00g www4-root 63.09
test2-www4-boot storage swi-a-s- 512.00m www4-boot 0.10
test2-www4-data storage swi-a-s- 70.00g www4-data 37.31
test2-www4-root storage swi-a-s- 20.00g www4-root 59.58
www4-boot storage owi-a-s- 512.00m
www4-data storage owi-a-s- 73.24g
www4-root storage owi-a-s- 20.00g
[...]

Man sieht die mit „test“ beginnenden Snapshots welche entfernt werden sollen. Üblicherweise reicht hier ein lvremove welches folgende Ausgabe brachte:

Do you really want to remove active logical volume test-www4-root? [y/n]: y
/sbin/dmeventd: stat failed: No such file or directory
/sbin/dmeventd: stat failed: No such file or directory
Unable to deactivate open storage-test--www4--root-cow (253:2)
Failed to resume test-www4-root.
libdevmapper exiting with 3 device(s) still suspended.

Ab diesem Punkt ist die LVM-Verwaltung faktisch tot. Kommandos wie z.B. lvs hängen sich auf und geben keine Ausgabe. Erst nach einem Reboot ist die Verwaltung wieder möglich, dann taucht der soeben gelöschte test-www4-root wieder auf, ist allerdings kein Snapshot mehr und lässt sich nun auch fehlerfrei entfernen. Keine schöne Lösung, denn ich habe viele Snapshots und dazu eine Abneigung gegen Reboots. Mit strace findet man im hängenden Zustand folgendes:

ioctl(3, DM_TABLE_STATUS, 0x81b5a40) = 0
stat64("/dev/storage/www4-root", {st_mode=S_IFBLK|S_ISVTX|0660, st_rdev=makedev(253, 1), ...}) = 0
open("/dev/storage/www4-root", O_RDONLY|O_DIRECT|O_LARGEFILE|O_NOATIME) = 4
fstat64(4, {st_mode=S_IFBLK|S_ISVTX|0660, st_rdev=makedev(253, 1), ...}) = 0
open("/dev/storage/www4-root", O_RDONLY|O_LARGEFILE) = 5
ioctl(5, BLKGETSIZE64, 0xffcc33a8) = 0
close(5) = 0
close(4) = 0
open("/dev/storage/www4-root", O_RDONLY|O_LARGEFILE) = 4
ioctl(4, BLKGETSIZE64, 0xffcc3378) = 0
close(4) = 0
stat64("/dev/storage/www4-root", {st_mode=S_IFBLK|S_ISVTX|0660, st_rdev=makedev(253, 1), ...}) = 0
open("/dev/storage/www4-root", O_RDONLY|O_DIRECT|O_LARGEFILE|O_NOATIME) = 4
fstat64(4, {st_mode=S_IFBLK|S_ISVTX|0660, st_rdev=makedev(253, 1), ...}) = 0
ioctl(4, BLKBSZGET, 0x8174458) = 0
_llseek(4, 21474770944, [21474770944], SEEK_SET) = 0
read(4,

Der Auslöser scheint also die Snapshotquelle zu sein, nicht der Snapshot selbst. Eine Suche brachte mich zur Debian-ML auf der das Problem beschieben wird – dankenswerterweise funktionierte der Workarround auch in meiner Situation:

– Der lvremove-Befehl wird in einer Shell abgesetzt und hängt sich auf
– Auf einer zweiten Shell setzt man die Snapshotquelle manuell mit folgenden Befehl wieder in Gang: „dmsetup resume /dev/storage/www4.root“
– Die erste Shell reagiert wieder, der Snapshot sollte verschwunden sein
– Ggf. zurückgebliebene Laufwerksleichen werden mit „dmsetup remove /dev/storage/xxx“ entfernt

Gentoo: net-misc/bridge-utils lässt sich nicht installieren

Dafuq? Während einer Gentoo-Installation ließ sich plötzlich eine 802.1d Ethernet-Bridge nicht mehr korrekt ansprechen. Ein „brctl“ zeigt lediglich „Command not found“. Kann doch nicht sein – net-misc/bridge-utils habe ich eben noch emerged und es gab keine Fehler. Ein „equery files bridge-utils“ zeigt ebenfalls seltsames:

equery files bridge-utils
* Searching for bridge-utils ...
* Contents of net-misc/bridge-utils-1.4:
/usr
/usr/share
/usr/share/doc
/usr/share/doc/bridge-utils-1.4
/usr/share/doc/bridge-utils-1.4/AUTHORS.bz2
/usr/share/doc/bridge-utils-1.4/ChangeLog.bz2
/usr/share/doc/bridge-utils-1.4/FAQ.bz2
/usr/share/doc/bridge-utils-1.4/FIREWALL.bz2
/usr/share/doc/bridge-utils-1.4/HOWTO.bz2
/usr/share/doc/bridge-utils-1.4/PROJECTS.bz2
/usr/share/doc/bridge-utils-1.4/README.bz2
/usr/share/doc/bridge-utils-1.4/RPM-GPG-KEY.bz2
/usr/share/doc/bridge-utils-1.4/SMPNOTES.bz2
/usr/share/doc/bridge-utils-1.4/THANKS.bz2
/usr/share/doc/bridge-utils-1.4/TODO.bz2
/usr/share/doc/bridge-utils-1.4/WISHLIST.bz2
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/brctl.8.bz2

Die Binary fehlt?!

Ein neues emerge unter Aufsicht zeigt auch warum:

[...]
error: field 'ip6' has incomplete type
make[1]: *** [libbridge_if.o] Error 1
make[1]: *** [libbridge_init.o] Error 1
make[1]: *** [libbridge_devif.o] Error 1
[...]

Das kompilieren bricht wegen modifizierter Header-Dateien bei Kerneln => 3.8 ab, das ebuild registriert dies jedoch nicht und meldet eine erfolgreiche Installation. Die Lösung sollte inzwischen bereits verfügbar sein: Mit der seit einigen Tagen stabilen Version net-misc/bridge-utils-1.5 sollte das Problem behoben sein.

Auf der Suche nach den inodes

So ein Linux-Server mit ext4 ist nicht so schnell klein zu bekommen – ich schaffs aber natürlich trotzdem. Auf einem meiner App-Server verabschiedete sich übers Wochenende der Datenbankserver. Diagnose eindeutig: Platte voll, 0 Bype frei. Der Auslöser ist auch schnell ausgemacht – mangels logrotate haben sich über 8GB in /var/log angesammelt. Klare Sache – Logs löschen, Dienste neustarten undnichts. Platte voll. Dafuq? Am Platz liegts nicht – dort sind die 8GB nun frei – ich vermute Böses…

# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/root 23G 14G 8.2G 62% /
# df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/root 1474560 1474560 0 100% /

Treffer versenkt – die Inodes sind voll. Aber warum? Nach kurzem Gegoogle gehe ich davon aus, dass meist eine Datei = ein Inode ist, also wird die Bash-Keule ausgepackt:

(for i in `find / -xdev -type d 2>/dev/null` ;do (echo -n `ls -1a "$i" | grep -vP "^(.|..)$" |wc -l` && echo " - $i") ;done) | sort -n

Dieser Code erzeugt eine Liste aller Ordner auf dem Device der Root-Partition – aufsteigend nach der Anzahl der Dateien sortiert. In meinem Fall ist der Schuldige relativ eindeutig:

[...]
1460 - /usr/share/man/man1
1620 - /usr/portage/metadata/cache/dev-perl
1620 - /usr/portage/metadata/md5-cache/dev-perl
1692 - /usr/portage/metadata/glsa
4554 - /usr/share/man/man3
972513 - /var/nagios/home/.maildir/new

Ich sollte mal ein paar Mails löschen -Oder auch nicht, denn…

rm *
-bash: /bin/rm: Argument list too long

also muss auch hier getrickst werden:
find ./ -exec rm {} +

Gentoo-Look & Feel für die Archlinux-Bash

Auch wenn Gentoo eigentlich mein Haputsystem ist: Auf Netbooks o.Ä. macht das ganze recht wenig Spaß, daher bin ich vor einiger Zeit über Archlinux gestolpert. Auch, wenn die Stabilität und Flexibilität nicht immer an meine Gentoo-Erfahrungen heran kommen, so kann man sich dank sehr großem Binärrepository und den einfach zu erstellenden PKGBUILDS (ähnlich ebuilds) schnell helfen.

Eins, was mir jedoch gewaltig auf den Keks ging war die Bash-Konfiguration: Viele der „Komfortfunktionen“ wie Farbschemata, Historysuche o.Ä. sind unter Archlinux nicht vorhanden oder haben andere Tastenkombinationen – Abhilfe kann wie folgt erfolgen:

Als erstes muss die .bashrc dran glauben – hier sind die meisten Einstellungen drin. Am einfachsten geht das über das Paket aur/gentoo-bashrc, welches unter /usr/share/gentoo-bashrc/bashrc eine Kopie der Gentoo-Konfiguration anlegt. Nach Prüfung kann man diese Datei als persönliche Einstellungsdatei unter /home//.bashrc bzw. /root/.bashrc einspielen. Wichtig: Nicht die Systemweite Datei überschreiben – einerseits würde dies einige Archlinux-spezifische Einstellungen überschreiben und andererseits würde der Updater die Datei nicht mit z.B. neuen Bashcompletion-Einstellungen aktualisieren können.

Was fehlt ist der von mir häufig genutzte Schnellzugriff auf die Bash-History. Damit meine ich, dass wenn ich z.B. „ls“ Tippe mit dem Tasten PgUp und PgDown durch die letzten Befehle, welche mit ls beginnen scrollen kann. Dies läuft über die Datei /etc/inputrc – diese habe ich vollständig durch das Gentoo-Pendant ersetzt:

# /etc/inputrc: initialization file for readline
#
# For more information on how this file works, please see the
# INITIALIZATION FILE section of the readline(3) man page
#
# Quick dirty little note:
#  To get the key sequence for binding, you can abuse bash.
#  While running bash, hit CTRL+V, and then type the key sequence.
#  So, typing 'ALT + left arrow' in Konsole gets you back:
#    ^[[1;3D
#  The readline entry to make this skip back a word will then be:
#    "\e[1;3D" backward-word
#

# do not bell on tab-completion
#set bell-style none

set meta-flag on
set input-meta on
set convert-meta off
set output-meta on

# Completed names which are symbolic links to
# directories have a slash appended.
set mark-symlinked-directories on

$if mode=emacs

# for linux console and RH/Debian xterm
# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line
# map "page up" and "page down" to search history based on current cmdline
"\e[5~": history-search-backward
"\e[6~": history-search-forward
# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# gnome / others (escape + arrow key)
"\e[5C": forward-word
"\e[5D": backward-word
# konsole / xterm / rxvt (escape + arrow key)
"\e\e[C": forward-word
"\e\e[D": backward-word
# gnome / konsole / others (control + arrow key)
"\e[1;5C": forward-word
"\e[1;5D": backward-word
# aterm / eterm (control + arrow key)
"\eOc": forward-word
"\eOd": backward-word

# konsole (alt + arrow key)
"\e[1;3C": forward-word
"\e[1;3D": backward-word

$if term=rxvt
"\e[8~": end-of-line
$endif

# for non RH/Debian xterm, can't hurt for RH/Debian xterm
"\eOH": beginning-of-line
"\eOF": end-of-line

# for freebsd console
"\e[H": beginning-of-line
"\e[F": end-of-line
$endif

# fix Home and End for German users
"\e[7~": beginning-of-line
"\e[8~": end-of-line

Der ganz normale Gentoo-Wahnsinn

CD rein, booten, fertig – so einfach könnte das Leben sein wenn man nicht eine falsche Hardware erwischt. Derzeit bocken bei mir die Gentoo-Live-CDs auf einem Compaq/HP Evo N620C. Allein bin ich nicht, wie über 48 Kommentare im entsprechenden Bug zeigen. Auslöser ist ein Treiber für einen PATA-Controller. Gebraucht wird er nicht wirklich: Zum einen ist die Hardware eine VLB-Karte, also noch in der Ära vor PCI zu Hause, zum Andern kann der „Generic“-Treiber für PATA-Chipsätze die gesamte Funktion ebenfalls abdecken. Leider scheint das im Kernel-Team keinen zu interessieren: Auf der Kernel-ML ging bereits mehrmals der Request rund den Treiber zu entfernen, ohne Ergebnis. Bleibt mir nur bei jedem Boot die Kernelparameter zu ändern oder eine eigene DVD zu erstellen.

Gentoo: Kaputtes java_config reparieren

In letzter Zeit hat sich hier durch Python-Updates auf mehreren Rechner java_config zerlegt. Versuchte ein ebuild auf Java zuzugreifen oder startete man eine Java-Software brach das jeweilige Programm mein einer solchen Meldung ab:

Traceback (most recent call last):
File „/usr/bin/java-config-2“, line 8, in
from java_config_2 import __version__
ImportError: No module named java_config_2

Da python-updater und revdep-rebuild nichts fanden war Handarbeit gefragt, die Neuinstallation der folgenden Pakete sollte Abhilfe schaffen:

emerge -1 java-config java-config-wrapper

via GentooForum.de

Gnome, HAL und automatisches Mounten von USB-Sticks

Seit dem letzten Update hatte mein Gentoo/Gnome-System einen kleinen Schönheitsfehler: USB-Sticks wurden nicht mehr gemountet. Nach einigen erfolglosen Streifzügen durch die Nautilus- und gconf-Optionen sieß ich dann im Geek-Blog auf die Lösung des Problems: sys-apps/hal hat seit einigen Versionen ein neues USE-Flag „disk-partition“, welches standardmäßig inaktiv ist. Trägt man dieses ein und kompiliert HAL neu funktioniert das automatische Mounten wieder wie gewohnt.

Und es Synct doch… Windows Mobile und Linux endlich vereint

Lange hats gedauert, aber endlich funktioniert es: Mein WM6-PDA spricht Linux. Bisher beschränkte sich die Kommunikation auf die Massenspeicheremulation WM5orage. Zwar hatte ich öfter mal mit SyncML und Funambol getestet, allerdings waren die Ergebnisse für die Tonne: Anständige SyncML-Clients für Linux scheint es nicht zu geben und selbst die einfachsten Funktionen brachten Chaos: Doppelte Kontakte, verschwundene Adressen und die Geburtstage waren Kategorisch einen Tag später als angegeben. Nich wirklich brauchbar.

Heute habe ich das ganze nochmal mit RNDIS und SynCE versucht. Der erste Eindurck hatte mich doch etwas überrascht: Statt dem bekannten gewurschtel mit synce-serial-start und dccm läuft nun alles HotPlug per DBus und HAL. Ganz ohne Konfiguration tauchte das Tray-Icon auf, zeigte anstandslos die installierten Programme, Speicherplatz und Batteriestand – sogar ein ActiveSync ähnlicher Assistent zum Anlegen einer Gerätepartnerschaft tauchte auf.

Bei der Synchronisation etwas Handarbeit: Mit OpenSync sollte es zur KDE-PIM-Suite gehen. Zwar bin ich eigentlich Gnome-User, aber Kontact und Korganizer sind doch schon sehr ausgereift. Das Sync-Modul offenbar nicht – alle Termine und Aufgaben verschwanden, Kontakte mit Sonderzeichen bereiteten ganz neue Ansichten. Also Sync abgeschaltet, Backup rein und selbes nochmal mit Bauchschmerzen und Evolution. Evolution ist die Software, welche bei mir vor allem durch mangelnde Datenintegrität, Abstürze und einem Bedienkonzept aus der Steinzeit in Erinnerung ist. An der Bedienung hat sich nicht viel geäntert, aber technisch läuft erst mal alles: Keine Abstürze, OpenSync hält alles auf dem aktuellen Stand, keine Kollisionen und alle Daten scheinen so zu sein, wie ich sie haben möchte.

Auch, wenn die Bedienung nicht immer so einfach ist: Da ich meist am Handy arbeite stört mich das weniger. Um Termine zu Pflegen und ab und an einen Kontakt zu Editieren reicht es definitiv.

Edit: Offenbar zu früh gefreut. Auf einem zweiten PC fehlen plötzlich in Evolution Postadressen und Bilder :/