apt/aptitude: Was die Buchstaben vorne beim Paketstatus bedeuten

Vieles kennt man ja. Was „h“ war musste ich grad nachlesen und weil die Übersicht so praktisch ist kopiere ich sie mir hierher damit ich sie in Zukunft besser finde

The first character is the package’s current state. The second character is the action which will be taken on the package. The third character indicates whether the package was automatically installed, and the fourth character indicates whether the package is trusted.

Values of the „current state“ flag

  • i – the package is installed and all its dependencies are satisfied.
  • c – the package was removed, but its configuration files are still present.
  • p – the package and all its configuration files were removed, or the package was never installed.
  • v – the package is virtual.
  • B – the package has broken dependencies.
  • u – the package has been unpacked but not configured.
  • C – half-configured: the package’s configuration was interrupted.
  • H – half-installed: the package’s installation was interrupted.

Values of the „action“ flag

  • i – the package will be installed.
  • u – the package will be upgraded.
  • d – the package will be deleted: it will be removed, but its configuration files will remain on the system.
  • p – the package will be purged: it and its configuration files will be removed.
  • h – the package will be held back: it will be kept at its current version, even if a newer version becomes available, until the hold is cancelled.
  • F – An upgrade of the package has been forbidden.
  • r – the package will be reinstalled.
  • B – the package is “broken”: some of its dependencies will not be satisfied. aptitude will not allow you to install, remove, or upgrade anything while you have broken packages.

Quelle: http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s02s02.html#figureActionFlag

Snippets: git, aptitude, who, mysql, tcpdump, lftp

Ein Sammelsurium von diversen Kommandos die sich angesammelt haben und die ich mir eben aufschreiben musste:

  • GIT – Die Aenderungen von Commit XYZ anzeigen:
    git show COMMITHASH
  • GIT – In den git commit messages suchen:
    git log --all --grep "foo"
  • GIT – Was hab ich noch mal in dieser Datei seit dem letzten pullen geaendert?
    git diff HEAD /path/to/file
  • APTITUDE – Was ist die Abhaengigkeitskette warum dieses Paket installiert ist:
    aptitude why PACKAGENAME
  • WHO – Wann wurde das System das letzte mal neu gestartet?
    who -b
  • MYSQL – Wie erzeuge ich die Tabelle neu:
    SHOW CREATE TABLE tabellenname;
  • TYPDUMP – Mit tcpdump den Traffic mitschneiden und in einer Datei speichern um diese später mit wireshark zu analysieren:
    tcpdump -i eth0 host 192.168.1.30 -X -s0 -w /tmp/foo
  • LFTP: Verzeichnislisting rekursiv erzeugen und Ausgabe in einer Textdatei speichern:
    lftp -u user,pass -e 'find /;bye' host > file_list

aptitude mit search pattern; Systeme ohne DNS; Apache Satisfy Direktive; bash Bedeutung der Klammern

  1. Loeschen von Paketen mittels aptitude und search pattern um mehrere Pakete gleichzeitig zu loeschen, aber nicht alle hintereinander einzugeben. Das kann man mit ~n. Hier ein klassisches Beispiel wo ich das anwende. Rausfinden welcher Kernel gerade laeuft, rausfinden was es alles an alten Kernel Images auf dem System gibt, loeschen aller linux-image-2.6.32-3*:
    $ uname -a
    $ sudo aptitude search linux-image | grep "^i"
    $ sudo aptitude purge ~nlinux-image-2.6.32-3
  2. Manchmal hat man Systeme, bei denen kein DNS verfuegbar ist. Das fuehrt dann dazu, dass einige Sachen extrem lange dauern, weil Sie versuchen irgendetwas ueber DNS aufzuloesen und dann erst weiter machen wenn es einen Timeout gibt. Als erstes sollte man dann pruefen, dass der eigene Hostname in der /etc/hosts korrekt auf localhost gemappt ist. Oft rgibt es dann auch noch Sinn in der /etc/ssh/sshd_config den folgenden Schalter zu aktivieren:
    UseDNS no
  3. Manchmal moechte man bei einem Apache Webserver etwas fuer einen bestimmten IP Bereich direkt freigeben, und ansonsten soll ein Passwort eingegeben werden. Jeweils das eine von beiden ist einfach realisiert. Wenn man beides moechte, braucht man die Satisfy Direktive. Klassisches Beispiel dafuer:
            <Location "/foo">
                    Order deny,allow
                    Deny from all
                    AuthName "Foo Login"
                    AuthUserFile /path/to/.htpasswd
                    AuthType Basic
                    Require valid-user
                    Allow from 192.168
                    Satisfy Any
                    ProxyPass http://localhost:8080/foo/ timeout=6000
                    ProxyPassReverse http://localhost:8080/foo/
            </Location>
  4. bash Klammern. Immer wieder spannend, deswegen hier mal eben aus meinem Kopf heraus festgehalten wie ich mit ihnen arbeite:
    • () = Subshell. Benutze ich zum Beispiel beim anlegen von Sicherheitskopien mit:

       $ mv foo.txt foo.txt-$(date -I)
    • [] in Schleifen = Ruft das Programm „[“ auf, oder auch „test“. In einer if [ ! -d „/tmp“ ]; echo „directory /tmp does not exist.“; fi Schleife wird bei dem [ das Programm mit dem Namen „[“ aufgerufen. Liegt zum Beispiel unter /usr/bin/[ und hat auch eine eigene manpage.
    • [[]] in Schleifen = Bash eigene Funktion. Darin kann man dann auch Regex verwenden. Beispiel

      $ FOO=1234
      $ if [[ $FOO =~ ^[0-9]*$ ]]; then echo "OK"; else echo "NO"; fi
      OK
      $ FOO=1234a
      $ if [[ $FOO =~ ^[0-9]*$ ]]; then echo "OK"; else echo "NO"; fi
      NO
      $
    • {} = Variablen und Listen. Ich nutze das um in Skripten Variablen besser ersichtlich zu machen, zum Beispiel

      /bin/bash
      FOO=foo.txt
      mv ${FOO} ${FOO}_$(date -I)

      Ausserdem fuer Listen, zum Beispiel wenn man mehrere Ordner mit Unterordnern anlegen moechte:

      mkdir -p /tmp/foo/bar/{one,two,three,four}/

      Nicht zu vergessen die ganzen build-in Shell Funktionen bei den Klammern, z.B. hier, da, dort, guckstu, minneminne

Search for package status using aptitude

Wenn man mittels aptitude nach Paketen sucht, dann steht ja vorne immer ein Buchstabe, der den Paketstatus anzeigt. Welche Buchstaben moeglich sind und was sie bedeuten steht im Aptitude reference guide im Abschnitt Accessing package information.

Praktisch ist danach zu suchen. Ich wollte alle Pakete mit dem Status „c“ finden, um alte Konfigurationsdateien von Paketen zu entfernen. Suche ist mit:

aptitude search '~c'

und loeschen ging dann mit:

aptitude purge '~c'

Praktisch!