vinzv

Seite 2 von 28

Howto: APT mit bash-completion

Im Zuge der Veröffentlichung von APT 1.1 hatte ich mir vorgenommen, nicht mehr das doch recht umständliche apt-get (mit Kosorten wie apt-cache) zu nutzen sondern stattdessen komplett auf die neue, deutlich einfacher Syntax umzustellen. Der Versuch lief bis dato auch recht gut, wobei ich aber von Anfang an die automatische Vervollständigung von Befehlen und Optionen vermisst habe. Oder kurz gesagt: bash-completion ging nicht.

Die Suche im Netz nach „apt“ und „bash-completion“ in verschiedenen Kombinationen war zwar ergiebig, aber nicht gerade hilfreich. Einzig auf askubuntu.com bin ich über ein kurzes Script gestolpert, das sowie dessen Einrichtung ich euch nicht vorenthalten möchte:

  1. Datei mit root Rechten anlegen/öffnen:
    # vim /usr/share/bash-completion/completions/apt
  2. Folgenden bash code kopieren und dort einfügen:
    # Debian apt(8) completion                             -*- shell-script -*-
    
    _apt()
    {
        local cur prev words cword
        _init_completion || return
    
        local special i
        for (( i=0; i < ${#words[@]}-1; i++ )); do if [[ ${words[i]} == @(list|search|show|update|install|remove|upgrade|full-upgrade|edit-sources|dist-upgrade|purge) ]]; then special=${words[i]} fi done if [[ -n $special ]]; then case $special in remove|purge) if [[ -f /etc/debian_version ]]; then # Debian system COMPREPLY=( $( \ _xfunc dpkg _comp_dpkg_installed_packages $cur ) ) else # assume RPM based _xfunc rpm _rpm_installed_packages fi return 0 ;; *) COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \ 2> /dev/null ) )
                    return 0
                    ;;
            esac
        fi
    
        case $prev in
            -c|--config-file)
                 _filedir
                 return 0
                 ;;
            -t|--target-release|--default-release)
                 COMPREPLY=( $( apt-cache policy | \
                     command grep "release.o=Debian,a=$cur" | \
                     sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null) )
                 return 0
                 ;;
        esac
    
        if [[ "$cur" == -* ]]; then
            COMPREPLY=( $( compgen -W '-d -f -h -v -m -q -s -y -u -t -b -c -o
                --download-only --fix-broken --help --version --ignore-missing
                --fix-missing --no-download --quiet --simulate --just-print
                --dry-run --recon --no-act --yes --assume-yes --show-upgraded
                --only-source --compile --build --ignore-hold --target-release
                --no-upgrade --force-yes --print-uris --purge --reinstall
                --list-cleanup --default-release --trivial-only --no-remove
                --diff-only --no-install-recommends --tar-only --config-file
                --option --auto-remove' -- "$cur" ) )
        else
            COMPREPLY=( $( compgen -W 'list search show update install 
                remove upgrade full-upgrade edit-sources dist-upgrade 
                purge' -- "$cur" ) )
        fi
    
        return 0
    } &&
    complete -F _apt apt
    
    # ex: ts=4 sw=4 et filetype=sh
  3. Speichern und abschließend als normaler Nutzer die .bashrc neu einlesen:
    $ source .bashrc

Fertig! Jetzt habt ihr die Vervollständigung für folgende APT Optionen: list search show update install remove upgrade full-upgrade edit-sources dist-upgrade purge

(Quelle, Code lizenziert unter GPL)

Spotify unter Linux: Zwei Kurztipps

Mit Debian & Derivaten Spotify zu nutzen ist ja kein Hexenwerk, hierfür gibt es zum Glück eine recht einfache Anleitung. Zwei Dinge funktionierten bei mir aber nicht bzw. haben mich gestört.

1. Fehlende libgcrypt.so.11

Sollte nach der Installation beim ersten Start nichts passieren und beim Aufruf über das Terminal eine fehlende „libgcrypt.so.11“ bemängelt werden, reicht es das Paket libgcrypt11 aus den Wheezy-Repositories zu installieren. Dies gilt natürlich nur für Jessie oder – wie in meinem Fall – für Stretch. Die Datei gibt es hier zum Download für die jeweilige Architektur, im Normalfall amd64.

sudo dpkg -i libgcrypt11_1.5.0-5+deb7u1_amd64.deb

2. Nervige Benachrichtigungen

screenshot-spotify-notification
Beim jedem Songwechsel meint Spotify mir das mitteilen zu müssen. Ich bin nicht doof, ich merke wenn ein Lied zu Ende ist und das nächste beginnt. Leider gibt es in den Einstellungen keine Möglichkeit diese Funktion zu deaktivieren. Also hilft nur die Brechstange über das config file:

vim ~/.config/spotify/Users/[Spotify Nutzername]-user/prefs

Dort folgende Zeile einfügen und danach Spotify neu starten:

ui.track_notifications_enabled=false

Das war’s, schon ist Ruhe!

 

Wirmser muss weinen

Man möchte wirklich dreimal auf den Boden spucken, wenn man zusehen muss, wie der zutiefst humanistische Gegenentwurf eines aufrechten, mutigen deutschen Demokraten wie Josef Wirmer von den rechten Populisten rund um Lutz Bachmann durch Dresdens Straßen getragen wird.

Von Mut, Idealen und einer Flagge, die nicht Pegida gehört.

Wer nicht arbeitet, soll auch nicht essen?

Paulus hat aber etwas anderes gemeint. Er richtet den Satz nicht an die “Faulen”, sondern an die Reichen, die gewohnt waren, andere für sich arbeiten zu lassen. Aber in der christlichen Gemeinschaft sollten genau diese Hierarchien nicht mehr gelten, und zwar ganz konkret bei gemeinsamem Essen: Da sollten nicht die einen arbeiten und die anderen sich an den gedeckten Tisch setzen, sondern, “Da ist nicht Arm und Reich” und eben auch: “Wer nicht arbeitet, soll auch nicht (mit)essen)”.

Wer nicht arbeitet soll auch nicht essen?

Just an old girl

Heute vor zwanzig Jahren hat No Doubt die Single „Just a girl“ veröffentlicht.
Du darfst dich jetzt ein bisschen alt fühlen

Inter-Tabac in Dortmund

Letzten Samstag war ich beruflich auf der weltgrößten Tabakmesse, der „Inter-Tabac“ in Dortmund. Vier Hallen voll mit Zigarren, Tabak, Zigaretten, Shishas, Dampferbedarf und Flavors.
Auch wenn es recht kurzfristig und anstrengend war: ein beeindruckendes Erlebnis, das ich nicht missen möchte!

Hecking und das Kaninchen

Ich mag den Hecking.
Er hat es als einer der Wenigen in den letzten Jahren geschafft, dass sein Team vor den Bayern nicht wie ein Kaninchen vor der Schlange erstarrt. Und dabei trotzdem seinen Anstand und seine Haltung bewahrt.

Neben seinem Interview im Kicker gibt es einen lesenswerten Kommentar bei 11freunde.

Karmaschadenfreude

Die Frau vor mir an Kasse hält es nicht für nötig ihre Ohrstöpsel raus zu nehmen und die Kassiererin zu grüßen.

Drei Schritte nach der Kasse fällt ihr der gerade gekaufte Becher Sahne runter.

Ein WLAN-Radio mit RaspberryPi und Touchdisplay selbstgebaut

Eins vorweg: Du solltest ein bisschen Grundwissen mitbringen, was den RaspberryPi und Linuxsysteme angeht. Ich erkläre hier nicht alles.

Schon länger wollte ich ein WLAN-Radio haben. Durch unsere innenliegende Küche, den damit miserablen UKW-Empfang und „die Hits der 70er, 80er, 90er und das Beste von Heute“ wurde der Wunsch noch akuter. Wenn nicht mal Bayern 1 für die Bundesliga-Konferenz reingeht, ist das schon bitter. WLAN-Radios von den gängigen Herstellern sind aber recht teuer und unflexibel in der Bedienung: Ab 80€ aufwärts ist mir schlicht viel zu viel Geld für „nur“ ein Radio.

Also habe ich mich für die Selbstbauvariante mit einem RaspberryPi entschieden. Hier gibt es eine Vielzahl von Lösungen mit Bedienung durch LCD-Displays und manuellen Knöpfen, sowie ein paar Schöne mit Touchdisplay. Letzteren Weg habe ich gewählt.

Material

Vorüberlegungen

Ich habe verschiedene Lösungen ausprobiert, darunter das RPi Tron Radio und den Raspbian Tron Radio lema67 Mod. Teilweise hat das auch funktioniert, Problem war aber die unterschiedliche Displaygröße (2,8 vs. 3,2 Zoll) sowie eine unfertige Konfiguration des Touchdisplays, die ich selbst nicht wirklich verstanden geschweige denn hinbekommen habe.

Also war mein Weg nach einigem (!) Probieren die Kombination aus dem vorbereiteten Raspbian Image von Watterott für 8-Bit SPI Version 2015-05-24 und der newTRON-Radio Oberfläche. Der große Vorteil von newTRON ist die Skalierbarkeit: dank Python und SVG-Grafiken passt sich die Darstellung automatisch an die jeweils verwendete Displaygröße an.

Die Einrichtung – Schritt für Schritt

  1. Raspbian Image herunterladen, entzippen und mit dd auf die Speicherkarte bringen
    ~# dd if=raspbian_wheezy_armhf_fbtft_02.2015.img of=/dev/sdX oflag=direct bs=1M
  2. Zweite Partition mounten und in /etc/network/interfaces WLAN SSID und Passwort hinterlegen:
    auto wlan0
    iface wlan0 inet dhcp
    wpa-ssid "Wlanname"
    wpa-psk "Wlan Passwort"
  3. Das Installerscript aus dem Forenbeitrag (ganz unten am ersten Beitrag) herunterladen und in /home/pi/ ablegen. Für den Download musst du dich im Forum registrieren, was eh eine gute Idee ist, wenn du dich für RaspberryPi Themen interessierst!
  4. Touchdisplay am RaspberryPi aufstecken, Speicherkarte einlegen und den Pi starten. Das Gerät startet und auf dem Display erscheinen die üblichen Zeilen eines bootenden Linux. Nach einer Weile fängt der WLAN-Stick an zu blinken und des Pi lässt sich pingen.
  5. Du loggst dich via SSH mit user „pi“ und „raspberry“ als Passwort auf dem RaspberryPi ein und aktualisierst die Paketliste: sudo apt-get update
    Wichtig: Auf keinen Fall das System aktualisieren! (upgrade oder dist-upgrade). Das installiert eine Version von python-pygame die mit der Firmware des Pi nicht klarkommt. Das newTRON Radio startet dann nicht!
  6. Wenn die Paketliste aktualisiert ist startest du die Installation von newTRON:
    sh ./newtron-radio-setup.sh
    Das dauerte eine Weile, hol dir mal nen Kaffee. Sobald die Installation abgeschlossen ist, fügst du in die Datei /etc/rc.local noch die Zeile /usr/local/bin/newtron-radio vor exit 0 ein. Sonst sollte in der Datei nichts stehen!
  7. Im Anschluss startest du den RaspberryPi neu. Wenn alles geklappt hat, sollte das System direkt nach dem Booten newTRON starten und anfangen Musik abzuspielen. Natürlich nur falls du Boxen oder testweise Kopfhörer angeschlossen hast. ;)

Für mich steht noch der Bau eines passenden Gehäuses auf dem Plan. Ich möchte das aus Holz sägen und kleine Aktivboxen einbauen, die über USB mit Strom versorgt werden.

« Ältere Beiträge Neuere Beiträge »

Copyright © 2017 vinzv

Theme von Anders Norén↑ ↑