Smarty $use_sub_dirs=true

MyOOS verwendet in der Kundinstallation die Vorgabewert ‚false‘ von
Smarty für [i]$use_sub_dirs[/i].

Wenn $use_sub_dirs auf ‚true‘ gesetzt ist wird Smarty unterhalb der Verzeichnisse templates_c und cache Unterverzeichnisse anlegen. In einer Umgebung in der möglicherweise zehntausende Dateien angelegt werden kann das helfen, die Geschwindigkeit des Zugriffs auf das Dateisystem zu optimieren. Andererseits gibt es Umgebungen, in denen PHP-Prozesse nicht die Berechtigung zum Anlegen von Unterverzeichnissen haben, so dass diese Funktion nicht genutzt werden kann. Der Vorgabewert ist ‚false‘, aus Performancegründen wird allerdings empfohlen diesen Wert auf ‚true‘ zu setzen, wenn die Systemumgebung dies zulässt

Quelle: Smarty Handbuch

Wenn man die Dateistruktur mit 10 Verzeichnissen im MyOOS nutzen möchten, ändert man in
~/shop/includes/classes/class_template.php

von

$this->use_sub_dirs = false;

nach

$this->use_sub_dirs = true;

Mit xdebug dem Profiler / Debugger für PHP kann die Performance leicht feststellen.

weitere Informationen:
Smarty Handbuch
Installation von xdebug
www.oos-shop.de/doc/smarty/html/

Entlastung von MySQL mit Adodb

Wenn der Shop eingerichtet ist kann man die eingebauten Performance-Vorteile nutzen.

Eigentlich ist die Angelegenheit ganz banal. in der Datei
~/shop/includes/oos_define.php den Wert der Konstanten
USE_DB_CACHE auf true ändern.

  define('USE_DB_CACHE', 'true');   // OOS SQL-Layer Cache

Weitere Änderungen an den Sourcen vom Projekt sind nicht notwendig. Aber wer es einmal ausporbieren möchte….

~/shop/includes/oos_blocks.php

Über die Datenbankabfrage werden die Content Blöcke rechts und links zum Inhalt geladen.

 $block_result = $dbconn->GetAll($block_sql);

Wenn das Ergebnis der Datenbankabfrage für 24 Stunden gültig sein soll

 $dbconn->cacheSecs = 3600*24; // cache 24 hours

für 12 Stunden verwendet man

 $dbconn->cacheSecs = 3600*12; // cache 12 hours

für 30 Minuten

 $dbconn->cacheSecs = 1800;

Wir ersetzen nun

 $block_result = $dbconn->GetAll($block_sql);

durch

 if (USE_DB_CACHE == 'true') {
   $dbconn->cacheSecs = 3600*24; // cache 24 hours
   $block_result = $dbconn->CacheExecute($block_sql);
 } else {
   $block_result = $dbconn->GetAll($block_sql);
 }

Der Shop speichert nun in das $ADODB_CACHE_DIR das Ergebis für
einen Tag zwischen.

Weitere Informationen im adodb Handbuch und in unserem adodb Handbuch

xdebug Installation

xdebug ist ein PHP-Debugger-Tool.

Um xdebug mit PHP nutzen zu können, muss das PECL Modul xdebug verwendet werden.

Da PECL-Erweiterungen nicht mit PHP mitgeliefert werden, müssen sie nachträglich installiert werden. Danach kann man sie, wie andere Erweiterungen auch, von PHP aus verwenden.

pecl install xdebug

Der Installer kümmert sich darum, dass die Erweiterung automatisch in der neusten Version heruntergeladen, das Archiv entpackt, die Erweiterung kompiliert und in das Erweiterungs-Verzeichnis kopiert wird. Im Anschluss muss die Erweiterung noch in der php.ini eingetragen werden.

Bei mir steht da folgendes drin:

# cat /etc/php5/apache2/php.ini | grep xdebug
zend_extension="/usr/lib/php5/extensions/xdebug.so"
xdebug.auto_trace=1
xdebug.auto_profile=1
xdebug.collect_params=1
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/home/r23/entwicklung/www/xdebug"

Die von XDebug generierten Files lassen sich dann in KCachegrind öffnen und nach verschiedenen Kriterien filtern.

schicke Graphen mit KCachegrind

Versicherter Versand mit Österreichische Post AG

Version für MyOOS 1.6.x
Das Modul wird ab MyOOS Version 1.7.9 mit ausgeliefert.

Download

download

Installation
Die Installation ist sehr einfach. Es werden nur 2 Dateien benötigt. Eine Datei mit dem Code wird nach ~/shop/includes/modules/shipping/
kopiert und die zweite Datei, die die Sprachdefinitionen enthält, nach
~/shop/includes/languages/deu/modules/

Das neue Modul wird im Adminbereich automatisch erkannt und angezeigt.

rkhunter installieren und benutzen

Diese Anleitung behandelt die Installation und Verwendung vom Rootkit-Scannern rkhunter unter Linux.

Diese Anleitung setzt voraus, dass man zumindest theoretisch weiß, was Rootkits sind.

http://de.wikipedia.org/wiki/Rootkit
Heimliche Hintertüren – Rootkits aufspüren und beseitigen

1. Laden Sie die aktuelle Version von rkhunter herunter.

cd /tmp && wget http://ovh.dl.sourceforge.net/sourceforge/rkhunter/rkhunter-1.3.2.tar.gz

2. Entpacken der Archivdatei

tar -xzf rkhunter-1.3.2.tar.gz

3. Installieren

/installer.sh -layout /usr/localinstall

4. Starten

cd /usr/local/bin
./rkhunter –check

Wenn beim Scan Warnungen ausgegeben werden, sollte man ihnen auf den Grund gehen und selber entscheiden, ob es sich um einen echten Einbruch handelt. Bei unverständlichen „Warnings“ hilft oft Suchen im Internet weiter.

Die Signaturen von rkhunter lassen sich per

./rkhunter --update

aktualisieren.

5. Täglicher Scan Report per Mail

Im folgenden Schritt legen wir ein Script in /etc/cron.daily/ mit dem Namen rkhunter.sh an

pico /etc/cron.daily/rkhunter.sh

und füllen es mit nachstehenden Zeilen.

 
add the following replacing your email address:
 
#!/bin/bash
(
/usr/local/bin/rkhunter --versioncheck
/usr/local/bin/rkhunter --update
/usr/local/bin/rkhunter -c --cronjob 2>&1 | mail -s "Daily Rkhunter Scan Report" ihre_email@domain.com
)
chmod +x /etc/cron.daily/rkhunter.sh

macht das Script rkhunter.sh ausführbar.

eAccelerator Installieren

eAccelerator Installation und Konfiguration

1. Laden Sie die aktuelle Version von eAccelerator herunter.

cd /tmp && wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2

2. Datei überprüfen

sha1sum eaccelerator-0.9.5.3.tar.bz2

Die jetzt angegebene Prüfsumme gleichen Sie mit der Prüfsumme ab, die auf der
eAccelerator Homepage angegeben ist. Wenn die beiden Summen nicht übereinstimmen, ist die Datei
fehlerhaft und sollte nochmals heruntergeladen werden.

>http://eaccelerator.net/wiki/Release-0.9.5.3

3. Entpacken der Archivdatei

tar xvfj eaccelerator-0.9.5.3.tar.bz2

4. Kompilieren und Installieren des Moduls
Die Pakete gcc, autoconf, automake, libtool, m4 müssen installiert sein. Für phpize muss auch php-devel installiert sein.

cd eaccelerator-0.9.5.3
phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config
make && make install

5. Konfiguration in php.ini eintragen.

Am Ende der Datei folgendes anhängen:

extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/oos_tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

6. Verzeichnis für den Cache anlegen

mkdir /oos_tmp/eaccelerator
chmod 0777 /oos_tmp/eaccelerator

Um die Änderungen zu aktivieren, muss der Webserver neu gestartet werden. Danach kann über phpinfo (Admin => Hilfsprogramme => Server Info hier PHP Version) validiert werden, ob eAccelerator unter PHP verfügbar ist.

Memcache mit MyOOS

Mit Memcache lassen sich Teile eines Programmes in den Hauptspeicher verlagern, für die z.B. Datenbankzugriffe oder Dateizugriffe notwendig wären. Memcache nimmt der Datenbank fantastisch
viel Arbeit ab. Alle Objekte sind im Memcache, kein Code greift direkt auf die Datenbank zu.
Die Datenbank wird dadurch um eine Größenordung entlastet. Was die Datenbank leisten müsste
sieht man dann, wenn der Cache leer ist.

Der Memcache ist ein verteilter Speicher. Er ist verteilt über mehrere Rechner. Will man keine Rechner extra für den Memcache abstellen, dann verwendet man traditionell die Webserver auch als Memcache-Server. Das heißt nicht, dass es schneller wird, weil die meisten Zugriffe nicht lokal sind, aber billiger weil man keine extra Rechner braucht. Die Webserver hat man ja sowieso. Die Standardvorgehensweise ist also: 10 Webserver hinter einem Loadbalancer. Auf jedem Webserver ein memcached. Das wird deshalb empfohlen, weil Webserver vor allem CPU brauchen (CPU bound) und der Memcache vor allem Speicher (memory bound). Man kann also die jeweils „andere“ Ressource auch noch nutzen.

Installation und Konfiguration von memcache
memcached herunterladen

cd /tmp && wget http://www.danga.com/memcached/dist/memcached-1.2.3.tar.gz

Kompilieren und Installieren

cd memcached-1.2.3
./configure --prefix=/usr --sysconfdir=/etc
make && make install

Starten des Dienstes

/usr/bin/memcached -d -m 2048 -l 10.0.0.40 -p 11211
    Erklärung zu den verwendeten Parametern:

  • -d Startet memcached als Dienst
  • -m Gibt an, wieviel Hauptspeicher memcached benutzen kann. Diese Angabe wird in MB angegeben
  • -l Unter welcher IP der Daemon angesprochen wird
  • -p Unter welchem Port der Daemon angesprochen wird
r23@home:~> /usr/bin/memcached -h
memcached 1.2.3
-p <num>      TCP port number to listen on (default: 11211)
-U <num>      UDP port number to listen on (default: 0, off)
-s <file>     unix socket path to listen on (disables network support)
-l <ip_addr>  interface to listen on, default is INDRR_ANY
-d            run as a daemon
-r            maximize core file limit
-u <username> assume identity of <username> (only when run as root)
-m <num>      max memory to use for items in megabytes, default is 64 MB
-M            return error on memory exhausted (rather than removing items)
-c <num>      max simultaneous connections, default is 1024
-k            lock down all paged memory
-v            verbose (print errors/warnings while in event loop)
-vv           very verbose (also print client commands/reponses)
-h            print this help and exit
-i            print memcached and libevent license
-b            run a managed instanced (mnemonic: buckets)
-P <file>     save PID in <file>, only used with -d option
-f <factor>   chunk size growth factor, default 1.25
-n <bytes>    minimum space allocated for key+value+flags, default 48

Memcached mit PHP nutzen

Um memcached mit PHP nutzen zu können, muss das PECL Modul memcache verwendet werden.

Da PECL-Erweiterungen nicht mit PHP mitgeliefert werden, müssen sie nachträglich installiert werden. Danach kann man sie, wie andere Erweiterungen auch, von PHP aus verwenden.

pecl install memcache

Der Installer kümmert sich darum, dass die Erweiterung automatisch in der neusten Version heruntergeladen, das Archiv entpackt, die Erweiterung kompiliert und in das Erweiterungs-Verzeichnis (./ext) kopiert wird. Im Anschluss muss die Erweiterung noch in der php.ini eingetragen werden.

extension=memcache.so

Um die Änderungen zu aktivieren, muss der Webserver neu gestartet werden. Danach kann über phpinfo (Admin => Hilfsprogramme => Server Info hier PHP Version) validiert werden, ob memcache unter PHP verfügbar ist.

Passen Sie nun noch die Port und IP Adresse von Ihren Memcach Server in
~/shop/includes/functions/function_db.php an

      $dbconn->memCache = true; // should we use memCache instead of caching in files
      $dbconn->memCacheHost = '126.0.1.1'; // $db->memCacheHost = array($ip1, $ip2, $ip3); // $db->memCacheHost = $ip1; still works
      $dbconn->memCachePort = '11211'; // this is default memCache port
      $dbconn->memCacheCompress = false; // Use 'true' to store the item compressed (uses zlib)

Release MyOOS 1.6.12

Das MyOOS – Entwicklerteam freut sich die Freigabe von MyOOS 1.6.12 bekannt geben zu können.
MyOOS 1.6.12 kann über unsere BerliOS Seite herunter geladen werden. (ca. 9 MB)

download

Die aktuelle Fassung kann über eine existierende MyOOS -Installation der Version 1.n aufgespielt
werden.

Fehlermeldung bei der Installation von GnuPG für PHP

Die Installation von GnuPG für PHP bricht mit dieser Fehlermeldung ab

In file included from /tmp/pear/download/gnupg-1.3.1/php_gnupg.h:31,
                 from /tmp/pear/download/gnupg-1.3.1/gnupg.c:22:
/usr/include/gpgme.h:53:23: error: gpg-error.h: No such file or directory
In file included from /tmp/pear/download/gnupg-1.3.1/php_gnupg.h:31,
                 from /tmp/pear/download/gnupg-1.3.1/gnupg.c:22:
/usr/include/gpgme.h:95: error: syntax error before 'gpgme_error_t'
/usr/include/gpgme.h:96: error: syntax error before 'gpgme_err_code_t'
/usr/include/gpgme.h:97: error: syntax error before 'gpgme_err_source_t'
/usr/include/gpgme.h:101: error: syntax error before 'gpgme_err_make'
/usr/include/gpgme.h:101: error: syntax error before 'source'
/usr/include/gpgme.h: In function 'gpgme_err_make':
/usr/include/gpgme.h:103: error: 'source' undeclared (first use in this function)
/usr/include/gpgme.h:103: error: (Each undeclared identifier is reported only once
/usr/include/gpgme.h:103: error: for each function it appears in.)
/usr/include/gpgme.h:103: error: 'code' undeclared (first use in this function)
/usr/include/gpgme.h: At top level:
/usr/include/gpgme.h:114: error: syntax error before 'gpgme_error'
/usr/include/gpgme.h:114: error: syntax error before 'code'
/usr/include/gpgme.h: In function 'gpgme_error':
/usr/include/gpgme.h:116: error: 'GPG_ERR_SOURCE_USER_1' undeclared (first use in this function)
/usr/include/gpgme.h:116: error: 'code' undeclared (first use in this function)
/usr/include/gpgme.h: At top level:
/usr/include/gpgme.h:121: error: syntax error before 'gpgme_err_code'
/usr/include/gpgme.h:121: error: syntax error before 'err'
/usr/include/gpgme.h: In function 'gpgme_err_code':
/usr/include/gpgme.h:123: error: 'err' undeclared (first use in this function)
/usr/include/gpgme.h: At top level:
/usr/include/gpgme.h:128: error: syntax error before 'gpgme_err_source'
/usr/include/gpgme.h:128: error: syntax error before 'err'
/usr/include/gpgme.h: In function 'gpgme_err_source':
/usr/include/gpgme.h:130: error: 'err' undeclared (first use in this function)
/usr/include/gpgme.h: At top level:
/usr/include/gpgme.h:136: error: syntax error before 'err'
/usr/include/gpgme.h:145: error: syntax error before 'err'
/usr/include/gpgme.h:150: error: syntax error before 'err'
/usr/include/gpgme.h:156: error: syntax error before 'gpgme_err_code_from_errno'
/usr/include/gpgme.h:161: error: syntax error before 'code'
/usr/include/gpgme.h:166: error: syntax error before 'gpgme_err_make_from_errno'
/usr/include/gpgme.h:166: error: syntax error before 'source'
/usr/include/gpgme.h:170: error: syntax error before 'gpgme_error_from_errno'
/usr/include/gpgme.h:522: error: syntax error before 'gpgme_error_t'
/usr/include/gpgme.h:545: error: syntax error before '}' token
/usr/include/gpgme.h:664: error: syntax error before '*' token
/usr/include/gpgme.h:667: error: 'gpgme_error_t' declared as function returning a function
/usr/include/gpgme.h:667: error: 'gpgme_error_t' redeclared as different kind of symbol
/usr/include/gpgme.h:95: error: previous declaration of 'gpgme_error_t' was here
/usr/include/gpgme.h:676: error: 'gpgme_edit_cb_t' declared as function returning a function
/usr/include/gpgme.h:682: error: 'gpgme_new' declared as function returning a function
/usr/include/gpgme.h:688: error: 'gpgme_set_protocol' declared as function returning a function
/usr/include/gpgme.h:716: error: 'gpgme_set_keylist_mode' declared as function returning a function
/usr/include/gpgme.h:724: error: syntax error before 'gpgme_passphrase_cb_t'
/usr/include/gpgme.h:728: error: syntax error before 'gpgme_passphrase_cb_t'
/usr/include/gpgme.h:744: error: 'gpgme_set_locale' declared as function returning a function
/usr/include/gpgme.h:759: error: 'gpgme_signers_add' declared as function returning a function
/usr/include/gpgme.h:788: error: 'gpgme_get_sig_key' declared as function returning a function
/usr/include/gpgme.h:794: error: 'gpgme_io_cb_t' declared as function returning a function
/usr/include/gpgme.h:803: error: 'gpgme_register_io_cb_t' declared as function returning a function
/usr/include/gpgme.h:892: error: 'gpgme_data_new' declared as function returning a function
/usr/include/gpgme.h:902: error: 'gpgme_data_new_from_mem' declared as function returning a function
/usr/include/gpgme.h:911: error: 'gpgme_data_new_from_cbs' declared as function returning a function
/usr/include/gpgme.h:913: error: 'gpgme_data_new_from_fd' declared as function returning a function
/usr/include/gpgme.h:915: error: 'gpgme_data_new_from_stream' declared as function returning a function
/usr/include/gpgme.h:922: error: 'gpgme_data_set_encoding' declared as function returning a function
/usr/include/gpgme.h:933: error: 'gpgme_data_new_with_read_cb' declared as function returning a function
/usr/include/gpgme.h:940: error: 'gpgme_data_new_from_file' declared as function returning a function
/usr/include/gpgme.h:947: error: 'gpgme_data_new_from_filepart' declared as function returning a function
/usr/include/gpgme.h:951: error: 'gpgme_data_rewind' declared as function returning a function
/usr/include/gpgme.h:959: error: 'gpgme_get_key' declared as function returning a function
/usr/include/gpgme.h:1007: error: 'gpgme_cancel' declared as function returning a function
/usr/include/gpgme.h:1014: error: field 'reason' declared as a function
/usr/include/gpgme.h:1041: error: 'gpgme_op_encrypt_start' declared as function returning a function
/usr/include/gpgme.h:1044: error: 'gpgme_op_encrypt' declared as function returning a function
/usr/include/gpgme.h:1053: error: 'gpgme_op_encrypt_sign_start' declared as function returning a function
/usr/include/gpgme.h:1056: error: 'gpgme_op_encrypt_sign' declared as function returning a function
/usr/include/gpgme.h:1078: error: 'gpgme_op_decrypt_start' declared as function returning a function
/usr/include/gpgme.h:1080: error: 'gpgme_op_decrypt' declared as function returning a function
/usr/include/gpgme.h:1086: error: 'gpgme_op_decrypt_verify_start' declared as function returning a function
/usr/include/gpgme.h:1088: error: 'gpgme_op_decrypt_verify' declared as function returning a function
/usr/include/gpgme.h:1141: error: 'gpgme_op_sign_start' declared as function returning a function
/usr/include/gpgme.h:1144: error: 'gpgme_op_sign' declared as function returning a function
/usr/include/gpgme.h:1187: error: field 'status' declared as a function
/usr/include/gpgme.h:1205: error: field 'validity_reason' declared as a function
/usr/include/gpgme.h:1221: error: 'gpgme_op_verify_start' declared as function returning a function
/usr/include/gpgme.h:1224: error: 'gpgme_op_verify' declared as function returning a function
/usr/include/gpgme.h:1254: error: field 'result' declared as a function
/usr/include/gpgme.h:1317: error: 'gpgme_op_import_start' declared as function returning a function
/usr/include/gpgme.h:1318: error: 'gpgme_op_import' declared as function returning a function
/usr/include/gpgme.h:1320: error: 'gpgme_op_import_ext' declared as function returning a function
/usr/include/gpgme.h:1326: error: 'gpgme_op_export_start' declared as function returning a function
/usr/include/gpgme.h:1328: error: 'gpgme_op_export' declared as function returning a function
/usr/include/gpgme.h:1333: error: 'gpgme_op_export_ext_start' declared as function returning a function
/usr/include/gpgme.h:1336: error: 'gpgme_op_export_ext' declared as function returning a function
/usr/include/gpgme.h:1360: error: 'gpgme_op_genkey_start' declared as function returning a function
/usr/include/gpgme.h:1362: error: 'gpgme_op_genkey' declared as function returning a function
/usr/include/gpgme.h:1371: error: 'gpgme_op_delete_start' declared as function returning a function
/usr/include/gpgme.h:1373: error: 'gpgme_op_delete' declared as function returning a function
/usr/include/gpgme.h:1380: error: 'gpgme_op_edit_start' declared as function returning a function
/usr/include/gpgme.h:1383: error: 'gpgme_op_edit' declared as function returning a function
/usr/include/gpgme.h:1389: error: 'gpgme_op_card_edit_start' declared as function returning a function
/usr/include/gpgme.h:1392: error: 'gpgme_op_card_edit' declared as function returning a function
/usr/include/gpgme.h:1412: error: 'gpgme_op_keylist_start' declared as function returning a function
/usr/include/gpgme.h:1415: error: 'gpgme_op_keylist_ext_start' declared as function returning a function
/usr/include/gpgme.h:1418: error: 'gpgme_op_keylist_next' declared as function returning a function
/usr/include/gpgme.h:1421: error: 'gpgme_op_keylist_end' declared as function returning a function
/usr/include/gpgme.h:1463: error: 'gpgme_op_trustlist_start' declared as function returning a function
/usr/include/gpgme.h:1467: error: 'gpgme_op_trustlist_next' declared as function returning a function
/usr/include/gpgme.h:1470: error: 'gpgme_op_trustlist_end' declared as function returning a function
/usr/include/gpgme.h:1506: error: 'gpgme_get_engine_info' declared as function returning a function
/usr/include/gpgme.h:1513: error: 'gpgme_engine_check_version' declared as function returning a function
/usr/include/gpgme.h:1533: error: syntax error before 'GpgmePassphraseCb'
In file included from /tmp/pear/download/gnupg-1.3.1/gnupg.c:22:
/tmp/pear/download/gnupg-1.3.1/php_gnupg.h:36: error: field 'err' declared as a function
In file included from /tmp/pear/download/gnupg-1.3.1/gnupg.c:25:
/tmp/pear/download/gnupg-1.3.1/php_gnupg_keylistiterator.h:38: error: field 'err' declared as a function
/tmp/pear/download/gnupg-1.3.1/gnupg.c:382: error: 'passphrase_cb' declared as function returning a function
/tmp/pear/download/gnupg-1.3.1/gnupg.c:410: error: 'passphrase_decrypt_cb' declared as function returning a function
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'gnupg_fetchsignatures':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:448: warning: passing argument 4 of 'add_assoc_long_ex' makes integer from pointer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_keyinfo':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:624: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:624: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c:631: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_addsignkey':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:723: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:723: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c:736: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_adddecryptkey':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:767: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:767: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_addencryptkey':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:803: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:803: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_sign':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:899: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:899: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c:903: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:908: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_encrypt':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:971: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:971: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c:975: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:980: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_encryptsign':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1035: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1035: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1039: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1044: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_verify':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1115: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1115: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1120: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1127: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1134: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1139: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1146: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1161: warning: pointer targets in passing argument 2 of 'gpgme_data_release_and_get_mem' differ in signedness
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_decrypt':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1199: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1199: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1202: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1207: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_decryptverify':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1265: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1265: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1268: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1273: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_export':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1326: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1326: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1330: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_import':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1366: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1366: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1370: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_deletekey':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1416: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1416: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1420: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_gettrustlist':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1452: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1452: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1457: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c: In function 'zif_gnupg_listsignatures':
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1498: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1498: error: 'GPG_ERR_NO_ERROR' undeclared (first use in this function)
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1502: warning: assignment makes pointer from integer without a cast
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1521: error: dereferencing pointer to incomplete type
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1522: error: dereferencing pointer to incomplete type
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1523: error: dereferencing pointer to incomplete type
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1524: error: dereferencing pointer to incomplete type
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1525: error: dereferencing pointer to incomplete type
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1526: error: dereferencing pointer to incomplete type
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1527: error: dereferencing pointer to incomplete type
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1528: error: dereferencing pointer to incomplete type
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1529: error: dereferencing pointer to incomplete type
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1529: error: dereferencing pointer to incomplete type
/tmp/pear/download/gnupg-1.3.1/gnupg.c:1530: error: dereferencing pointer to incomplete type
make: *** [gnupg.lo] Fehler 1
ERROR: `make' failed

Lösung: update auf die aktuelle Version von
gpg2 – Version: 1.9.18-2
gpgme – Version: 1.0.2-4
installieren

Libraries have been installed in:
   /var/tmp/pear-build/gnupg-xxx/modules
 
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'
 
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.