Die Version installierter Pakete im Terminal herausfinden

Kürzlich sollte ich einem Administrator die Version der VMware-Tools mitteilen, die auf meiner virtuellen Maschine installiert waren. Allerdings war (und ist) mir kein Befehl bekannt, mit dem ich diese Informationen direkt von Programmen des Paketes erhalten kann. Es ist aber möglich, die Version des installierten Paketes über den Debian Paketmanager (dpkg) zu ermitteln (UbuntuUsers-Forum).

Dazu lässt man sich zunächst (mit Hilfe von dpkg) eine Liste von Kurzbeschreibungen aller installierten Pakete ausgeben. Mit Hilfe von grep lässt man allerdings nur diejenigen Zeilen anzeigen, in denen der Namen des Paketes vorkommt (in meinem Falle open-vm-tools):

dpkg -l | grep open-vm-tools

In der Ausgabe kann man dann die Version ablesen:

ii  open-vm-tools  2012.05.21-724730-0ubuntu2  i386  tools and components for VMware guest systems (CLI tools)

In meinem Falle konnte der Administrator die virtuelle Maschine problemlos über den vSphere-client neu starten.

Ubuntu-Version im Terminal herausfinden

Wer ganz schnell die Version seiner Linux-Distrbution herausfinden möchte, kann dazu den Befehl lsb_release verwenden (siehe auch Ubuntu-Hilfe und UbuntuUsers-Forum). Durch diesen Befehl erhält man Informationen über allgemeine Linux Schnittstellen (Linux Standard Base; LSB), sowie Distributions-spezifische Informationen.

  • Nach der Eingabe von:
    lsb_release -a

    erhält man z.B.:

    No LSB modules are available.
    Distributor ID:	Ubuntu
    Description:	Ubuntu 12.10
    Release:	12.10
    Codename:	quantal
  • Weitere Informationen über mögliche Parameter erhält man in den Manpages (Online Manpage zu lsb_release):

    man lsb_release
  • Eine andere (weniger umfangreiche Methode) habe ich auf aphilia.info gefunden:
    cat /etc/issue

    Mit dem Resultat:

    Ubuntu 12.10 \n \l
    

Eine große Datei in viele kleine Dateien zerlegen

Ich hatte gerade eine sehr große Datei (3.3GB), die ich über eine langsame Internetverbindung auf einen Server verschieben wollte. Der Vorgang würde mehrere Stunden dauern. Die Wahrscheinlichkeit, dass der Upload unterbrochen würde, wäre relativ groß. In dem Falle müßte ich nochmal von vorne beginnen. Daher habe ich die Dateien in einzelne Dateien zerlegt. In diesem Artikel erkläre ich, wie man eine große Datei aufteilt und im Anschluss wieder zusammenfügt.

Ich habe eine Datei ergebnisse.zip, die ich in 10 MB große Stücke zerteilen möchte.

  1. Um den Erfolg überprüfen zu können, ermittle ich zunächst eine Prüfsumme (Hier: MD5-String) der Ausgangsdatei:
    md5sum ergebnisse.zip > ergebnisse.zip.md5
  2. Mit Hilfe des Programms split teile ich die Datei in 10MB große Stücke:
    split -b 10M ergebnisse.zip ergebnisse_split.zip.

    Dadurch werden viele Dateien erzeugt, die folgenden Aufbau haben:

    ergebnisse_split.zip.aa
    ergebnisse_split.zip.ab
    ergebnisse_split.zip.ac
    ergebnisse_split.zip.ad
    ...
    ergebnisse_split.zip.zy
    ergebnisse_split.zip.zz
    
  3. Nun kann man diese Dateien z.B. per SSH auf einem Server laden:
    scp ergebnisse_split.zip.* user@server.domain:~/zielordner

    Sollte nun der Vorgang unterbrochen werden, kann man im Anschluss einfach bei der Datei beginnen, bei der der Upload unterbrochen wurde.

  4. Nach erfolgtem Upload fügt man die Dateien mit Hilfe von cat einfach wieder zusammen:
    cat ergebnisse_split.zip.* > ergebnisse_cat.zip
  5. Nun muss nur noch geprüft werden, ob die zusammengefügte Datei den gleichen Inhalt wie die Ausgangsdatei hat. Dazu berechnet man erstmal die MD5-Summe:
    md5sum ergebnisse_cat.zip > ergebnisse_cat.zip.md5

    Wenn alles geklappt hat, stehen in ergebnisse.zip.md5 und ergebnisse_cat.zip.md5 die gleichen MD5-Summen.

  6. Weitere Möglichkeiten findest Du im Wiki von UbuntuUsers.

Drucker installieren, der an den USB-Port einer FRITZ!Box angeschlossen ist

Meinen Drucker (Brother HL-5270DN) habe ich direkt an den USB-Anschluss meines WLAN-Routers (AVM FRITZ!Box Fon WLAN 7270) angeschlossen. Zum einen musste ich dadurch keine Kabel verlegen, zum anderen kann ich den Drucker von jedem Rechner im Netzwerk aus verwenden. Wie man den Drucker unter Ubuntu Linux 13.10 installiert, zeige ich in der folgenden Anleitung.

  1. Zunächst wählt man in den Systemeinstellungen den Bereich „Drucker“ aus.
    Der Bereich "Drucker" in den Systemeinstellungen von Ubuntu.
    Der Bereich „Drucker“ in den Systemeinstellungen von Ubuntu.
  2. Nachdem man auf „Hinzufügen“ geklickt hat, kann man den Drucker im Netzwerk suchen. Als Host gibt man dabei fritz.box (oder alternativ die IP-Adresse 192.168.178.1) ein. Falls man eine zweite FRITZ!Box betreiben sollte, können Hostname und IP-Adresse anders sein.
    Suche des Druckers im Netzwerk.
    Suche des Druckers im Netzwerk.
  3. Im Anschluss sollte der Drucker gefunden werden (hier als „JetDirect (fritz.box)“).
    Drucker wurde im Netzwerk gefunden, und wird als "JetDirect (fritz.box)" angezeigt.
    Drucker wurde im Netzwerk gefunden, und wird als „JetDirect (fritz.box)“ angezeigt.

    Wird der Drucker nicht gefunden, sollte man zunächst in den Verbindungsinformationen der eigenen FRITZ!Box nachsehen, ob der Drucker korrekt angeschlossen ist.

    In den Verbindungsinformationen auf der Startseite der FRITZ!Box sollte der Drucker als USB-Gerät aufgeführt sein.
    In den Verbindungsinformationen auf der Startseite der FRITZ!Box sollte der Drucker als USB-Gerät aufgeführt sein.

    Anstatt den Drucker zu suchen, kann man auch direkt die Adresse des Druckers (socket://fritz.box:9100) eingeben.

    Die direkte Eingabe der Drucker-Adresse kann die Suche im Netzwerk ersetzen.
    Die direkte Eingabe der Drucker-Adresse kann die Suche im Netzwerk ersetzen.
  4. Nun muss man nur noch die richtiger Drucker-Treiber auswählen.
    Auswahl der Drucker-Treiber.
    Auswahl der Drucker-Treiber.
  5. Im Anschluss steht einem der Drucker zur Verfügung.
    Einstellungen des neu installierten Druckers.
    Einstellungen des neu installierten Druckers.
  6. Nun muss nur noch überprüft werden, ob alle Einstellungen korrekt sind. In meinem Falle musste ich noch den doppelseitigen Druck (DoplexNoTumble: drehen an der langen Seite) sowie den Toner-Sparmodus aktivieren.
    Druckeroptionen für den Drucker "Brother HL-5270DN".
    Druckeroptionen für den Drucker „Brother HL-5270DN“.

Absturz von Ubuntu mit der Fehlermeldung „GPU lockup“

Kürzlich habe ich Ubuntu 13.10 auf meinem Rechner installiert. Beim Aufruf der Dash ist das Sysem allerdings das ein oder andere Mal komplett eingefroren oder abgestürzt. Nach einiger Zeit erschien folgende Fehlermeldung:

GPU lockup – switching to software fbcon

Der Begriff „GPU“ in der Fehlermeldung hat mir zu verstehen gegeben, dass es sich um ein Problem mit meiner Grafikkarte handelt. Da ich eine Nvidia Grafikkarte habe, habe ich über das Paket nvidia-current die proprietären Treiber installiert. Seither läuft das System ohne Absturz.

Dateien in ein komprimiertes Archiv verschieben

In meinen Simulationen werden oftmals viele Dateien erzeugt. Damit bin ich schon das ein oder andere Mal an die Grenzen für die Zahl der erlaubten Dateien und den verfügbaren Speicherplatz (quota) gestoßen. Abgesehen davon dauert es länger, wenn man anstatt einer großen Datei viele kleine Dateien herunterlädt.

Daher verschiebe ich die Dateien regelmäßig in ein gepacktes tar-Archiv. Im folgenden Befehl werden alle Dateien mit der Endung .plot in ein neu erstelltes Archiv plot.tar.gz verschoben.

tar --remove-files -czf plot.tar.gz *.plot
–remove-files
Diese Option sorgt dafür, dass die Orginal-Dateien gelöscht werden, sobald sie ins Archiv kopiert wurden.
-c
Diese Option sorgt dafür, dass ein neues Archiv erzeugt wird. Der Name des Archivs wird mit der Option -f angegeben.
Alternativ können mit der Option -r Dateien zu einem bestehenden Archiv hinzugefügt werden:

tar --remove-files -rf plot.tar *.plot

Archive, an die man Dateien anhängen möchte, dürfen allerdings nicht gepackt sein (siehe -z). Ansonsten bekommt man folgende Fehlermeldung:

tar: Cannot update compressed archives
tar: Error is not recoverable: exiting now
-z
Diese Option sorgt dafür, dass das Archiv mit Hilfe von gzip komprimiert wird.
-f
Diese Option legt den Namen des zu behandelnden Archivs fest. Der Name muss (mit einem Leerzeichen getrennt) direkt nach -f stehen.

Generell ist die Reihenfolge der Optionen egal. Allerdings sollte man darauf achten, dass bei Optionen die einen Wert erwarten (z.B. -f), der Wert weiterhin hinter der Option zu finden ist. Zudem müssen die hinzugefügten Dateien ganz am Ende stehen. Hier einige Beispiele für gültige und ungültige Befehle:

# Korrekt:
tar --remove-files -czf plot.tar.gz *.plot
tar --remove-files -c -z -f plot.tar.gz *.plot
tar -f plot.tar.gz --remove-files -zc *.plot
 
# Fehlerhaft:
# Die Namen der zu archivierenden Dateien stehen nicht am Ende
tar *.plot --remove-files -czf plot.tar.gz
# Der Name des Archivs steht nicht hinter -f
tar --remove-files -cfz plot.tar.gz *.plot

Hinweis: Auf Mac OS X-Systemen (oder FreeBSD) ist meistens BSDtar installiert (tar --version ergibt z.B. „bsdtar 2.6.2 – libarchive 2.6.2“). Im Gegensatz zu GNU tar gibt es bei BSDtar die Option --remove-files nicht.

Dateien aus verschlüsseltem Home-Verzeichnis kopieren und löschen

Ich habe mir kürzlich eine neue Festplatte gekauft und darauf ein neues Ubuntu eingerichtet. Nun möchte ich die Daten von meiner alten Festplatte herunterladen und auf die neue Festplatte spielen. Das Problem ist allerdings, dass ich mein Home-Verzeichnis auf der alten Festplatte mit Hilfe von eCryptfs verschlüsselt hatte. In diesem Artikel erkläre ich schrittweise, wie man dennoch die Daten aus einem verschlüsselten Verzeichnis verschieben, kopieren und löschen kann.

  1. Zunächst ist es hilfreich, wenn man sein altes Login-Passwort griffbereit hat. Alternative kann man auch das eCryptfs Mount-Passwort verwenden. Das hat man sich im Optimalfall nach der Installation notiert, oder zu einem späteren Zeitpunkt mit Hilfe des folgenden Befehls angeschaut:

    ecryptfs-unwrap-passphrase
  2. Im Anschluss muss man das Laufwerk/Speichermedium mounten, auf dem sich das verschlüsselte Verzeichnis befindet. Tipp: interne Festplatten und deren Partitionen sind nicht automatisch gemountet – auch nicht, wenn das Symbol in der Seitenleiste von Ubuntu angezeigt wird. In dem Falle muss man einfach einmal auf das Symbol klicken.
  3. Daraufhin gibt man im Terminal einen der beiden folgenden Befehle ein (mit Root-Rechten!; siehe auch UbuntuUsers Forum):

    # Verzeichnis nur mit Leserechten einbinden
    sudo ecryptfs-recover-private
     
    # Verzeichnis mit Schreibrechten einbinden
    # in "man ecryptfs-recover-private" ist die Option --rw etwas versteckt genannt
    sudo ecryptfs-recover-private --rw

    eCryptfs durchsucht nun alle gemounteten Medien nach eCryptfs-verschlüsselten Verzeichnissen. Das kann eine Weile dauern.

    INFO: Searching for encrypted private directories (this might take a while)…

  4. Hat eCryptfs die Suche beendet, wird für jedes gefundene Verzeichnis gefragt, ob es eingebunden werden soll. Dabei sollte man beachten, dass auch das Verzeichnis des angemeldeten Nutzers gefunden wird (in meinem Falle also nicht nur das alte, sondern auch das neue Home-Verzeichnis).

    INFO: Found [/media/neuerusername/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/.ecryptfs/alterusername/.Private].

    Nun wird man zunächst nach seinem Login-Passwort gefragt:

    INFO: Found your wrapped-passphrase
    Do you know your LOGIN passphrase? [Y/n]

    Falls man dieses nicht kennt, wird man nach dem (meist 32-stelligen) Mount-Passwort gefragt:

    INFO: To recover this directory, you MUST have your original MOUNT passphrase.
    INFO: When you first setup your encrypted private directory, you were told to record
    INFO: your MOUNT passphrase.
    INFO: It should be 32 characters long, consisting of [0-9] and [a-f].

    Enter your MOUNT passphrase:

  5. Hat man eines der beiden Passwörter korrekt eingegeben, so wird das Verzeichnis innerhalb des Ordners /tmp eingehängt:

    INFO: Success! Private data mounted at [/tmp/ecryptfs.PW48rluR].

  6. Nun kann man das Verzeichnis im Datei-Browser öffnen – entweder durch klicken, oder durch den Start von nautilus (mit dem Verzeichnis als Parameter) aus dem Terminal heraus:

    nautilus /tmp/ecryptfs.PW48rluR
  7. Hinweis: Sollten sich in dem Verzeichnis nur Dateien befinden, die z.B. mit ECRYPTFS_FNEK_ENCRYPTED. beginnen, hat man das Mount-Passwort sehr wahrscheinlich falsch eingegeben.

Werbung aus der Ubuntu-Dash entfernen

Wenn man in das Suchfeld der Dash einen Begriff eingibt, wird nicht nur auf der Festplatte gesucht, sondern auch im Internet. Das finde ich persönlich im Bezug auf der Datenschutz sehr fragwürdig. Im folgenden Artikel zeige ich, wie man diese Werbung ganz leicht deaktivieren kann.

Gibt man in die Dash einen Suchbegriff ein, wird standardmäßig Werbung für den Kauf von Musik angezeigt.
Gibt man in die Dash einen Suchbegriff ein, wird standardmäßig Werbung für den Kauf von Musik angezeigt.

In der aktuellen Version von Ubuntu (13.10: Saucy Salamander) wird zum Beispiel Werbung für Musik angezeigt. In früheren Versionen scheint es Werbung für Amazon gewesen zu sein (siehe UbuntuUsers Wiki). Diese Werbung wird durch Unity-Lenses in die Dash integriert. Es gibt nun zwei Möglichkeiten diese Werbung aus der Dash zu verbannen:

  1. Online-Suche in den Ubuntu-Einstellungen deaktivieren
  2. Verantwortliche Unity-Lenses deinstallieren

Online-Suche deaktivieren

Die Weitergabe des Suchbegriffes an Online-Services kann in den Ubuntu-Einstellungen deaktiviert werden. Dazu gehst du einfach auf „Systemeinstellungen -> Privatsphäre -> Suchergebnisse -> Online-Suchergebnisse“ und deaktivierst diese.

Deaktivierung der Online-Suchergebnisse in der englischsprachigen Version von Ubuntu.
Deaktivierung der Online-Suchergebnisse in der englischsprachigen Version von Ubuntu.

Das ist auch der Weg, der in der Legal Notice von Ubuntu vorgeschlagen wird:

Online Search
You may restrict your dash so that we don’t send searches to third parties and you don’t receive online search results. To do this go to the Privacy panel and toggle the ‘Include online search results’ option to off. The Privacy panel can be found in your System Settings or via a dash search. For a current list of our selected third parties, please see www.ubuntu.com/privacypolicy/thirdparties.

Unity Lenses deinstallieren

In der zweiten Variante deinstallierst Du einfach die verantwortlichen Unity Lenses.

  • unity-lens-shopping – war laut UbuntuUsers für die Amazon-Werbung verantwortlich
  • unity-scope-musicstores – Dieses Paket erweitert unity-lens-music um die Möglichkeit Musik online zu kaufen

Ubuntu ISO-Dateien nach dem Download überprüfen

Nach dem Download von Ubuntu (oder anderer Dateien aus dem Internet) überprüfe ich immer, ob die Datei(en) korrekt heruntergeladen wurde(n). Eine Möglichkeit ist, die MD5-Summe der ISO-Dateien zu berechnen.

Unter Linux steht dazu der Befehl md5sum zur Verfügung

1
2
3
4
# MD5-Summen aller *.iso-Dateien berechnen und in md5sums.txt schreiben:
md5sum *.iso > md5sums.txt
# Inhalt der Datei anzeigen:
cat md5sums.txt

Als Ausgabe bekommt man z.B.:

8d72e2db7e72e13813731eab37a14d26  ubuntu-13.04-desktop-amd64.iso
5d5d1a7da2a0659b163d4f8bd70fbe6f  ubuntu-13.04-desktop-i386.iso
21ec41563ff34da27d4a0b56f2680c4f  ubuntu-13.10-desktop-amd64.iso
d0508f909c2c71d96aeac5efb0329b33  ubuntu-13.10-desktop-i386.iso

Unter MacOSX steht dazu der Befehl md5 zur Verfügung

1
2
3
4
# MD5-Summen aller *.iso-Dateien berechnen und in md5sums.txt schreiben:
md5 *.iso > md5sums.txt
# Inhalt der Datei anzeigen:
cat md5sums.txt

Als Ausgabe bekommt man z.B.:

MD5 (ubuntu-13.04-desktop-amd64.iso) = 8d72e2db7e72e13813731eab37a14d26
MD5 (ubuntu-13.04-desktop-i386.iso) = 5d5d1a7da2a0659b163d4f8bd70fbe6f
MD5 (ubuntu-13.10-desktop-amd64.iso) = 21ec41563ff34da27d4a0b56f2680c4f
MD5 (ubuntu-13.10-desktop-i386.iso) = d0508f909c2c71d96aeac5efb0329b33

Nun muss man nur noch die ermittelten Summen mit den erwarteten Summen vergleichen. Leider werden auf der Downloadseite von Ubuntu nicht mehr standardmäßig die MD5-Testsummen bereitgestellt. Allerdings gibt es eine Seite mit allen bisherigen Testsummen für Ubuntu.

Datenträger unter Ubuntu bereinigen

Ich habe gerade eben folgende Fehlermeldung nach dem Start von Ubuntu bekommen:

Auf dem Datenträger „Wurzelordner des Dateisystems“ ist nur noch XXX kB Speicherplatz verfügbar.

In meinem Falle war XXX gleich 0. Es war also höchste Zeit, dass ich mal wieder unnötige Dateien von meiner System-Partition lösche. Ich hatte allerdings längst wieder vergessen, was man alles machen kann. Daher habe ich nun eine kleine Liste zusammengestellt:

  • Zunächst habe ich den Inhalt des temporären Verzeichnisses gelöscht.

    1
    2
    
    # Temporäreres Verzeichnis leeren
    rm -r /tmp/*

    Darin hatten sich Fehlermeldungen von apport angesammelt, die bei Programmabstürzen erstellt worden waren. Teilweise konnten diese aber nicht abgesendet werden, weil keine Internetverbindung bestand. In meinem Falle hatten sich über die Jahre mehr als 1.5 GB angesammelt.

  • Im Anschluss habe ich heruntergeladene Paket-Dateien, sowie nicht mehr benötigte Pakete gelöscht:

    1
    2
    3
    4
    
    # Paketdateien löschen
    sudo apt-get clean
    # Nicht mehr benötigte Pakete löschen
    sudo apt-get --purge autoremove

    Letzterer Befehl hat früher scheinbar auch nicht mehr benötigte Kernel-Versionen gelöscht (UbuntuUsers Forum). Das ist jetzt allerdings nicht mehr der Fall.

  • In regelmäßigen Abständen sollte man auch das Programm baobab („Festplattenbelegung analysieren“) aufrufen. Damit kann man herausfinden, welche Verzeichnisse besonders viele Daten enthalten. In meinem Falle habe ich gesehen, dass sich viele Kernel-Versionen angesammelt hatten (Ordner: /usr/src und /lib/modules):

    Das Programm "baobab" stellt die Größe von Ordnern grafisch dar. In diesem Fall kann man erkennen, dass ein großer Teil der Partition mit alten Kernel-Versionen belegt ist.
    Das Programm „baobab“ stellt die Größe von Ordnern grafisch dar. In diesem Fall kann man erkennen, dass ein großer Teil der Partition mit alten Kernel-Versionen belegt ist.

    Wie im UbuntuUsers-Forum beschrieben, kann man im Terminal ähnlich vorgehen:

    1
    2
    
    # Platzbedarf der Ordner im Wurzelverzeichnis anzeigen
    sudo du -h / --max-depth=1

    Im Anschluss kann man sich weiter auf die Suche machen und z.B. eine Liste der installierten Kernel-Versionen ausgeben lassen:

    1
    2
    
    # Installierte Kernel-Versionen anzeigen lassen
    dpkg -l linux-image-*

    Die Ausgabe könnte dann folgendermaßen aussehen:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    
     

    Da bei mir vor allem die Zahl der alten Linux-Kernel ein Problem war, habe ich einige davon gelöscht. Wie im Wiki von UbuntuUsers beschrieben, habe ich dazu in der Paketverwaltung Synaptic nach

    1. linux-image-
    2. linux-headers-

    gesucht und entsprechende Pakete vollständig entfernt. Mindestens eine ältere Version sollte man allerdings behalten. Dadurch habe ich 3.5GB frei machen können.

    Wenn man die Kernel im Terminal entfernen möchte, sind diverse Lösungen im Netz zu finden: LinuxMintUsers.de, webupd8.org, linuxundich.de, UbuntuUsers Forum

  • Große Dateien können sich auch im Verzeichnis /var/log ansammeln. Das war bei mir allerdings nicht der Fall, was ich folgenden Befehlen überprüft habe:

    # Dateien sortiert nach Nutzungsdatum auflisten
    ls -aluh /var/log
    # Größe des gesamten Ordners ausgeben lassen
    sudo du -sh /var/log
  • Wenn man im eigenen Home-Verzeichnis Ordnung schaffen möchte, bietet sich das Programm FSlint an. Nach der Installation des Programmpaketes fslint, lässt sich das Programm über den Befehl fslint-gui starten. Im Anschluss kann man viele ungenutzte Dateien und Ordner suchen und ggf. direkt löschen:

    • Duplikate
    • Temporäre Dateien (außerhalb des Verzeichnisses /tmp)
    • Leere Verzeichnisse
    • Fehlerhafte Symlinks
    Das Programm FSlint kann unter anderem Dateien mit identischem Inhalt finden. Dabei spielt es keine Rolle, ob die Dateien unterschiedliche Namen oder Erstellungsdaten haben.
    Das Programm FSlint kann unter anderem Dateien mit identischem Inhalt finden. Dabei spielt es keine Rolle, ob die Dateien unterschiedliche Namen oder Erstellungsdaten haben.