Samstag, 15. September 2012

Color your df command

Working with the shell is good, right?!  It unleashes the power of your operating system and enables you to communicate and interact with the kernel to get informations managed by your system or to tell the system exactly what you want. One information i use quite frequent is how much disk space each file system has left using the df command.

This program shows you a summary on how much disk space you have available on each mounted file system and how much space in total can be used on each mounted file system.

The dfc (df color) command which can be downloaded from here  makes the output of df more colorful and more human readable than the old df one.

df -sW

Once you have finished downloading the the file unpack it:

tar  xvfz dfc-3.0.0.tar.gz

and change into the directory dfc-3.0.0. To install dfc

(1) first create the "build "directory beneath:

(2) Using opensuse install patterns-openSUSE-devel_C_C++ and cmake by issuing

    zypper in patterns-openSUSE-devel_C_C++ cmake

(3) Change into the build directory and issue the following command instructing cmake to create the the make files and configure the source code:

    cmake .. -DPREFIX=/usr/local -DSYSSCONFDIR=/etc -DCMAKE_BUILD_TYPE=RELEASE

(4) Finally compile and install the program by typing:

    make && sudo make instal

(5) If you need Manpages. And i suggest you install them as root user copy the man files from the directory  you unpacked to /usr/local/share/man/man1/ and change the permissions of the dfc.1 file to 755.

    cp /home/hansel/playground/dfc3.0.0/man/dfc.1 /usr/local/man/man1/dfc.1
    chown root:root /usr/local/man/man1/dfc.1 && chmod 755 /usr/local/man/man1/dfc.1

To finally replace the dfc command with the one from the coreutils package you can use an alias. Setting:

    alias df='dfc -sW'

will give you an output like in the picture. Note that the -h option no longer gives you the so called human readable since it is human readable already but does show you the help for dfc. The nice thing is that dfc can actually determine cgroups and so called kernel pseudo file systems which are created by the kernel itself when the system boots up and does'nt show them. To show all File systems including cgroups and kernel pseudo filesystms you can use the -aoption. Also you are able to filter the file system types. For example -t ext4.vfat,ntfs only shows the disk statistics for those particular file systems.

Options:

-h  help
-s  shows a summary and sums up all values used in by the filter
-W displays the full text path of both the mount points and the device files used by the devices
-a show information about all (psuedo file systems included) file systems
-t  filter the output by file system

Also i will build a rpm which unfortunately i am not allowed to provide to due the authors strict copyright. Maybe i can post or link to the spec file.

Donnerstag, 13. September 2012

Getting frozenbyte games to run in opensuse 12.2

For those of you who running opensuse 12.2 and have bought the humble frozenbyte bundle this is a short instruction how you are able to run these games.

Basics:
(1) Install the game in $HOME/trine for example. You have to make sure that the installer is marked executable.  (In fact i will use trine here as my example for this short guide but it works for all other frozenbyte games as well.)

(2) After installing the game go to the destination folder and copy your lib32 folder to lib32_bak
and create a new lib32 folder using mkdir. Replace all libraries in lib32 folder with the one installed
by zypper/yast. Usually these libraries are found in /usr/lib/ and /lib according to FHS and LSB.

    a) If you cannot find a library try to install them natively with zypper and copy them from there
       original places into the lib32 directory.
    b) If  a library is called /usr/lib/libboost_regex.so.1.49.0 but in lib32 libboost_regex.so.1.35.0
       is required just copy /usr/lib/libboost_regex.so.1.49.0 to lib32/libboost_regex.so.1.35.0 in the trine
       install folder.

Most of the addidional libraries can be found in the addidional opensuse repositories. Only libNxCharacter.so, libNxCooking.so, libPhysXCore.so and libPhysXLoader.so.1 are leaved as original. These are the Nvidia PhysX libraries.   

Setting LD_LIBRARY_PATH="/usr/bin:/lib/$HOME/trine/lib32" should also work but causes the game to crash. Also you may want to create symbolic links to these particular libraries instead  of copying them. But i didn't trie this out.

Trine does not save games by default. To get this working you must delete $HOME/.frozenbyte/trine/profile and replace this directory with the one you find in the games destination path which you have had chosen when you issued the installer.

When you start the game do not use the launcher. Just start the game by executing trine-bin32. If you need to make changes use the .frozenbyte/trine/configs/options.txt and configure this file.

To install the games globally i recommend you moving the game folder to /usr/local/games and create the following startscript in /usr/local/bin:

#!/bin/bash
/home/l1zard/bin/trine/trine-bin32

exit 0


For survivor you need a different script:

#!/bin/bash
cd /usr/local/games/survivor
./survivor-bin

exit 0


I don't know why is that

If you want to debug more missing or failed libraries you can issue strace -o trace.log -f -e trace=open,read trine.

What works: Starting and Playing the game.
What does not work: Some Pictures are not rendered and therefore are not shown in sequences.

Freitag, 7. September 2012

Imho Mein erster Eindruck von opensuse 12.2

Alte - und neue Ärgernisse:

Bei der Installation stolpert der Yast Installationsassistent erst einmal wie üblich über meine externe Festplatte
und möchte die auch gerne formatieren statt mein bisheriges Festplattensetup automatisch einzulesen. Gut das war bei vorherigen Versionen auch schon so. Das dann jedoch, nachdem ich dies wie üblich im erweiterten Partitionssetup geändert und entsprechende Mountpunkte für externe Festplatten gesetzt habe, über Softwareauswahl steht "Zugriff auf /media/Pladde1" nicht möglich macht mir das Angst und ich entferne vorsorglich alle externen Festplatten  und USB Sticks. Anschleißend starte ich den Installer noch einmal.

Dabei stelle ich fest dass es keinerlei Setup Möglichkeiten mehr für den Bootmanager gibt. Die eigentliche Installation verläuft dann wie immer so schnell oder so langsam wie immer. Je nachdem ob man mit oder ohne Abbilder installiert. 

Nach der Installation versuche ich die Softwareauswahl anzupassen. Die meiner Meinung nach in der Softwarevorauswahl angewählten überflüssigen Spiele werden deinstalliert. Am Yast2 scheint sich so gut wie nichts geändert zu haben. Und das Gtk-Frontend schmiert mir auch erst einmal ab. Der Fehler lässt sich übrigens reproduzieren und tritt immer dann auf wenn ich meine Software anpassen möchte und mich das Programm darauf aufmerksam macht, dass für eine Aktion weitere Pakete gelöscht bzw. hinzugefügt werden müssen. Neu ist der Fehler auch nicht. Trat er doch zwischenzeitlich nach einem Patch bereits in den Vorgänger-Versionen 11.2 und 12.1 auf. Fenster die vom Yast2 aus aufgerufen werden, werden genau wie in der Vorgängerversion nicht in der vollen Größe geöffnet. Immerhin habe ich jetzt die Möglichkeit diese mit der Maus in die rechte Größe zu zerren, was ich als störend bei der Systemadministration empfinde. So bleibt mir als Workaround vorerst nichts anderes übrig, als auf das Qt-Frontend auszuweichen. Ich deinstalliere yast2-gnome über den Konsolenbefehl und installiere stattdessen yast2-kde4. Dieses Frontend wurde jedoch seit meinem Einsteig in SuSE (damals hieß das noch so)  9.0 kaum verbessert und bei der Softwareauswahl dauern Konfliktlösungen nachwievor unnötig lange und ist meiner bescheidenen Meinung nach lange nicht so komfortabel. Aber das mag auch Geschmackssache sein.

Neues- und Bewährtes

Opensuse  dürfte mit zu den "Early Adoptern" der Software eines gewissen Herrn Poettering gehören. Dessen Systemd mit Journal nun in Version 44 SystemV Init vollständig ersetzt hat. Was nicht so unproblematisch ist wie ich zunächst gedacht hat. In den Releasenotes wird zudem ausdrücklich darauf hingewisen dass System V Init nicht mehr unterstützt wird. Was mich doch ein wenig verwirrt, denn angeblich sollte es doch Abwärtskompatibel sein.

Für den Bootvorgang wird nun Grub 2.0 mit Plymouth eingesetzt, was das den Bootprozess nun wie ein anderes Betriebssystem aus Redmond ausschauen lässt. Ich empfinde das als unnötige Spielerei, da ich beim Booten gerne sehe, was passiert. Zumal ich auch gar nicht so oft boote. Das Yast2 Modul zur Konfiguration von Grub2 wirkt wie mit der heißen Nadel gestrickt und bietet leider keinen Passwortschutz für denselben an. Kein Problem denke ich, wechsele ich auf Grub Legacy und nutze das dort bewährte Tool grub-md5crypt. Ein Wechsel auf dieses Bootsystem führte bei mir allerdings dazu dass das System gar nicht mehr hochkam und den Grub mittels Rescuesystem reparieren  gestaltet sich mit vollverschlüsselten Festplatten doch als schwierig. Um Grub2 besser einzurichten hat Community Member
jdmcdaniel3 das Script grub2cmd geschrieben.. 
Cryptoloop wird ebenfalls als obsolet erklärt und nicht mehr verwendet. Was auch nachzuvollziehen
ist, da es einige bekannte Schwachstellen aufweist.. Wer im übrigen die Mountpunkte seines Usbsticks
sucht findet diese nun unter /run/media/$USER/$LABEL. Hier werden beim Mounten sogenannte Cgroups verwendet um die Sicherheit für vom User angeschlossene USB-Sticks zu erhöhen. Ein Link nach /media zu setzen bringt hier nichts. Da hilft nur die .bashrc anzupassen und die Variable CDPATH=/var/run/media/$USER zu setzen um sich die Tipparbeit zu sparen.

Zypper sieht jetzt schöner aus mit dem Paket zypper-aptitude nun auch komplett kompatibel mit Debians aptitude. Das bedeutde dass sich die komplette Softwareverwaltung nun mit aptitude bewerkstelligen
lässt. Das teste ich auch gleich aus und aptittude search zypper zeigt mir die installierten Pakete in der bekannten "aptitude-Formatierung". Damit zeigen die Entwickler dass auch opensuse schon seit längerem eine schnelle und brauchbare Paketverwaltung besitzt. 

Die Repositorystruktur wurde verändert. So findet man neben updates auch ein extra Verzeichnis für updates-nonoss. Was meines erachtens nur konsequent ist wenn man diese Unterscheidung schon auch im Hauptdistributionsverzeichnis macht. Allerdings will mir nicht in den Kopf was der Gnu(!) Debugger, auch bekannt als ddd in non-free zu suchen hat. Und warum wird autoconf und automake in die Standardauswahl mit einbezogen. Da ich auf Sicherheit setze werden diese Tools erst einmal entfernt. Genauso sinnbefreit finde ich auch die Auswahl von fortune. Dieses Programm erfüllt nun wirklich keinen sinnvollen Zweck. Hier wäre ein Gremium wünschenswert was darüber entscheidet welche Software in die Standardauswahl reingehört und welche nicht wie das von anderen Distributionen bereits gemacht wird.
Fazit:
Die vom Community Manager  Jos Poortvielt angekündigte stabilste Opensuse aller Zeiten bleibt leider aus. In einer als Release markierten Distribution dürfen wichtige Programme nicht mehr reproduzierbar abstürzen. Schon gar nicht wenn sie zum Kern der Distribution als solches gehören. Den User ohne zu fragen auf Grub2 umzuschwenken finde ich fahrlässig. Hier wäre eine Auswahlmenü für den Bootloader sicher hilfreich. Bleibt zu hoffen dass die gröbsten und ärgerlichsten Fehler so schnell wie möglich behoben werden und dann in den nächsten Wochen endlich ein wirklich stabiles Endprodukt abliefert wird. Einige Patches sind auch schon da.