Archives for posts with tag: Linux

Wie man deb-Pakete anpasst.

Marias Tablet hat einen toten Akku, ist also derzeit nicht zum Geocachen zu gebrauchen. Muss also der kleine eeePC wieder dafür herhalten. Nun ist geocachen mit FoxtrotGPS und offenem Browser daneben etwas umständlich. Für Android gibt es einige Apps – aber gibts auch was für Linux?

Ja, gibt es: OCM OpenCacheManager. Leider sind die fertigen Pakete nur für Ubuntu gedacht. Da ist eine Abhängigkeit drin, die die Installation unter Debian verhindert, der sog. „ubuntu-system-service“. Dabei handelt es sich um Dbus. Unter Debian heißt das Paket mit DBus auch so: dbus. Ich hab es mir daraufhin einfach gemacht und einfach die Abhängigkeiten im opencachemanager-Paket geändert, sprich die ubuntu-system-service rausgeschmissen.

Im Prinzip geht das so:

  • Man entpackt das deb-Paket,
  • extrahiert die Control-informationen,
  • ändert die Control-Datei und
  • lässt das Paket wieder zusammenbauen.

Anschließend sollte sich das Paket installieren lassen. Bei mir sah das nun folgendermaßen aus:
Erstmal hab ich mir hier das aktuelle OCM-deb-Paket für Ubuntu runtergeladen. In einem Terminal bin ich root geworden, hab ein Verzeichnis zum Entpacken angelegt und hab dahinein das Paket ausgepackt:

root@Sesta:/# cd /root
root@Sesta:/root# mkdir ./ocm
root@Sesta:/root# cp $VONWOAUCHIMMER/opencachemanager_1.0.14-1_all.deb /root/
root@Sesta:/root# dpkg-deb -x ./opencachemanager_1.0.14-1_all.deb ./ocm/
root@Sesta:/root# dpkg-deb -e ./opencachemanager_1.0.14-1_all.deb ./ocm/DEBIAN
root@Sesta:/root# nano ./ocm/DEBIAN/control

Im Editor suchen wir jetzt die Zeile, die mit Depends beginnt:

Depends: libmono-system2.0-cil, libwebkit1.1-cil, libmono-sqlite2.0-cil, gpsbabel, libgtk2.0-cil, libndesk-dbus1.0-cil, libgconf2.0-cil, ubuntu-system-service, libndesk-dbus-glib1.0-cil, librsvg2-common, libmono-system-web2.0-cil, libmono-cairo2.0-cil, libmono-system-web4.0-cil, libmono-system-data4.0-cil

Das fett markierte löschen wir und speichern die Datei. Jetzt brauchen wir nur noch das Paket zusammenzubauen und zu installieren.
root@Sesta:/root# dpkg-deb -b ./ocm opencachemanager_1.0.14-1_all_debian.deb
dpkg-deb: Paket »opencachemanager« wird in »opencachemanager_1.0.14-1_all_debian.deb« gebaut.
root@Sesta:/root# dpkg -i ./opencachemanager_1.0.14-1_all_debian.deb
Vormals nicht ausgewähltes Paket opencachemanager wird gewählt.
(Lese Datenbank … 161432 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacken von opencachemanager (aus …/opencachemanager_1.0.14-1_all_debian.deb) …
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von opencachemanager:
opencachemanager hängt ab von libwebkit1.1-cil; aber:
Paket libwebkit1.1-cil ist nicht installiert.
opencachemanager hängt ab von libgtk2.0-cil; aber:
Paket libgtk2.0-cil ist nicht installiert.
opencachemanager hängt ab von libndesk-dbus1.0-cil; aber:
Paket libndesk-dbus1.0-cil ist nicht installiert.
opencachemanager hängt ab von libgconf2.0-cil; aber:
Paket libgconf2.0-cil ist nicht installiert.
opencachemanager hängt ab von libndesk-dbus-glib1.0-cil; aber:
Paket libndesk-dbus-glib1.0-cil ist nicht installiert.
opencachemanager hängt ab von libmono-system-web2.0-cil; aber:
Paket libmono-system-web2.0-cil ist nicht installiert.
opencachemanager hängt ab von libmono-cairo2.0-cil; aber:
Paket libmono-cairo2.0-cil ist nicht installiert.
opencachemanager hängt ab von libmono-system-web4.0-cil; aber:
Paket libmono-system-web4.0-cil ist nicht installiert.
opencachemanager hängt ab von libmono-system-data4.0-cil;
dpkg: Fehler beim Bearbeiten von opencachemanager (–install):
Abhängigkeitsprobleme – verbleibt unkonfiguriert
Trigger für desktop-file-utils werden verarbeitet …
Trigger für gnome-menus werden verarbeitet …
Trigger für mime-support werden verarbeitet …
Trigger für shared-mime-info werden verarbeitet …
Fehler traten auf beim Bearbeiten von:
opencachemanager

Offenbar fehlt noch bissel was. Es lässt sich einfach erzwingen, dass das Fehlende installiert wird:
root@Sesta:/root# apt-get install -f
Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen…. Fertig
Abhängigkeiten werden korrigiert … Fertig
Die folgenden zusätzlichen Pakete werden installiert:
libgconf2.0-cil libgtk2.0-cil libmono-cairo2.0-cil libmono-cairo4.0-cil libmono-data-tds4.0-cil libmono-messaging2.0-cil libmono-sharpzip2.84-cil libmono-sqlite4.0-cil libmono-system-core4.0-cil libmono-system-data-linq2.0-cil libmono-system-data4.0-cil
libmono-system-enterpriseservices4.0-cil libmono-system-messaging2.0-cil libmono-system-transactions4.0-cil libmono-system-web-applicationservices4.0-cil libmono-system-web-services4.0-cil libmono-system-web2.0-cil libmono-system-web4.0-cil libmono-wcf3.0-cil
libmono-web4.0-cil libmono2.0-cil libndesk-dbus-glib1.0-cil libndesk-dbus1.0-cil libwebkit1.1-cil
Vorgeschlagene Pakete:
monodoc-gtk2.0-manual libmono-winforms2.0-cil monodoc-webkit-manual
Die folgenden NEUEN Pakete werden installiert:
libgconf2.0-cil libgtk2.0-cil libmono-cairo2.0-cil libmono-cairo4.0-cil libmono-data-tds4.0-cil libmono-messaging2.0-cil libmono-sharpzip2.84-cil libmono-sqlite4.0-cil libmono-system-core4.0-cil libmono-system-data-linq2.0-cil libmono-system-data4.0-cil
libmono-system-enterpriseservices4.0-cil libmono-system-messaging2.0-cil libmono-system-transactions4.0-cil libmono-system-web-applicationservices4.0-cil libmono-system-web-services4.0-cil libmono-system-web2.0-cil libmono-system-web4.0-cil libmono-wcf3.0-cil
libmono-web4.0-cil libmono2.0-cil libndesk-dbus-glib1.0-cil libndesk-dbus1.0-cil libwebkit1.1-cil
0 aktualisiert, 24 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
1 nicht vollständig installiert oder entfernt.
Es müssen noch 4.302 kB von 5.308 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 16,3 MB Plattenplatz zusätzlich benutzt.
Möchten Sie fortfahren? [J/n]

Ein beherztes [Enter] erledigt unsere Probleme. Aufräumen sollte man im /root-Verzeichnis noch:
root@Sesta:/root# rm -r ./ocm

OCM sollte sich im Desktop-Anwendungs-Menü bei „Sonstige“ finden. Viel Spaß damit!

(swg)

QR-Codes aus Bildern lesen und den Text anzeigen.

Unter Linux gibt es nicht so viele Möglichkeiten, QR-Codes auszuwerten. Eine Möglichkeit auf der Kommandozeile ist ZBar, leider hat es keine GUI. Was ich will soll per Rechtsklick aus meinem Dateimanager funktionieren und mir anschließend in einem Dialog anzeigen, ob und was zbar gefunden hat.

Endlich mal wieder ein Bash-Script… Ein paar Dinge sind Voraussetzung: Als erstes braucht es ZBar zum Auslesen der QR-Codes. Mit Zenity kann man grafische Dialoge in einem Bash-Script anzeigen. Mehr ist nicht nötig.

Es kann dem Script als Parameter ein oder mehrere Bilder übergeben werden. Eine while-Schleife liest & entfernt die Übergabe-Parameter solange, bis keine mehr da sind. Sollte der ermittelte Code mit http:// beginnen, wird er als Webadresse interpretiert: Der dann folgende Dialog bietet an, ihn im Webbrowser zu öffnen.
#!/bin/bash
# swg, 25.8.2013
#
# Verwendet ZBarImg zum Lesen von QR-Codes aus Bildern.
# der ermittelte Text wird in einem Zenity-Dialog angezeigt, mit einer passenden
# Option zur Verwendung (Webadresse-> im Standard-Browser öffnen
#
# erwartet als Parameter wenigstens eine Bilddatei!
#
if [ ! $# -gt 0 ]; then
echo „Usage: zbarimggtk.sh IMG1.jpg [img2.jpg …]“;
exit;
fi;
while [ $# -gt 0 ] # Solange Parameter da sind…
do
IMG=$1;
if [[ -f $IMG ]]; then # ist der Parameter eine reguläre Datei?
CODE=$(zbarimg -Dq $IMG | sed -e „s/QR-Code://“); # vom zbarimg-Rückgabewert
# „QR-Code:“ vorn abschneiden
if [[ -z $CODE ]]; then
zenity –error –text „Kein QR-Code im Bild $IMG gefunden!“ &
else
if [ $(echo „$CODE“ | grep „http://“) ]; then # wenn Code mit „http://“ beginnt,
# ist es eine Webadresse
zenity –forms –title=“Webdresse in $IMG gefunden“ \
–separator=“,“ \
–text=“Webadresse $CODE öffnen?“;
case $? in
0)
x-www-browser $CODE; # Webadresse im X-Standard-Browser öffnen
;;
1)
# User-Cancel!
;;
-1)
zenity –error –text=“Ein unerwarteter Fehler ist aufgetreten.“;
;;
esac
else # bei einfachem Text nur einen Info-Dialog anzeigen
# (Text ist markier- und kopierbar)
zenity –info –title=“Text gefunden:“ –text=“$CODE“ &
fi;
fi;
else
zenity –error –text=“Bild $IMG nicht gefunden!“ &
fi;
shift; # Vordersten Übergabe-Parameter des Scripts löschen
done

Ich verwende es im Rox-Filer und in Geeqie jeweils im Kontextmenü – ein Rechtsklick aufs Bild und das Script als ausführendes Programm gewählt und ich weiß, was mir der fotografierte QR-Code sagen will…

Hier noch das fertige Script:
Symbol Shellscript zbarimggtk.sh

(swg)

Mein Rechner steht im Wohnzimmer und ist damit nicht allein mein persönliches Arbeitsgerät. Er ist Video- & Audio-Player, Messenger, Surfstation uvm. für uns. Ansich ist das kein Problem, was aber nervt ist beispielsweise die Umschalterei am Messenger: Wir haben beide Accounts für XMPP, ICQ und noch ein paar anderen. Pidgin kann das alles. Trotzdem ist es umständlich, jedesmal in die Kontenverwaltung zu seppeln und die jeweiligen Konten zu aktivieren bzw. zu deaktivieren. Einfach den Desktop zwischen Benutzern umzuschalten wär auch möglich, aber nicht minder unkomfortabel, will der andere an sein Zeug.

Je eine separate Instanz Pidgin im Benutzerkontext wär super, mit einem Klick wär das entsprechende Pidgin an oder aus. Die Werkzeuge dafür heißen sudo und xhost.

Als erstes muss /etc/sudoers editiert werden. Der eingeloggte User muss das Ausführen von Pidgin im Kontext des anderen erlaubt bekommen.

swg localhost=(Maria)NOPASSWD:/usr/bin/pidgin

Heißt soviel wie: „Der Nutzer swg darf auf localhost im Kontext von Maria ohne das Passwort eingeben zu müssen das Programm /usr/bin/pidgin ausführen!“.

Eine zweite Hürde besteht jetzt darin, dass der eingeloggte Nutzer seine X-Session exklusiv nutzen darf. Das dient schlicht der Sicherheit. Wär‘ ja doof, wenn jeder von extern eingeloggte da rumkritzeln oder – schlimmer – mitlesen dürfte.

In meinem Fall heißt das, aus dem Kontext Maria muss auf meine X-Session zugegriffen werden dürfen. Die schlichteste Variante ist xhost:

xhost localhost:Maria

Heißt: Nutzer Maria darf vom localhost aus auf meine X-Session. Generell sollte man mit sowas vorsichtig sein, in dem Fall halte ich das aber für unproblematisch. Maria darf sich eh nur lokal anmelden und auch sonst vertrau ich ihr soweit, dass sie hier nix mutwillig zerbröselt ;)

Also: Mit xhost Maria den Zugriff auf mein X erlauben und dann Pidgin mit sudo in ihrem Kontext aufrufen. Die zwei Zeilen hab ich in ein Bash-Script gesteckt

#!/bin/bash
xhost local:Maria;
sudo -u Maria /usr/bin/pidgin;

und auf meinem Desktop verlinkt.MenüFertsch. Sowas geht natürlich auch mit anderen Programmen – Email, Browser, wasweißich. Viel Spaß.

(swg)

Ne ganze Weile hab‘ ich rumgesucht, welche Software sich wohl für Videoschnitt eignet. Hauptaugenmerk: Kost’nix, nonlinear, einfach. Außerdem sollte sie unter Linux und Windows laufen. Nach ein paar eher quälenden Versuchen mit Cinelerra (instabil und Exportprobleme) und einer kurzen Folter mit Blender hab ich Windows aus der Wunschliste geschmissen (Sorry Spatz). So hab ich was schönes für Linux gefunden: Openshot.Logo OpenShot Video Editor
Per Drag’n’drop füllt sich die Clipliste, dann kann man schon anfangen, alles in die Tracks runterzuzerren.Openshot

Blenden für Anfang und Ende eines Clips finden sich im Kontextmenü der Tracks, komplexere Übergänge oben hinter der Clipliste. Klasse!Openshot ÜbergängeTitel und Credits bastelt man einfach mit Inkscape – Text nicht vergessen in ein Objekt zu wandeln! – und zieht sie ebenfalls in die Clipliste. Oder erstellt sie einfach direkt von der Clipliste aus neu. Wenn man auf kompliziert animiertes 3D-gefutzel steht, sollte man Blender noch installiert haben, dann wird’s wahrscheinlich „woah“. Will ich aber nicht – ’nen Badevideo ist schon durch Alina „woah“ genug ;)

Videoexport ist auch easy: Eine lange Liste voreingestellter Formate mit Seitenverhältnissen, Bildwiederholrate und Auflösung vereinfachen das zu einigen wenigen Klicks. Codec wählen & fert’sch ist das neueste Kindervideo für die Oma ganz weit weg. Krass!

Danke an Jonathan Thomas, war mir ’ne kleine Spende wert.

Wunsch: Macht mal noch was fürs Audio-Pegeln rein, dass man Musik runterpegeln und drüberquatschen kann.

(swg)

PS: Das Kindervideo gibt’s natürlich nicht öffentlich, wo kommen wir denn da hin?! Ich lass Euch ja nicht mal zugucken, wenn ich in der Wanne bade!

PHP Code Snippets Powered By : XYZScripts.com