kdelibs 3.5.10 in einem LFS kompilieren

Kategorie Linux 01.07.2009    Kategorie Linux Linux    Tags kde, lfs, linux    Kommentare 1 Kommentar

Ich baue derzeit in einer VirtualBox-VM ein Linux From Scratch auf. Zum Einen zum Lernen, zum andern möchte ich dort ein KDE 3.5.10 bauen. Solch eine VM ist leicht zu sichern. KDE 3.5 war toll, hat also irgendwo auch nostalgische Gründe. Wink

Jedenfalls kommt es beim Bau der kdelibs zu einem Error während make. Es hat mich einige Zeit gekostet, einen Fix in der Mailing Liste für das Problem zu finden, daher möchte ich das hier mal dokumentieren. Diese Lösung stammt von Petr Ovtchenkov.

Erstmal der Fehler:

/bin/sh ../../libtool --silent --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../dcop -I../../kdecore -I../../kio/kssl -I../../kjs -I../.. -I./.. -I../../kdecore/network -I./../kssl -I../kssl -I./../../interfaces -I../../dcop -I../../libltdl -I../../kdefx -I../../kdecore -I../../kdecore -I../../kdecore/network -I../../kdeui -I../../kio -I../../kio/kio -I../../kio/kfile -I../.. -I/opt/qt/include -I. -I/opt/kde-3.5.10/include -D_LARGEFILE64_SOURCE -DQT_THREAD_SUPPORT  -D_REENTRANT  -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -DNDEBUG -DNO_DEBUG -O2 -Wformat-security -Wmissing-format-attribute -Wno-non-virtual-dtor -fno-exceptions -fno-check-new -fno-common  -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION  -c -o libksycoca_la.all_cpp.lo libksycoca_la.all_cpp.cpp
In file included from /usr/include/asm/fcntl.h:1,
                  from /usr/include/linux/fcntl.h:4,
                  from /usr/include/linux/inotify.h:11,
                  from kdirwatch.cpp:74,
                  from libksycoca_la.all_cpp.cpp:2:
/usr/include/asm-generic/fcntl.h:117: error: redefinition of 'struct flock'
/usr/include/bits/fcntl.h:145: error: previous definition of 'struct flock'
/usr/include/asm-generic/fcntl.h:140: error: redefinition of 'struct flock64'
/usr/include/bits/fcntl.h:160: error: previous definition of 'struct flock64'

Die Lösung ist folgende: Nach dem configure führt man folgendes sed-Kommando aus:

sed -i -e 's|linux/inotify|sys/inotify|' \
       -e '/^static inline int inotify_init/,/^}/d' \
       -e '/^static inline int inotify_add_watch/,/^}/d' \
       -e '/^static inline int inotify_rm_watch/,/^}/d' kio/kio/kdirwatch.cpp

Danach gehts wie gewohnt mit make weiter.

Beim Paket kdepim siehts genauso aus. Auch hier wird nach dem configure folgendes ausgeführt:

sed -i "s@ \*/@&\n#define HAVE_FOPENCOOKIE@" libkdenetwork/libgpgme-copy/{assuan,gpgme}/funopen.c
sed -i -e 's|linux/inotify|sys/inotify|' \
       -e '/^static inline int inotify_init/,/^}/d' \
       -e '/^static inline int inotify_add_watch/,/^}/d' \
       -e '/^static inline int inotify_rm_watch/,/^}/d' kmail/editorwatcher.cpp

Danach sollte das Kompilieren funktionieren.

Kendoo: Multisuche erweitert um Fettdruck


Ich habe ein paar Änderungen an der Kendoo Multisuche vorgenommen, die da wären:

- In der Ergebnisliste werden nun Suchbegriffe fett hervorgehoben

- Die Farben sind etwas leichter, das verbessert den Kontrast auf bestimmten TFTs

- Die Suche wird nun bei Microsofts neuer Suchmaschine Bing durchgeführt. Nun, unter der Haube ist das das gleiche, da Bing intern praktisch nur Live Search 2.0 ist. Das Kind hat nur einen neuen Namen, mehr eigentlich nicht.

Blog ist wieder reines Blog


Ich hatte zwischenzeitlich dem Blog hier viele weitere Funktionen eingebaut. Da diese aber nun auf kendoo.net ausgelagert sind, habe ich den Quellcode aufgeräumt und aus dem Blog wieder ein reines Blog gemacht. Ich hoffe, es funktioniert noch alles so, wie es auch funktionieren soll. Wink

Die alten Links leiten nun auf die entsprechenden Dienste bei kendoo.net weiter. Von daher sollte das kein Problem darstellen.

Der Quellcode ist auch einsehbar unter https://secure.bheil.net/b3/.

Ich hatte auch überlegt, das eigene Blog mit etwas anderem auszutauschen, z.B. Wordpress oder das auch auf Django basierende byteflow. Beides sehr gute Blog-Engines. Allerdings ist byteflow zu "überladen" für mein kleines Blog und hat viele Features, die ich nicht brauche. Außerdem gefiel mir nicht, dass soviel Javascript Einsatz findet. Zumindest nicht in einem Blog. Daher fiel meine Wahl darauf, doch mein eigenes System zu entschlacken und hier weiter zu verwenden. Das ist zwar recht einfach gehalten, aber läuft nun seit über einem Jahr ziemlich gut.

Firefox-Addon-Collections


Mozilla hat ein tolles neues Feature auf ihren Addon-Seiten eingebaut: Collections. Das sind definierte Sammlungen von Addons. Da sich mit der Zeit da eine recht umfangreiche Liste anhäuft, ist es genial, diese auch an einer Stelle verwalten zu können.

Ich habe mir eine Liste erstellt unter https://addons.mozilla.org/de/firefox/collection/bheil. Es ist eine sehr umfangreiche Liste, also nicht erschrecken.

Wichtig sind vor allem die Addons, die benutzt werden können, um Daten der lokalen Firefox-Installation mit einem eigenem Server abzugleichen. Beispielsweise XMarks oder ReminderFox. (Zumindest bis Mozilla Weave irgendwann mal fertig wird.)

Das einzige, was mir noch fehlt, wäre, alle diese Addons mit einem Mausklick installieren zu können.

Eclipse 3.4 Plugin Problem: “No repository found containing…”


Mit Eclipse 3.4 passierts bei mir eigentlich immer irgendwann, egal auf welchem System: irgendwann gehen keine Updates mehr. Auch installieren lässt sich nichts mehr. Mit anderen Worten. Die Update-Funktion bringt immer nur Fehler und scheint komplett hinüber.

Aber endlich gibts dafür einen Workaround, der alles wieder ins Lot bringt. Quelle: http://jars.de/java/eclipse-34-plugin-problem-no-repository-found-containing

In Kürze funktioniert das so:

1. Zuerst in Eclipse unter Software Updates -> Manage sites -> Export die bisherigen Repositories exportieren

2. Dann Eclipse beenden und Dateien mit folgendem Muster löschen: org.eclipse.equinox.p2.*.prefs. Diese liegen meist im Eclipse-Verzeichnis unter configuration/.settings.

Diese können aber auch, je nach Installationsort etc. an verschiedenen Stellen liegen. Am besten ist ein locate org.eclipse.equinox.p2.*.prefs, um die Dateien zu finden. (Vorher mit sudo updatedb die Datenbank erstmal aktualisieren. Wink )

Bei mir lagen sie unter /home/bheil/Software/eclipse/configuration/.settings/. Man beachte den Punkt vor settings: Das ist ein verstecktes Verzeichnis! Also versteckte Dateien anzeigen lassen, falls nötig.

3. Eclipse wieder starten, die vorher exportierten Repos wieder importieren und tada, das Update klappt wieder wie gewohnt.

An dieser Stelle ein dickes Danke an Markus Junginger für diesen Workaround. Kudooos. Wink

Nachtrag: Ach ja, falls Eclipse nach einem größeren Update nicht mehr starten will, erstmal Eclipse von der Shell mit "-clean" aufrufen!

Vorhang auf für kendoo.net

Kategorie Kendoo 25.04.2009    Kategorie Kendoo Kendoo    Tags kendoo    Kommentare 1 Kommentar

Kleine Vorgeschichte: Dieses Blog ist in Django geschrieben und war mein erstes größeres Django-Projekt. Damals ging es mir vor allem darum, Django und Python zu lernen. Mit der Zeit hatte ich das Blog um verschiedene Sachen erweitert, z.B. eine Möglichkeit, Bilder hochzuladen, Passwörter auszugeben usw.

Aber eigentlich hat sowas nichts in einem Blog zu suchen, denke ich, daher habe ich mich dazu entschlossen, eine neue Applikation zu schreiben, die solche Dienste anbietet.

Somit gebe ich - nicht ohne Stolz - die Seite kendoo.net bekannt (Trommelwirbel bitte Wink ), erreichbar unter (wer hätte es gedacht):

http://kendoo.net

Derzeit bietet Kendoo folgendes:

- Einen Feedreader. Der Feedreader ist ähnlich wie z.B. Google Reader, aber bei weitem nicht so komplex. Er ist genau das, was ich immer als Feedreader haben wollte, aber nirgends finden konnte.
Der Feedreader unterstützt die gängigen Formate RSS 2.0, Atom 1.0 und RSS 0.91. Die Feeds werden alle 30 Minuten automatisch abgeholt. Einträge können mit einer Markierung gekennzeichnet werden, um sie für später vorzumerken.

- Eine MultiSuche! Dieses Formular fragt gleichzeitig die drei größten Suchanbieter ab: Google, Yahoo! und Microsoft Live Search. Die Ergebnisse werden nicht wie bei einer Metasuchmaschine miteinander verschmolzen, sondern nebeneinander in einer Tabelle dargestellt. Meistens ist das Gesuchte schon unter den ersten Treffern und so ist eine gute Übersicht gegeben. Außerdem kann es auch mal interessant sein, die Ergebnisse der Suchmaschinen direkt gegenüber gestellt zu sehen.
(bitte Hinweis hierzu weiter unten beachten!)

- Den schon bekannten Bildertausch. Hier kann schnell und einfach ein Bild hochgeladen werden, welches dann einfach verlinkt oder in Foren eingebunden werden kann. Allerdings ist hierzu jetzt eine Anmeldung notwendig.

Und soweit noch Zufallspasswörter und Weiterleitungen (Redirects). Um eine Weiterleitung einzurichten, ist auch eine Anmeldung notwendig. Die Weiterleitung selbst klappt dann natürlich ohne.

Wie ersichtlich werden dürfte, hatte ich bei der Entwicklung kein Massenpublikum im Sinn, sondern weil das Dinge sind, die ich selbst verwenden möchte. Und was liegt da näher, als sich selbst an der Umsetzung zu versuchen? Allerdings denke - und hoffe - ich, dass auch andere daran ihre Freude haben könnten. Daher ist das eine öffentliche Seite und es steht jedem Besucher frei, die Dienste in Anspruch zu nehmen.

Noch ein wichtiger Hinweis zur MultiSuche: Da die Situation mit der Vorratsdatenspeicherung derzeit reichlich undurchsichtig ist, werden bei allen Anfragen die IP-Adresse, der Suchbegriff und das Datum gespeichert (wie das auch Google usw. machen). Ich gebe zu, ich weiß nicht, ob das notwendig ist, aber da mir die Feinheiten des juristischen Denkens gänzlich unverständlich sind und das eine Grauzone darstellt, habe ich mich dazu entschlossen, so etwas einzubauen. Diese Daten werden automatisch nach 6 Monaten gelöscht und auf keinen Fall weitergegeben, außer es geht um eine Straftat und der Staat klopft an meine Tür. Sollte das Kapitel Vorratsdatenspeicherung irgendwann mal von den Verantwortlichen aufgegeben werden, wird dieses "Feature" sofort entfernt.
Vielleicht kann ein Leser mit juristischem Verständnis mir hier weiterhelfen und mich über diese Sache aufklären. Aber da die Suchanfragen gegenüber den Suchmaschinen von der IP dieses Servers gestellt werden, denke ich, ist es wichtig zu wissen, woher die Anfrage ursprünglich kam, falls es mal zu einer rechtlich heiklen Situation kommen sollte.

Zum Ende möchte ich aber auch noch auf das Impressum verweisen. Ich biete die Seite an, wie sie ist, ohne Ansprüche auf Erreichbarkeit oder Datensicherheit zu gewähren. Natürlich werden keine Daten weitergegeben wie z.b. die Mail-Adressen, die bei einer Registrierung verwendet werden!

Weitere Ideen sind immer willkommen, da ich plane, das in Zukunft noch auszubauen. Also wenn Du eine Idee hast, zögere nicht, mich anzuschreiben (kontakt@bheil.net).

P.S. Da dann bald die Blog-Software selbst von allem Schnickschnack bereinigt ist, werde ich diese als Open Source verfügbar machen. Allerdings müssen die meisten Formatierung derzeit als richtiges HTML angegeben werden und so plane ich, einen Editor wie TinyMCE einzubinden. Aber davon später mehr ...

Python 2.6 DeprecationWarning


Soeben habe ich den Server auf Ubuntu 9.04 aktualisiert. Das lief astrein und alles funktioniert einwandfrei. Nur selbst installierte Python-Module musste ich "neu einbinden" (sprich: Symlinks neu setzen und fertig).

Aber da nun Python 2.6 die Standard-Python-Version ist und bei mir etliche Python-Skripte - selbst geschriebene und fremde - in Cron Jobs laufen, quillt mein Posteingang wegen Mails aus eben diesen Cron Jobs über. Und alle handeln von DeprecationWarnings, also Warnungen, das Modul xy mit Python 3.0 wegfallen wird. Nun ist dies natürlich ungemein praktisch - für den eigenen Code. Aber keine dieser Warnungen kommt von meinem eigenen Code, sondern von fremden. Grmpf.

Bisher seh ich noch keine Möglichkeit, das sauber zu lösen, bis die entsprechenden Programmierer das angepasst haben und die neuen Versionen über die gängigen Pakete verfügbar werden. Bis dahin bleiben zwei "unsaubere Lösungen":

- Wird das Skript direkt über python aufgerufen, reicht es, den Parameter -Wignore anzugeben. Das ignoriert aber alle Warnungen!

- Bei schweren Fällen geht nur ein gepflegter Eingriff in das Python-Modul selbst. Da etliche Python-Skripte Warnungen wegen dem sets-Modul ausgeben, kann diese durch ein Editieren der Datei /usr/lib/python2.6/sets.py und dem Auskommentieren des Codes unterdrückt werden:

#import warnings
#warnings.warn("the sets module is deprecated", DeprecationWarning,
#                stacklevel=2)

Ist aber zugegeben keine gute Lösung. Aber bis das "Problem" in allen Skripten gelöst sein wird, wird es noch dauern. Bisher scheint das auch nur beim sets-Modul notwendig zu sein.

Kennt jemand eine bessere Lösung? Bin für jede Hilfe dankbar.

Eluveitie - Omnos


So Musik gibts viel zu selten:

http://www.youtube.com/watch?v=msRy4vcSX4k

Ubuntu 9.04 (Beta) auf Asus eeePC 900


Vor ein paar Tagen beschrieb ich die gelungene Installation vom Ubuntu Jaunty Netbook Remix auf meinem Asus eeePC 900. Nachdem ich nun einige Zeit damit gearbeitet habe, habe ich mich heute dazu entschlossen, wieder ein "normales", herkömmliches Ubuntu zu installieren. So nett der Netbook Remix mit der auf kleinen Bildschirmen optimierten Oberfläche auch ist - im Praxiseinsatz war es für mich eher hinderlich. Vielleicht bin ich die normale Oberfläche auch schon zu gewohnt, aber ich war unterm Strich bei der meisten Arbeit langsamer und es fühlte sich einfach nicht so "rund" an. Einen wirklich rationalen Grund gibt es wohl nicht - aber mit dem Standard-Gnome-Desktop (mit Anpassungen) komme ich einfach besser zurecht.

Die Installation der neuesten Version funktioniert immer noch genauso, wie im Artikel zu Ubuntu Hardy beschrieben. Allerdings - wie auch schon beim Netbook Remix-Test erwähnt - funktionieren die meisten Dinge out-of-the-box, bei denen zuvor manuell nachgebessert werden musste.

Zuerst muss ein USB-Stick zur Installation vorbereitet werden. Wer ein Ubuntu Intrepid 8.10-System zur Verfügung hat, kann einfach das Programm usb-creator verwenden. Das erledigt die gesamte Einrichtung des Sticks vollautomatisch. Sehr feines Ding!
Andere Wege sind im deutschen Wiki beschrieben.

Die Installation selbst verläuft wie gewohnt. Es empfiehlt sich allerdings, schon ext4 als Dateisystem zu verwenden: Die Performance ist spürbar besser als bei ext3!

Nach der Installation wird ein nicht-freier Madwifi-Treiber für WLAN angeboten. Ich habe diesen aber nicht installiert, da das WLAN sofort fehlerfrei funktionierte.

Das funktioniert alles:
- Funktionstasten (bis auf die fürs WLAN Fn+F2, da passiert nichts)
- WLAN
- Sound
- Webcam

Nicht getestet habe ich das Mikrophon, da ich es eh nicht verwende.

Die Compiz-Einstellung, damit Fenster auch über den Rand des Monitors geschoben werden können, empfiehlt sich weiterhin:

sudo gconftool-2 --set /apps/compiz/plugins/move/allscreens/options/constrain_y --type bool 0

Die Prozessortaktung geht nachwievor nicht automatisch, da das entsprechende Kernel-Modul fehlt. Die Installation verläuft exakt wie im alten Artikel beschrieben. Ebenso habe ich auch die dort beschriebenen Optimierungen vorgenommen, um das Swappen z.b. so weit wie möglich zu unterbinden.

Allerdings sind diese Anpassungen optional, so dass durchaus gesagt werden kann, dass Ubuntu 9.04 reibungslos auf dem Asus eeePC 900 funktioniert.

Abwrackprämie unverschlüsselt?


Da ich überzeugter Nicht-Autofahrer bin, habe ich nur am Rande mitbekommen, dass die Anträge zur Abwrackprämie online gestellt werden müssen. "Die Behörden gehen mit der Zeit, recht so" dachte ich. Aber anscheinend ist das Formular nur unverschlüsselt erreichbar: http://www.ump.bafa.de/ Shocked

Da werden private Daten abgefragt und dann einfach so verschickt, und das, obwohl der Großteil der Nutzer wohl ziemlich unwissend in Computerfragen sein dürfte und sich darüber bestimmt nicht im Klaren ist. Das ist ja schon grob fahrlässig von den Machern, sowas nicht ausschließlich über https anzubieten.

Das ist kein Vorzeige-Beispiel von gelungenem eGovernment.