2016-01-23 10 views
7

Ich brauche eine Hilfe für eine vollständige Installation von PHP7 (ZTS) + Pthreads. Ich habe die folgende Installation versucht, konnte es aber nicht funktionieren.wie installiere ich php7 (zts) + pthreads auf Ubuntu 14.04

sudo -i 

apt-get update 

apt-get install -y git bison autoconf build-essential pkg-config gitcore libltdl-dev libbz2-dev libxml2-dev libxslt1-dev libssl-dev libicu-dev libpspell-dev libenchant-dev libmcrypt-dev libpng-dev libjpeg8-dev libfreetype6-dev libmysqlclient-dev libreadline-dev libcurl4-openssl-dev 

mkdir /etc/php7 

mkdir /etc/php7/cli 

cd /usr/local/src 

git clone https://github.com/php/php-src.git --depth=1 

cd php-src/ext 

git clone https://github.com/krakjoe/pthreads -b master pthreads 

cd .. 

./buildconf --force 

php_configure_args="--prefix=/etc/php7 --with-config-file-path=/etc/php7/cli --with-config-file-scan-dir=/etc/php7/cli/conf.d --with-bz2 --with-zlib --enable-zip --with-mcrypt --with-openssl --with-curl --enable-ftp --with-mysqli --enable-sockets --enable-pcntl --with-pspell --with-enchant --with-gettext --with-gd --enable-exif --with-jpeg-dir --with-png-dir --with-freetype-dir --with-xsl --enable-bcmath --enable-mbstring --enable-calendar --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-maintainer-zts --enable-debug --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --enable-cli --enable-pthreads=shared --with-tsrm-pthreads" 


./configure $php_configure_args 

make && make install 

cd /usr/local/src/php-src/ext/intl* 

chmod a+x /etc/php7/bin/php-config 

chmod a+x /etc/php7/bin/phpize 

/etc/php7/bin/phpize 

./configure --enable-intl --with-icu-dir=/usr --prefix='/etc/php7' --with-libdir='/lib/x86_64-linux-gnu' --with-php-config='/etc/php7/bin/php-config' 

make && make install 

cp /usr/local/src/php-src/php.ini-production /etc/php7/cli/php.ini 

ln --symbolic /etc/php7/bin/php /usr/bin/php 

ln --symbolic /etc/php7/sbin/php-fpm /usr/sbin/php7-fpm 

echo 'zend_extension=opcache.so' >> /etc/php7/cli/php.ini 

echo 'extension=pthreads.so' >> /etc/php7/cli/php-cli.ini 

echo "extension=intl.so" >> /etc/php7/cli/php.ini 

FPM-Konfiguration. 1) /etc/init.d/php7-fpm

#!/bin/sh 
### BEGIN INIT INFO 
# Provides:   php-fpm php7-fpm 
# Required-Start: $remote_fs $network 
# Required-Stop:  $remote_fs $network 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: starts php7-fpm 
# Description:  Starts The PHP FastCGI Process Manager Daemon 
### END INIT INFO 

# Author: Ondrej Sury <[email protected]> 
# Adapted to php7-fpm by @bjornjohansen 

PATH=/usr/sbin 
DESC="PHP7 FastCGI Process Manager" 
NAME=php7-fpm 
DAEMON=/usr/sbin/$NAME 
DAEMON_ARGS="--daemonize --fpm-config /etc/php7/etc/php-fpm.conf" 
PIDFILE=/var/run/php7-fpm.pid 
TIMEOUT=30 
SCRIPTNAME=/etc/init.d/$NAME 

# Exit if the package is not installed 
[ -x "$DAEMON" ] || exit 0 

# Read configuration variable file if it is present 
[ -r /etc/default/$NAME ] && . /etc/default/$NAME 

# Load the VERBOSE setting and other rcS variables 
. /lib/init/vars.sh 

# Define LSB log_* functions. 
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. 
. /lib/lsb/init-functions 

# Don't run if we are running upstart 
if init_is_upstart; then 
    exit 1 
fi 

# 
# Function to check the correctness of the config file 
# 
do_check() 
{ 
    /usr/local/lib/php7-fpm-checkconf || return 1 
    return 0 
} 

# 
# Function that starts the daemon/service 
# 
do_start() 
{ 
    # Return 
    # 0 if daemon has been started 
    # 1 if daemon was already running 
    # 2 if daemon could not be started 
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec   $DAEMON --test > /dev/null \ 
      || return 1 
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ 
      $DAEMON_ARGS 2>/dev/null \ 
      || return 2 
    # Add code here, if necessary, that waits for the process to be ready 
    # to handle requests from services started subsequently which depend 
    # on this one. As a last resort, sleep for some time. 
} 

# 
# Function that stops the daemon/service 
# 
do_stop() 
{ 
     # Return 
    # 0 if daemon has been stopped 
    # 1 if daemon was already stopped 
    # 2 if daemon could not be stopped 
    # other if a failure occurred 
    start-stop-daemon --stop --quiet --retry=QUIT/$TIMEOUT/TERM/5/KILL/5 --pidfile $PIDFILE --name $NAME 
    RETVAL="$?" 
    [ "$RETVAL" = 2 ] && return 2 
    # Wait for children to finish too if this is a daemon that forks 
    # and if the daemon is only ever run from this initscript. 
    # If the above conditions are not satisfied then add some other code 
    # that waits for the process to drop all resources that could be 
    # needed by services started subsequently. A last resort is to 
    # sleep for some time. 
    start-stop-daemon --stop --quiet --oknodo -- retry=0/30/TERM/5/KILL/5 --exec $DAEMON 
    [ "$?" = 2 ] && return 2 
    # Many daemons don't delete their pidfiles when they exit. 
    rm -f $PIDFILE 
    return "$RETVAL" 
} 

# 
# Function that sends a SIGHUP to the daemon/service 
# 
do_reload() { 
    # 
    # If the daemon can reload its configuration without 
    # restarting (for example, when it is sent a SIGHUP), 
    # then implement that here. 
    # 
    start-stop-daemon --stop --signal USR2 --quiet --pidfile $PIDFILE --name $NAME 
    return 0 
} 

case "$1" in 
start) 
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" 
    do_check $VERBOSE 
    case "$?" in 
     0) 
      do_start 
      case "$?" in 
       0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 
       2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 
      esac 
      ;; 
     1) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 
    esac 
    ;; 
stop) 
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" 
    do_stop 
    case "$?" in 
      0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 
      2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 
    esac 
    ;; 
status) 
    status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? 
    ;; 
check) 
    do_check yes 
    ;; 
reload|force-reload) 
    log_daemon_msg "Reloading $DESC" "$NAME" 
    do_reload 
    log_end_msg $? 
    ;; 
reopen-logs) 
    log_daemon_msg "Reopening $DESC logs" $NAME 
    if start-stop-daemon --stop --signal USR1 --oknodo --quiet \ 
     --pidfile $PIDFILE --exec $DAEMON 
    then 
     log_end_msg 0 
    else 
     log_end_msg 1 
    fi 
    ;; 
restart) 
    log_daemon_msg "Restarting $DESC" "$NAME" 
    do_stop 
    case "$?" in 
     0|1) 
      do_start 
      case "$?" in 
        0) log_end_msg 0 ;; 
        1) log_end_msg 1 ;; # Old process is still running 
        *) log_end_msg 1 ;; # Failed to start 
      esac 
      ;; 
     *) 
      # Failed to stop 
      log_end_msg 1 
      ;; 
    esac 
    ;; 
*) 
    echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force- reload}" >&2 
    exit 1 
;; 
esac 

chmod a + x /etc/init.d/php7-fpm

2) /etc/init/php7-fpm.conf

# php7-fpm - The PHP FastCGI Process Manager 
# Original script by Ondřej Surý. Adapted to php7-fpm by @bjornjohansen 

description "The PHP FastCGI Process Manager" 
author "Ondřej Surý <[email protected]>" 

start on runlevel [2345] 
stop on runlevel [016] 

# Precise upstart does not support reload signal, and thus rejects the 
# job. We'd rather start the daemon, instead of forcing users to 
# reboot https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1272788 
# 
# reload signal USR2 


pre-start exec /usr/local/lib/php7-fpm-checkconf 

respawn 
exec /usr/sbin/php7-fpm --nodaemonize --fpm-config /etc/php7/etc/php-fpm.conf 

3)/usr/local/lib/php7-FPM-checkconf

#!/bin/sh 
set -e 
errors=$(/usr/sbin/php7-fpm --fpm-config /etc/php7/etc/php-fpm.conf -t 2>&1 | grep "\[ERROR\]" || $ 
if [ -n "$errors" ]; then 
    echo "Please fix your configuration file..." 
    echo $errors 
    exit 1 
fi 
exit 0 

chmod a + x/usr/local/lib/php7-FPM-checkconf

cp /etc/php7/etc/php-fpm.conf.default /etc/php7/etc/php-fpm.conf 

cp /etc/php7/etc/php-fpm.d/www.conf.default /etc/php7/etc/php-fpm.d/www.conf 

update-rc.d -f php7-fpm defaults 

Wenn ich laufen die folgenden ich die Fehlermeldung bekam „Job nicht gestartet werden konnte“

service php7-fpm start 

werde ich mich freuen, wenn jemand meinen Fehler korrigieren oder eine vollständige Installation von PHP7 (ZTS) + Pthreads bieten aktiviert.

+0

Was machen diese Semikolons da, wenn Sie Zeilenumbrüche bereits (über) benutzen? Einfach 'sudo apt-get' ... etc. und verbinden Sie die Backslashed-Linien miteinander, lassen Sie nur ein Leerzeichen zwischen den einzelnen Paketnamen. – Zdenek

+0

danke für das Aufzeigen; Ich habe sie entfernt. –

Antwort

10

Update und installieren Abhängigkeiten

apt-get update 

apt-get install -y bison autoconf build-essential pkg-config git-core libltdl-dev libbz2-dev libxml2-dev libxslt1-dev libssl-dev libicu-dev libpspell-dev libenchant-dev libmcrypt-dev libpng-dev libjpeg8-dev libfreetype6-dev libmysqlclient-dev libreadline-dev libcurl4-openssl-dev 

Entfernen Sie alle vorhandenen php7 und

php7 und andere Unterverzeichnisse erstellen
rm -rf /etc/php7 

mkdir -p /etc/php7 
mkdir -p /etc/php7/cli 
mkdir -p /etc/php7/etc 

Entfernen Sie alle php-src-Ordner in Ihrem aktuellen Arbeitsverzeichnis und installieren von git branch

rm -rf php-src 

git clone https://github.com/php/php-src.git --depth=1 

ändern Verzeichnis ext pThreads von git

cd php-src/ext 

git clone https://github.com/krakjoe/pthreads -b master pthreads 

Zurück zum php-src herunterladen als Ihr aktuelles Arbeitsverzeichnis

cd .. 

die pHP-src Erstellen

./buildconf --force 

Set Konfigurationsoptionen aktivieren zts, fpm und andere Erweiterungen für Ihren eigenen Fall

CONFIGURE_STRING="--prefix=/etc/php7 --with-bz2 --with-zlib --enable-zip --disable-cgi \ 
    --enable-soap --enable-intl --with-mcrypt --with-openssl --with-readline --with-curl \ 
    --enable-ftp --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \ 
    --enable-sockets --enable-pcntl --with-pspell --with-enchant --with-gettext \ 
    --with-gd --enable-exif --with-jpeg-dir --with-png-dir --with-freetype-dir --with-xsl \ 
    --enable-bcmath --enable-mbstring --enable-calendar --enable-simplexml --enable-json \ 
    --enable-hash --enable-session --enable-xml --enable-wddx --enable-opcache \ 
    --with-pcre-regex --with-config-file-path=/etc/php7/cli \ 
    --with-config-file-scan-dir=/etc/php7/etc --enable-cli --enable-maintainer-zts \ 
    --with-tsrm-pthreads --enable-debug --enable-fpm \ 
    --with-fpm-user=www-data --with-fpm-group=www-data" 

Run configure und installieren

./configure $CONFIGURE_STRING 

make && make install 

Nehmen Sie die folgenden Hilfsprogramme ausführbar

chmod o+x /etc/php7/bin/phpize 

chmod o+x /etc/php7/bin/php-config 

Jetzt ändern dir ectory zu pthreads und laufen phpize

cd ext/pthreads* 

/etc/php7/bin/phpize 

Set Konfigurationsoptionen für pThreads, aber stellen Sie sicher, enable-pthreads = geteilt, welche der Hauptaspekt der Konfiguration ist

./configure --prefix='/etc/php7' --with-libdir='/lib/x86_64-linux-gnu' \ 
    --enable-pthreads=shared --with-php-config='/etc/php7/bin/php-config' 

make && make install 

FPM Installationskonfiguration Kopieren von Dateien auf entsprechenden beinhaltet Positionen und Änderungen vornehmen, wo nötig.

#back to current working directory php-src 

cd ../../ 

#php.ini to be used by fpm-fcgi 

cp -r php.ini-production /etc/php7/cli/php.ini 

sed -i 's/;date.timezone =.*/date.timezone = Africa\/Lagos/' /etc/php7/cli/php.ini 

cp /etc/php7/etc/php-fpm.conf.default /etc/php7/etc/php-fpm.conf 

cp /etc/php7/etc/php-fpm.d/www.conf.default /etc/php7/etc/php-fpm.d/www.conf 

cp sapi/fpm/init.d.php-fpm /etc/init.d/php7-fpm 

sed -i 's/Provides:   php-fpm/Provides:   php7-fpm/' /etc/init.d/php7-fpm 

sed -i 's#^php_fpm_BIN=.*#php_fpm_BIN=/usr/sbin/php7-fpm#' /etc/init.d/php7-fpm 

sed -i 's#^php_fpm_CONF=.*#php_fpm_CONF=/etc/php7/etc/php-fpm.conf#' /etc/init.d/php7-fpm 

sed -i 's#^php_fpm_PID=.*#php_fpm_PID=/var/run/php7-fpm.pid#' /etc/init.d/php7-fpm 

Fügen Sie pthreads.so zu php-cli hinzu.ini, diese durch Command Line Interface verwendet wird (CLI)

cp php.ini-production /etc/php7/cli/php-cli.ini 

echo "extension=pthreads.so" > /etc/php7/cli/php-cli.ini 

hinzufügen andere Erweiterungen und Link-Binärdateien

echo "zend_extension=opcache.so" >> /etc/php7/cli/php.ini 

ln --symbolic /etc/php7/bin/php /usr/bin/php 

ln --symbolic /etc/php7/sbin/php-fpm /usr/sbin/php7-fpm 

chmod +x /etc/init.d/php7-fpm 

update-rc.d php7-fpm defaults 

service php7-fpm start 

Achten Sie darauf, die folgenden sind, wie sie in/etc/php7/etc sind/php- fpm.conf

pid = /var/run/php7-fpm.pid 
error_log = /var/log/php7-fpm.log 
include=/etc/php7/etc/php-fpm.d/*.conf 

Achten sie darauf, die folgenden sind, wie sie in /etc/php7/etc/php-fpm.d/www.conf

user = www-data 
group = www-data 
listen = /var/run/php7-fpm.sock 
listen.owner = www-data 
listen.group = www-data 
listen.mode = 0660 
listen.allowed_clients = 127.0.0.1 
security.limit_extensions = .php .php3 .php4 .php5 .php7 
sind

Achten Sie darauf, die folgenden sind, wie sie in /etc/php7/cli/php.ini

cgi.fix_pathinfo=1 

Zur Verwendung mit Nginx gehen Sie wie folgt in Ihrer nginx/sites-available/default

upstream php7-fpm { 
    server unix:/var/run/php7-fpm.sock; 
} 
server { 
    listen 80 default_server; 
    listen [::]:80 default_server; 

    root /usr/share/nginx/html; 

    # Add index.php to the list if you are using PHP 
    index index.html index.htm; 

    server_name localhost; 

    location/{ 
     try_files $uri $uri/ =404; 
    } 
    location ~ [^/]\.php(/|$) { 
     try_files $uri =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass php7-fpm; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include fastcgi_params; 
    } 
} 

service nginx restart 
sind

Um Pthreads zu verwenden, denken Sie daran, es funktioniert über die Befehlszeile. Unter der Annahme, thread.php ist Ihre parallelen Programmiercode, können Sie es nicht laufen können in sapi/fpm Modus von localhost/Pfad zu tun/zu/thread.php mit Ihrem Browser

<?php 
//thread.php 
    class Part extends Threaded{ public function run(){} } 
    $parts = new Part(); 

    for($i=0;$i<4;$i++) $parts[] = $i; 
?> 

Stattdessen Sie eine Datei erstellen ausführen Ihre code thread.php über Kommandozeilenmethoden wie "system"

<?php 
    system("php /path/to/thread.php"); 
?> 
+0

Ich muss es im FPM-Modus verwenden. Es gibt eine Lösung mit Ihrem Guide ?? – cleaversdev

+0

Vielen Dank, hat mir sehr geholfen! – smddzcy

+2

@cleaversdev nein, es gibt keine Möglichkeit, es in FPM zu verwenden. Threading in PHP nur im CLI-Modus. Wie gesagt Joe: pthreads v3 ist auf den Betrieb in CLI beschränkt: Ich habe viele Jahre damit verbracht, zu erklären, dass Threads in einem Web-Server einfach keinen Sinn ergeben, nach 1,111 Commits zu Pthreads habe ich das erkannt, mein Rat wird nicht beachtet. Also rufe ich den Rat zur schnellen und festen Tatsache an: Sie können pthreads nicht überall sicher und vernünftig außer CLI verwenden. [Mehr Info] (https://github.com/krakjoe/pthreads) – inJakuzi

4

Dies ist ein Co-install mit PHP 5.6 & PHP 7.0 (zts oder nicht)

Wir Vermächtnis PHP5 Pakete rauszuschmeißen und Co-installierbare PHP 5.6 & PHP 7.0 Pakete

apt-get autoremove php5 php5-common 

apache2 installieren im Moment beschweren sollte, aber es ist in Ordnung, dann reparieren wir es benutzerdefinierte Repo hinzufügen (php Pakete debian Maintainer Repo)

add-apt-repository ppa:ondrej/php 

Bearbeiten Sie die Quellliste Datei, höchstwahrscheinlich /etc/apt/sources.list.d/ondrej-ubuntu-php-trusty.list, und Kommentar- der Quellenleitung Dann:

apt-get update 

Installieren Nicht-zts Version aus dem Repo (wir werden sie später ersetzen)

apt-get install php5.6 php5.6-fpm php7.0 php7.0-fpm 

Jetzt Lass uns kompilieren!

apt-get build-dep php7.0 
apt-get source php7.0 
cd php7.0-* 
nano debian/rules 

Bearbeiten Sie die Kompilierung configure Schritt der --enable-Maintainer-zts Option hinzuzufügen. Suchen Sie nach "dh_install" und entfernen Sie die Option "--fail-missing".

Jetzt tun:

./debian/rules binary 

Compilation gehen und Verpackung wird fehlschlagen. Aber jetzt haben wir die Paketstruktur

Schauen Sie sich die Fehlermeldung an, es wird sich über fehlende Standard-Konfigurationsdatei beschweren. Kopieren Sie diese Datei von Ihrer php non-zts-Installation in die Paketstruktur an dem Ort, den Sie in der Fehlermeldung sehen. Jetzt neu:

./debian/rules binary 

Es sollte gelingen. Jetzt kannst du alles außer dem snmp-Paket installieren, das weiß ich nicht warum, aber f * ck alles auf.

rm php7.0-snmp*.deb 
dpkg -i php7.0*.deb 

Sie können versuchen, mit:

php7.0 -r 'echo "Hello World";' 

Es sollte Werke: D es wieder tun mit der 5.6 Version, wenn Sie es wollen zu ZTS.

Jetzt schließen wir es in Apache.

a2dismod mpm_prefork 
a2enmod mpm_event 
a2enmod actions fastcgi proxy proxy_fcgi 
a2dismod php5.6 
a2dismod php7.0 

Nun erstellen wir eine Brücke zwischen der Anforderung erhalten durch apache2 und der fpm'cgi durch die conf-Datei zu erstellen:

/etc/apache2/conf-available/php5.6-cgi.conf

AddHandler php5-fcgi .php 
Action php5-fcgi /php5.6 
Alias /php5.6 /usr/lib/cgi-bin/php5.6 

FastCgiExternalServer /usr/lib/cgi-bin/php5.6 -appConnTimeout 10 -idle-timeout 9000 -socket 127.0.0.1:7056 -pass-header Authorization 

Das Gleiche gilt für PHP 7:

/etc/apache2/conf-available/php7.0-cgi.conf

AddHandler php7-fcgi .php 
Action php7-fcgi /php7.0 
Alias /php7.0 /usr/lib/cgi-bin/php7.0 

FastCgiExternalServer /usr/lib/cgi-bin/php7.0 -appConnTimeout 10 -idle-timeout 9000 -socket 127.0.0.1:7070 -pass-header Authorization 

Kommentieren Sie den Inhalt des Brückenstandard fastcgi:

/etc/apache2/mods-available/fastcgi.conf

FPM Sagen Sie, wo Sie mit ihm reden werden:

In /etc/php/5.6/fpm/pool.d/www.conf die hören Parameter finden (Seite 2) und Set es

listen = 127.0.0.1:7056 

Und wieder für PHP 7.0

/etc/php/7.0/fpm/pool.d/www.conf

listen = 127.0.0.1:7070 

Aktualisieren Sie Ihre vHost von ihnen zu sagen, was FPM (innen vhost, außerhalb der) zu verwenden, hier php 7.0:

<FilesMatch \.php$> 
      SetHandler proxy:fcgi://127.0.0.1:7070 
    </FilesMatch> 

    <FilesMatch ".+\.phps$"> 
     SetHandler application/x-httpd-php-source 
     Require all denied 
    </FilesMatch> 

    <FilesMatch "^\.ph(p[3457]?|t|tml|ps)$"> 
     Require all denied 
    </FilesMatch> 

Inzwischen es funktioniert, aber wir werden einige zusätzliche Sachen, php-mysql & einige weitere hinzufügen:

apt-get install php{5.6,7.0}-{mysql,mcrypt} php-xdebug 
phpenmod -v ALL -s ALL mysqli pdo_mysql readline xdebug 

aktualisieren xdebug config (unten ist von mir):

/etc/php/mods-available/xdebug.ini

zend_extension=xdebug.so 

xdebug.overload_var_dump = 0 
xdebug.remote_autostart = 1 
xdebug.remote_connect_back = 1 
xdebug.remote_enable = 1 

Dann

systemctl enable php{5.6,7.0}-fpm 

Letztlich wir alles neu starten

systemctl restart apache2 
systemctl restart php{5.6,7.0}-fpm 

Und Sie sollten durchgeführt werden: D

+0

Hi JesusTheHun, ich habe Fehler in dieser Zeile der Konfiguration: ./debian/rules binary. Twas wirklich frustrierend, also machte ich einen anderen Versuch https://github.com/krakjoe/pthreads/issues/555, aber in diesem Versuch arbeiten alle pthread Klassen außer Stackable. Kannst du einen Blick auf diese Installation werfen, falls du einen Beitrag dazu hast? –

+0

Github ist kein Ort, um um Hilfe zu bitten. Löschen Sie Ihr Problem bitte. Welche Fehler treten bei der Ausführung von ./debian/rules binary auf? – JesusTheHun

+0

Ich habe das Problem geschlossen, es ist nicht einmal ein Fehler, wenig wusste ich, dass Stackable nicht in den aktuellen Pthreads definiert ist. Anstelle von Stackable kann also StackableArray verwendet werden, das die Klasse Threaded erweitert. Daher nehme ich an, dass meine neue Installation meinem Bedarf dienen wird. Währenddessen versuche ich Ihre Lösung auf einer neuen Virtualbox-Instanz erneut zu versuchen, um sie als alternative Lösung für alle Fälle zu nutzen. –

Verwandte Themen