01.
Juni
2011
      Nach der Neuinstallation von Linux Mint 11 (Katya) erhielt ich beim Anwenden von Mozilla Thunderbird stets eine Fehlermeldung der »GPG-Agent« könne nicht gestartet werden.
      
      Was ist gpg-agent überhaupt? Wenn man mit GnuPG arbeitet, beispielsweise weil man seine E-Mails signiert und/oder verschlüsselt, muss man stets das »Mantra« (das Passwort) eingeben. Beantwortet man mehrer E-Mails hintereinander oder will man mehrere verschlüsselt erhaltene E-Mails lesen, müsste man stets das Mantra erneut eingeben.
      
      gpg-agent speichert das Mantra in einem Zwischenspeicher und fragt erst nach dem Ablauf eines festlegbaren Zeitintervalls erneut danach. Sollte gpg-agent nicht gestartet sein, erhält man eine entsprechende Fehlermeldung:
    
      Die Fehlermeldung ist dabei ein wenig irreführend. Man könnte vermuten, dass sie nicht installiert ist – was allerdings in der Regel schon passiert ist wenn man das GnuPG-Paket samt Abhängigkeiten installiert hat.
      
      Die Fehlermeldung sollte eher vermitteln, dass auf den GPG-Agent nicht zugegriffen werden konnte da dieser nicht gestartet ist. 
      
      Die Lösung für das Problem ist sehr einfach. Mit einem kleinen Eintrag in der im eigenen Home-Verzeichnis abgelegten Konfigurationsdatei für GnuPG kann gpg-agent beim Einloggen des Benutzers automatisch mit gestartet werden. Die Konfigurationsdatei ~/.gnupg/gpg.conf sah bei mir wie folgt aus:
    
      
###+++--- GPGConf ---+++###
utf8-strings
keyserver hkp://keys.gnupg.net
###+++--- GPGConf ---+++### 11/12/09 10:22:07 Mitteleuropäische Zeit
# GPGConf edited this configuration file.
# It will disable options before this marked block, but it will
# never change anything below these lines.
    
    
      Damit gpg-agent wie beschrieben beim Anmelden automatisch gestartet werden soll muss der Eintrag use-agent in einer Zeile eingefügt werden. Wie man der Konfigurationsdatei entnehmen kann sollte der Eintrag einfach ans Ende der Datei angefügt werden. Dies kann mit dem folgenden Einzeiler an der Komanndozeile bewerkstelligt werden:
    
      
echo "use-agent" >> ~/.gnupg/gpg.conf
    
    Anschließend sollte die Konfigurationsdatei wie folgt aussehen:
      
###+++--- GPGConf ---+++###
utf8-strings
keyserver hkp://keys.gnupg.net
###+++--- GPGConf ---+++### 11/12/09 10:22:07 Mitteleuropäische Zeit
# GPGConf edited this configuration file.
# It will disable options before this marked block, but it will
# never change anything below these lines.
use-agent
    
    
      Nach dem Ab- und erneuten Anmelden des Benutzers an der grafischen Oberfläche sollte die Fehlermeldung beim Benutzen von Programmen wie Mozilla Thunderbird nicht mehr erscheinen.
      
      Weitere zusätzliche angaben wie man die Konfigurationdatei anpassen beziehungsweise optimieren kann sind auf der zum GPG-Agent gehörigen Wiki-Seite[1] der deutschsprachigen Ubuntu-Wiki zu finden.
      
      Abschließend noch als Erklärung (da diese in dem Wiki-Eintrag nicht aufgeführt ist): Der Aufruf use-agent wird von /etc/X11/Xsession.d/90gpg-agent überprüft. Das Script ist bei Linux-Mint, Ubuntu und anderen auf Debian GNU/Linux basierenden Distributionen unter dem angegebenen Pfad vorhanden. Der Inhalt des Scripts:
    
      
: ${GNUPGHOME=$HOME/.gnupg}
GPGAGENT=/usr/bin/gpg-agent
PID_FILE="$GNUPGHOME/gpg-agent-info-$(hostname)"
if grep -qs '^[[:space:]]*use-agent' "$GNUPGHOME/gpg.conf" "$GNUPGHOME/options" &&
   test -x $GPGAGENT &&
   { test -z "$GPG_AGENT_INFO" || ! $GPGAGENT 2>/dev/null; }; then
   if [ -r "$PID_FILE" ]; then
       . "$PID_FILE"
   fi
   # Invoking gpg-agent with no arguments exits successfully if the agent
   # is already running as pointed by $GPG_AGENT_INFO
   if ! $GPGAGENT 2>/dev/null; then
       STARTUP="$GPGAGENT --daemon --sh --write-env-file=$PID_FILE $STARTUP"
   fi
fi
    
    
      Bei anderen Distributionen könnte ein anderes Script den GPG-Agent automatisch beim Anmelden unter X ausführen. In diesem Fall die Dokumentation der jeweiligen Distribution nach einem entsprechenden Vermerk durchsuchen – oder das über diesem Absatz abgebildete Script verwenden. 
      
      X_FISH