selbst-kompilierte Programme updaten

ChrisServer

New Member
Hallo,

ich möchte Apache2 wegen suexec selbst kompilieren. Standardmäßíg ist suexec nicht aktiviert und es scheint auch kein entsprechendes Debian-Paket zu geben.

Einmaliges kompilieren ist kein Problem. Was ist, wenn Updates kommen? Lässt sich das Kompilieren irgendwie automatisieren oder muss ich das jedes Mal von Hand machen?


Chris
 
Wegen http://packages.debian.org/lenny/i386/apache2-suexec/filelist dachte ich, dass es sich dabei nur um das Modul, aber nicht einen speziell kompilierten Apache handelt?

1. Ist dieses Paket für suexec vorkonfiguriert und ausreichend? Was ist /usr/share/lintian/overrides/apache2-suexec?

2. Angenommen ich hätte den obigen Fall bei irgendeinem anderen Paket, das es tatsächlich nicht in der gewünschten Konfiguration gibt. Wie würde man da am einfachsten vorgehen?
 
Du musst nur installieren, der suexec-Pfad liegt bei Debian unter /var/www:

apt-get install apache2-mpm-worker apache2-suexec

zu 1) Es läuft alles "out of the box'.
/usr/share/lintian/overrides/apache2-suexec -> keine Ahnung, der Inhalt lautet wie folgt:

cat /usr/share/lintian/overrides/apache2-suexec said:
setuid-binary usr/lib/apache2/suexec 4754 root/www-data
package-relation-with-self replaces: apache2-suexec

zu 2) Ich kompiliere mir manche Pakete selbst und installiere die unter /usr/local/*. Ist meistens kein Problem:

Code:
cd /usr/local/src
test -f $my_package || wget $my_package_from_url
tar xfzv $my_package
cd  $my_package_folder
./configure
make && make install

Ggf. muss der Zielpfad beim configuren angepasst werden.

Vergessen: Updates musst Du natürlich selbst im Auge behalten. Automatisch würde ich auf einem Produktivsystem so etwas nicht laufen lassen, höchstens automatisch mit dabeibleiben. Apt-get update && upgrade sollten auch nicht per Cronjob getriggert werden.
 
Last edited by a moderator:
Wegen http://packages.debian.org/lenny/i386/apache2-suexec/filelist dachte ich, dass es sich dabei nur um das Modul, aber nicht einen speziell kompilierten Apache handelt?
Ich sehe da kein Modul, nur ein Binary, eine Manpage und unnötigen Papiermüll.
Warum sollte das Apache-Binary für Suexec speziell kompiliert sein?

1. Ist dieses Paket für suexec vorkonfiguriert und ausreichend?
Ersteres nein, Letzteres ja.

Was ist /usr/share/lintian/overrides/apache2-suexec?
Müll? Frag den Debian-Maintainer.

2. Angenommen ich hätte den obigen Fall bei irgendeinem anderen Paket, das es tatsächlich nicht in der gewünschten Konfiguration gibt. Wie würde man da am einfachsten vorgehen?
Die gekürzte Kurzfassung:
Man liest die Dokumentationen zur eigenen Distribution und zu dem zu kompilierenden Source, hangelt sich durch diverse Bugtracker, lernt wichtige von unwichtigen Bugs zu unterscheiden, sammelt die nötigen Patches und schnürt sich an Hand der Dokumentation zum eigenen Paketmanager sein Paket.

Die Langfassung kostet Zeit und Zeit ist bekanntlich begrenzt...
 
Warum sollte das Apache-Binary für Suexec speziell kompiliert sein?

Wegen
"enable-suexec:
This option enables the suEXEC feature which is never installed or activated by default."
von da.

Die gekürzte Kurzfassung:
Man liest die Dokumentationen zur eigenen Distribution und zu dem zu kompilierenden Source, hangelt sich durch diverse Bugtracker, lernt wichtige von unwichtigen Bugs zu unterscheiden, sammelt die nötigen Patches und schnürt sich an Hand der Dokumentation zum eigenen Paketmanager sein Paket.

Die Langfassung kostet Zeit und Zeit ist bekanntlich begrenzt...

Die Kurzfassung reicht schon, danke. Lohnt sich das auch für einzelne Rechner? Oder nur wenn man das Paket dann an viele verteilt?
 
Wegen
"enable-suexec:
This option enables the suEXEC feature which is never installed or activated by default."
von da.
Das gilt für Leute, die Apache manuell selbst kompilieren und im Regelfall nicht für faule Paketmanager-User ;)


Die Kurzfassung reicht schon, danke. Lohnt sich das auch für einzelne Rechner? Oder nur wenn man das Paket dann an viele verteilt?
Das hängt immer von den Fähigkeiten und Ansprüchen des Admins ab. Für den Durchschnittsadmin lohnt es sich in keinem Fall.
 
Danke nochmal für die Antworten! Die eigentliche suexec Konfiguration schau ich mir am Wochenende nochmal an.

Das gilt für Leute, die Apache manuell selbst kompilieren und im Regelfall nicht für faule Paketmanager-User ;)

Achso, ok. Ich dachte das wäre notwendig, weil SUEXEC_BIN zwar gesetzt ist, aber enable-suexec nicht erscheint.

Code:
root@mg01:~# apache2 -V
Server version: Apache/2.2.9 (Debian)
Server built:   Mar 28 2010 18:03:05
Server's Module Magic Number: 20051115:15
Server loaded:  APR 1.2.12, APR-Util 1.2.12
Compiled using: APR 1.2.12, APR-Util 1.2.12
Architecture:   32-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT=""
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/var/run/apache2/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"


Gruß,
Christian
 
Zum Vergleich:
Code:
[root@devzero:~] # httpd -V
Server version: Apache/2.2.16 (FreeBSD)
Server built:   Oct 15 2010 20:14:40
Server's Module Magic Number: 20051115:24
Server loaded:  APR 1.4.2, APR-Util 1.3.10
Compiled using: APR 1.4.2, APR-Util 1.3.10
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/usr/local"
 -D SUEXEC_BIN="/usr/local/sbin/suexec"
 -D DEFAULT_PIDLOG="/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="etc/apache22/mime.types"
 -D SERVER_CONFIG_FILE="etc/apache22/httpd.conf"

--enable-suexec ist eine Option für das Configure-Script des Buildsystems. Die Option kann also beim Konfigurieren des Source vor dem eigentlichen Kompilieren des Source gesetzt werden und sorgt so dafür, dass das suexec-Binary gebaut und der Support dafür im Apache-Binary aktiviert werden. All dies und noch viel mehr nimmt einem im Regelfall schon der Maintainer des jeweiligen Pakets der jeweiligen Binary-Distribution ab. Leider führt dies oft auch dazu, dass in den Paketen der Support für möglichst alle Features aktiviert wird und somit die Abhängigkeiten unnötig ins Uferlose steigen und das System vollmüllen oder noch schlimmer, auf die Performance drücken. Aus diesen und anderen technischen Gründen bevorzuge ich seit Jahren Gentoo und FreeBSD, da ich dort die Features/Abhängigkeiten und die Performance selbst individuell bestimmen kann.

OK, es wird langsam wieder OT ;)
 
Back
Top