knasan

Linux and more

Archiv für die Kategorie “Ebuilds”

Portage Pflege für alle

Jeder Gentoo und Funtoo Benutzer wird es bestimmt kennen, egal ob ein Programm nur zum Test Installiert wurde oder die Keyword und USE Datei (kann auch ein Verzeichnis sein) bearbeitet wurde. Wenn das Programm nicht mehr Installiert ist liegen viele Leichen in diese Datei.

Verständlich das dort niemand Putzt da alles per Hand gemacht werden muss.

Dachte ich mir und habe mir hierfür kleine Helfer geschrieben, die diese Arbeit abnehmen. Anfangs gab es nur den „Portage Keyword Manager“, jetzt kam „Portage Useflag Manager“ hinzu.

Die Handhabung ist die selbe wie bei „portkeyman“ (Portage Keyword Manager) was nicht verwunderlich ist, denn dieser diente als Vorlage für „portuseman“ (Portage Use Manager).

Erstmalig habe ich meine genfoo-tools am 17.02.2013 veröffentlicht, das ich auch hier im Blog bekannt gegeben habe https://knasan.wordpress.com/2013/02/17/genfoo-tools-meine-portage-utils/

In diesem kleinen Video wird gezeigt wie einfach die Tools verwendet werden können und wie man zwischen File und Directory hin und her schalten kann, was Geschmackssache ist. Ich persönlich mag die Directory Variante.

Als erstes wird in das Verzeichnis /etc/portage gewechselt und gezeigt das die Datei package.use vorhanden ist und wie viele Einträge diese hat.

 root@turanga ~ # cd /etc/portage/
root@turanga portage # ls -l package.use
-rw——- 1 root root 3423 15. Aug 17:14 package.use
root@turanga portage # wc package.use
83 355 3423 package.use
root@turanga portage

Wie man hier sehen kann ist „package.use“ eine Datei und hat 83 Einträge.
Mit „portuseman“ kann man wesentlich zwei Operationen durchführen.

  • package.use aufräumen, also nicht Installierte Packete aus der Datei löschen.
  • package.use Datei nach Verzeichnis konvenieren oder anders herum.

Als erstes wird gezeigt wie man einfach nicht mehr Installierte packete aus portage putzt, hierfür muss „portuseman“ lediglich mit dem Parameter -d für delete aufgerufen werden. Aus Sicherheitsgründen werden diese Operationen nicht am System direkt gemacht sondern alles in /tmp gespeichert, übernehmen muss der Benutzer nach einer Kontrolle selbst.

root@turanga portage # portuseman -d
new packages.use is saved as File to: /tmp/package.use.new

Wie man hier schön erkennen kann wurde die neue package.use Datei nach /tmp/package.use.new gesichert. Möchte man diese Datei nach betrachten übernehmen so muss diese nach /etc/portage/ kopiert werden.

Vergleicht man nun die neue und alte Datei, wird man feststellen das alles was nicht Installiert war aus diese Datei gelöscht wurde.

root@turanga portage # mv /tmp/package.use.new ./package.use
root@turanga portage # wc package.use
69 273 2681 package.use

in meiner package.use waren also 14 Einträge die nicht mehr genutzt wurden.

Anfangs habe ich gesagt das ich die Directory Variante bevorzuge, deswegen werde ich jetzt erst einmal das eben vorhandene konvenieren, was man auch mit einem Schritt machen kann, nur zur Demonstration habe ich diesen schritt nicht gleich mit angegeben.

root@turanga portage # portuseman -o d -d
new package.use is saved as directory to: /tmp/package.use
root@turanga portage # mv package.use package.use.old

root@turanga portage # mv /tmp/package.use .          <- beachte den „punkt“
root@turanga portage # portuseman -o d -d
new package.use is saved as directory to: /tmp/package.use

root@turanga portage # mv package.use package.use.old
root@turanga portage # mv /tmp/package.use .          <- beachte den „punkt“
root@turanga portage # cd package.use/

root@turanga package.use # ls
app-accessibility app-office dev-lang gnome-base media-plugins net-fs sys-libs
app-admin app-portage dev-libs kde-base media-sound net-im virtual
app-arch app-text dev-qt mail-client media-video net-misc www-client
app-editors dev-db dev-util media-gfx net-analyzer net-proxy x11-terms
app-emulation dev-games games-sports media-libs net-dns sci-geosciences x11-wm

Nun sind im Verzeichnis „package.use“ Dateien mit Kategorien. Ich mag diese Variante da diese sehr übersichtlich ist und nicht einfach nur eine Datei zugemüllt wir.d. Sucht man ein bestimmtes Programm das man mit neuen USE-Flags emerge möchte, so schaut man einfach in die Kategorie-Datei rein. Aber wie gesagt das ist Geschmackssache und jeder muss dies für sich selbst entscheiden.

Portuseman ist ab sofort im genfoo-utils ebuild zu finden.

https://github.com/knasan/ebuilds/tree/master/app-portage/genfoo-tools

-Sandy

Advertisements

genfoo-tools, meine portage utils!

Ich hatte mal ein Script geschrieben das mir meine /etc/portage/package.keywords Datei in ein Verzeichnis Konvertierte. Es lag danach lange auf der Platte und schien in Vergessenheit zu geraten bis ich ein Beitrag auf gentooforum.de sah http://www.gentooforum.de/artikel/21118/packages-keywords-durchputzen-lassen-ist-das-m-glich.html?s=5bcd93f04f80b28ce377b28d287e352926658d62 .

Dort frage ein User nach, ob es denn möglich sei package.keywords zu putzen.
Ich wusste, da habe ich schon mal etwas geschrieben und schaute in meine Script Sammlung nach, „portkeyman“ (Portage Keyword Manger) gesucht und wieder gefunden.

Nun hatte ich zwei Möglichkeiten, das Script im Forum Posten und es erneut untergehen lassen oder doch lieber in Git verwalten. Ich beschloss mich, dieses Script auf mein Git zu legen, so das viele davon Profitieren können.

Nach kurzen Tests wurde mir klar, ich muss am Script noch etwas ändern. Ursprünglich war es eher als Hack gedacht um eine Lösung für mein damaliges Problem zu haben. Für eine Veröffentlichung war es noch nicht gut genug. So spendierte ich dieses Script eine kleine Hilfe und examples ein paar Fehlerkorrekturen und ab in Git.

Was mich noch störte, meine Kommentare die ich seit kurzem eingeführt habe wurden komplett Ignoriert. Also auch das noch schnell hinzugefügt.
Was auch lästig war, man musste immer angeben wo die packages.keywords liegt, deswegen habe gleich noch einen Default Path eingeführt. In der Regel liegt es ja immer unter /etc/portage/package.keywords als Datei oder Verzeichnis.

Hab das Script nun ein paar mal ausgeführt und es etwas einfacher, aber so dynamisch wie möglich umgeschrieben. Das Script erkennt nun ob man Root oder Normaler User ist und ändert den Logpath um nicht immer ein Logfile angeben zu müssen, was man aber natürlich noch kann.

Um es einfach unter Gentoo oder Funtoo Installieren zu können habe ich ein Ebuild „genfoo-tools“ geschrieben. Bevor ich jedoch noch mehr portage-utils Scripte Veröffentliche möchte ich portkeyman um ein paar weitere Funktionen erweitern. Hinzufügen und entfernen von Keywords um ein Beispiel zu nennen. Ich überlege auch, einen Parameter einzuführen der das nicht in /tmp speichert sondern die Änderungen sofort im System erledigt.

Ich merke schon dass das Script vieles Automatisieren könnte oder schon tut, was man lang händisch erledigt hat. Daher würde mir ein completion Script noch gefallen, habe bisher nur eines geschrieben und bin noch nicht ganz durchgestiegen wie das genau Funktioniert. Sobald das Script in einer Phase ist wo man sagen kann, es hat alles was man sich wünscht, werde ich mir completion noch einmal ansehen.

Wer mag, darf das Script gerne Testen und mir seine Ideen oder Kritik Schreiben, schließlich soll es unsere Arbeit erleichtern. Ich Antworte auf jeden Fall, auch wenn es mal etwas länger dauert. Also nicht ungeduldig werden 😉

Das Ebuild findet ihr hier: https://github.com/knasan/ebuilds/tree/master/app-portage/genfoo-tools
und das Script selbst hier: https://github.com/knasan/genfoo-tools

-Sandy

Nutze deinen RAM

Warum man Ram statt Festplatte verwendet liegt eigentlich auf der Hand.
Ram ist 1000% schneller als eine Festplatte, sogar eine SSD muss sich hier geschlagen geben. Deswegen wollte ich mir ansehen, ob und wie es Möglich ist, StuntRally im Ram zu Spielen.

Als erstes versuchte ich mich an einer chroot Umgebung, diese war mir am Schluss viel zu groß und wirklich sauber hatte es noch nicht funktioniert. Bis mir eine Idee kam.

Der Kernel hängt ein Virtuelles Dateisystem unter /dev/shm ein. Dieses Dateisystem ist nichts anderes als ein teil des Arbeitsspeichers.

Ich erstellt ein Verzeichnis new_home in /dev/shm also Normaler User. Kopierte .config/stuntrally, .local/share/games/stuntrally und .cache/stuntrally hinein.

In einem Terminal exportierte ich nun meine Home Variable

export HOME=/dev/shm/new_home

und startete das Spiel.

Mir ist sofort aufgefallen, dass das Game viel flüssiger läuft.

Aus diesem Grund habe ich einen wrapper geschrieben, der alle Daten von Suntrally nach /dev/shm/ Synchronisiert und beim beenden wieder nach sein Home.

Mein Ebuild habe ich ein neues USE-Flag spendiert das diesen Wrapper auf Wunsch Installiert.

Für alle die gerne diesen Wrapper verwenden möchten, aber kein Gentoo/Funtoo nutzen, hier das wrapper-script.

suntrally_wrapper

#!/bin/bash

#-------------------------------------------------------------------------------
# Author: Sandy Marko Knauer
# Email: knamarksan@gmail.com
# URL: https://knasan.wordpress.com/2013/02/09/nutze-deinen-ram/
# Description: StuntRally synchronizes files to StuntRally in memory to execute.
# Version: 0.0.1
# License: GNU GPL-v3
#-------------------------------------------------------------------------------

tmpfs=$(grep -c "/dev/shm" /proc/mounts)

new_home="/dev/shm/$USER"_new_home
old_home="$HOME"

if [ $tmpfs = "0" ]; then
echo "/tmp is not as a tmpfs filesystem"
exit
fi

stuntrally_cache=".cache/stuntrally/"
stuntrally_config=".config/stuntrally/"
stuntrally_local=".local/share/games/stuntrally/"

mkdir -p $new_home || exit
mkdir -p $new_home/$stuntrally_cache || exit
mkdir -p $new_home/$stuntrally_config || exit
mkdir -p $new_home/$stuntrally_local || exit

if [ -d $HOME/$stuntrally_cache ]; then
rsync -a --progress $HOME/$stuntrally_cache $new_home/$stuntrally_cache || exit
else
mkdir -p $HOME/$stuntrally_cache || exit
fi

if [ -d $HOME/$stuntrally_local ]; then
rsync -a --progress $HOME/$stuntrally_local $new_home/$stuntrally_local || exit
else
mkdir -p $HOME/$stuntrally_local || exit
fi

if [ -d $HOME/$stuntrally_config ]; then
rsync -a --progress $HOME/$stuntrally_config $new_home/$stuntrally_config || exit
else
mkdir -p $HOME/$stuntrally_config || exit
fi

export HOME=$new_home
/usr/bin/stuntrally

rsync -a $new_home/$stuntrally_local $old_home/$stuntrally_local --numeric-ids --progress --delete || ex>
rsync -a $new_home/$stuntrally_config $old_home/$stuntrally_config --numeric-ids --progress --delete || ex>
rsync -a $new_home/$stuntrally_cache $old_home/$stuntrally_cache --numeric-ids --progress --delete || ex>

rm -r $new_home

Hier nochmal ein direklink auf die Datei, da leider die Formatierung verloren geht. https://github.com/knasan/ebuilds/blob/master/games-sports/stuntrally/files/stuntrally_wrapper

StuntRally unterliegt der GNU/GPL-v3, deswegen habe ich mich auch für diese Lizenz entschieden.

-Sandy

Stuntrally Crash in Championship mode

Heute dachte ich mir ich teste Stuntrally Championship, eine Runde … Segmentation fault

Ups was ist das denn? Ein Bug in mein Ebuild?

Ich machte mich erstmal auf die Suche ob dieser Bug bekannt ist, ja ist er.
Im Forum von Stuntrally wurde ich fündig: http://forum.freegamedev.net/viewtopic.php?f=78&t=4089

Dies lies mich nicht los und wollte es genau wissen.
Beim Ebuild schreiben hatte ich festgestellt das Ogre nicht mit USE-Flag threads compiliert werden darf. Das Spiel lies sich nie starten deswegen hatte ich -threads für Ogre im Ebuild hart Maskiert.

Da dieser Bug etwas mit Multithreads zu tun hat, dachte ich mir es muss doch möglich sein Ogre mit threads nutzen zu können. Ich schaute mir die Ebuilds von Ogre und ein paar andere die in Abhängigkeit standen an. Nach kurzer Zeit stelle ich fest das sci-libs/fftw oft in Abhängigkeit stand und wenn threads gewählt ist mit dem USE-Flag mpi verlangt wurde.

Okay, erster test Ogre mit threads compiliert, Stuntrally crasht wie gewohnt.
Also fftw mit mpi USE-Flag compiliert, wow Stuntrally startete ohne zu murren, dachte mir gutes Zeichen.

Championship, eine Runde … Segmentation fault

Eine Runde Erholung zur belohnung dachte ich mir, dabei stellte ich fest dass das Game nicht mehr Ruckelt an stellen wo ich es eigentlich gewohnt war. Fast schon unheimlich, ich hatte mich so sehr an das Ruckeln gewöhnt das mir nun die Steuerung ohne Ruckeln etwas schwer gefallen ist.

Ich dachte immer, das dass Bild besser wurde als ich dev-cpp/asio hinzugefügt hatte, hier hatte ich mich getäuscht. Dieses Paket wurde von vdrift benötigt, aber nicht von Stuntrally.

Nochmal getestet, diesmal ohne dev-cpp/asio. Konnte keinen Unterschied feststellen, Stuntrally verwendet also dev-cpp/asio gar nicht. Zurück zu Championship, was ich heute ja unbedingt mal testen wollte. Wie im Forum Beschrieben stelle ich die Parameter der game.cfg in Section [ slim ] multi_tr = 1 auf 0.

Danach funktionierte Championship und das beste es läuft immer noch flüssig.

Wenn ihr also denkt das eure Grafikkarte das Game ohne Ruckeln packen sollte, dann versucht Stuntrally mal mit threads zu compiliern. Spassfaktor steigt wenn das Game nicht Ruckelt gewaltig in die höhe.

Das neue Ebuild liegt ab sofort auf meinem Github
https://github.com/knasan/ebuilds/tree/master/games-sports/stuntrally

Sandy

Stuntrally, Spaß mit Linux

Die Macher von Stuntrally haben ganze Arbeit geleistet. Bisher das Beste Rally Spiel unter Linux was ich gesehen habe, Spaß ist hier vorprogrammiert. Lange habe ich nach ein Game gesucht das so süchtig machen kann wie Stuntrally.

Wer einen Joystick besitzt und mit diesen spielen möchte, kein Problem. Ich verwende zum Beispiel mein Gampad von einer PS3.

Leider gab es für dieses Spiel kein gentoo Ebuild, also musste ich selbst Hand anlegen und eines schreiben. Manchmal ist das ein unterfangen das sehr viel Zeit und Mühe kostet, aber man ist natürlich auch Stolz auf sein Ebuild.

Ich möchte euch nun ein paar Bilder zeigen, wer gerne mal ein Rennen Fahren möchte und auf gute Grafik nicht verzichten möchte, ist mit Stuntrally bestens bedient.

01232013_233842007

Es gibt eine ganze Menge an Stecken die man Fahren kann. Von Leicht bis Schwer, aufwendig oder einfach, es ist für jeden etwas dabei.

Was mit sehr gut gefällt sind Loopings

Runde mit Loopings

Hier sehr schön zu sehen, die Macher von Stuntrally haben sich sehr viel Mühe gemacht. Es macht nicht nur Spaß dieses Spiel zu Spielen, sondern es ist auch noch schön es anzusehen.

Ähnlich wie bei Need for Speed, boost für alle.

Boost für alle

Rein in den Looping aber mit Speed. Es ist nicht immer einfach die Balance zu halten.

Bodenhaftung nicht immer gegeben.

Bodenhaftung nicht immer gegeben.

Ist man zu schnell unterwegs, kann es passieren das man abhebt.

01232013_232505389

Wie man hier gut sehen kann, ist die Auslastung am Rechner gering, es kommt natürlich auf dem Rechner an.

01232013_232925200

Die Strecken Bauer haben sich vieles einfallen lassen. Fahren in einer Winterlandschaft gibt einen erst den richtigen kick.

01232013_233047187

Driftet man um die Kurven gibt es satte Punkte. Es gibt Verschiedene Techniken dies zu tun. Ob man die Handbremse benutzt oder doch einfach Normal auf die Bremse Tritt kostet etwas Strecken Erfahrung und man muss auch das Auto etwas besser Kennenlernen.

01232013_234455545

Ist man im Single Modus die Runde einmal durchgefahren, bekommt man besuch von Ghost.

01232013_234318455

01232013_234531144

Alle Wagen müssen Wasserdicht sein, oft geht man ungewollt Baden wenn man vom Weg abweicht. Es gibt aber auch Strecken wo man sogar gezwungen wird durchs Wasser zu Fahren. Manchmal können diese auch Tief sein. Hängt man fest, kommt man nur mit Flippen des Wagens wieder raus. Manchmal aber auch nicht!

01232013_234311564

Ich finde, es ist wirklich ein sehr gutes Spiel geworden. Nicht nur spielerisch der Steuerung sondern die Grafik allein macht schon sehr viel her.

Jetzt möchtest du natürlich auch dieses Game haben, was ich gut Verstehen kann, dann habe ich eine sehr gute Nachricht für dich. Einen Ebuild für gentoo gibt es auf meinem github Account.
Wenn du mein Ebuild verwendest und Fehler findest, dann melde dich bei mir, damit ich darüber Informiert bin und es beheben kann.

Da es wirklich nicht einfach war, möchte ich den Kompliziertesten Teil des Ebuilds hier kurz verewigen.

src_unpack() {
  git-2_src_unpack
  EGIT_REPO_URI="git://github.com/stuntrally/tracks.git"
  EGIT_SOURCEDIR="${S}/data/tracks"
  git-2_src_unpack

  mkdir ${MYBUILD_DIR}
  [ -d ${S}/data/tracks/.git ] && rm -r ${S}/data/tracks/.git
}

Das Ebuild für Stantrally ist ein Live Ebuild. Dies bedeutet dass alle benötigten Daten vom Server via „git“ abgeholt werden.
Stuntrally benötigt zwei „git“ zweige. Im ersten Zweig ist das Spiel an sich und im zweiten teil, wie hier zu sehen, die Strecken (tracks).
Um jetzt nicht zwei Ebuilds schreiben zu müssen und auch nicht ständig die ganzen 395 MB zu downloaden zu müssen, suchte ich nach eine Möglichkeit diese in einem Ebuild zu verpacken.

Nach etwa drei Tagen ist mir eine Lösung gelungen.

1. Noch bevor src_unpack aufgerufen wird, wurde EGIT_REPO_URI auf das git vom eigentlichen Spiel gesetzt: git://github.com/stuntrally/tracks.git
2. git-2_src_unpack Klont das Repository auf Festplatte und entpackt es.
3. Die Variable EGIT_REPO_URI wird nun auf die Tracks gesetzt und erneut mit git-2_src_unpack heruntergeladen und entpackt.
Die Variable EGIT_SOURCEDIR sollte normal nicht gesetzt werden, aber es ist natürlich problematisch beide Repos in einem Verzeichnis zu Klonen.
Deswegen habe ich diese gesetzt, damit die Quellen immer lokal auf Platte beleiben und bei einer Neuinstallation nicht ständig gelöscht wird und somit jedes mal 395 MB gesaugt werden muss.

Das Ebuild kennt ein USE-Flag, editor.
Setzt man dieses Flag, bekommt man ein Spiele Editor Installiert, was ich mir jedoch noch nicht genau angesehen habe.
Wer dieses Game mag, wird sicherlich früher oder Später eigene Strecken bauen wollen.

Wie oben kurz erwähnt, das Ebuild findet Ihr auf mein Github Account https://github.com/knasan/ebuilds.
Hierfür richtet man sich am besten ein Lokales Overlay ein, hierzu benötigt man Layman. Am besten einfach kurz nach gentoo layman suchen, dann findet man sehr schnell Informationen wir man sich ein Lokales Overlay einrichtet.

Viel Spaß beim Zocken!

Sandy

Beitragsnavigation

%d Bloggern gefällt das: