Compare commits

...

9 Commits

3 changed files with 539 additions and 126 deletions

View File

@@ -124,12 +124,15 @@ detect_os_1 () {
# - Support systemd ?
# -
if [[ "X$(which systemd)" = "X" ]]; then
SYSTEMD_EXISTS=false
else
systemd=$(which systemd)
systemctl=$(which systemctl)
if [[ -n "$systemd" ]] || [[ -n "$systemctl" ]] ; then
SYSTEMD_EXISTS=true
else
SYSTEMD_EXISTS=false
fi
# - Set variable
# - os_dist
# - os_version

View File

@@ -124,10 +124,12 @@ detect_os_1 () {
# - Support systemd ?
# -
if [[ "X$(which systemd)" = "X" ]]; then
SYSTEMD_EXISTS=false
else
systemd=$(which systemd)
systemctl=$(which systemctl)
if [[ -n "$systemd" ]] || [[ -n "$systemctl" ]] ; then
SYSTEMD_EXISTS=true
else
SYSTEMD_EXISTS=false
fi
# - Set variable

View File

@@ -19,7 +19,7 @@ _HTTPD_USER=www-data
_srcdir=$(dirname $(realpath $0))
_pwd=`pwd`
CUR_PWD="$(pwd)"
cert_URL_php_net="https://curl.haxx.se/ca/cacert.pem"
_default_cert_file=""
@@ -240,10 +240,12 @@ _backup_date="$(date +%Y%m%d-%H%M)"
# - Support systemd ?
# -
if [[ "X$(which systemd)" = "X" ]]; then
SYSTEMD_EXISTS=false
else
systemd=$(which systemd)
systemctl=$(which systemctl)
if [[ -n "$systemd" ]] || [[ -n "$systemctl" ]] ; then
SYSTEMD_EXISTS=true
else
SYSTEMD_EXISTS=false
fi
# - Set variable
@@ -257,62 +259,128 @@ _required_base_packages=""
_required_compiler_packages=""
_required_extension_packages=""
# - PHP Extension imagick, geoip, memcached
# - PHP Extension imagick, geoip, memcached, imap
# -
_required_extension_packages="$_required_extension_packages
libmagickwand-dev libmagickcore-dev
libgeoip1 libgeoip-dev geoip-bin
geoip-bin
libgeoip1
libgeoip-dev
libmagickcore-dev
libmagickwand-dev
libmemcached-dev"
# - Compile stuff
# -
_required_compiler_packages="$_required_compiler_packages
g++ g++-multilib gcc gcc-multilib cpp
make automake autoconf libtool flex bison
gettext pkg-config gnu-standards
libssl-dev libreadline-dev libncurses-dev"
autoconf
automake
bison
cpp
flex
g++
g++-multilib
gcc
gcc-multilib
gettext
gnu-standards
libc6-dev
libcrypt-dev
libncurses-dev
libpam0g-dev
libreadline-dev
libssl-dev
libtool
make
pkg-config"
# - Needed to build apache webserver with php/ruby support
# -
_required_base_packages="$_required_base_packages
libxml2 libxml2-dev
curl libcurl4-openssl-dev
libqdbm-dev libgdbm-dev libpspell-dev
libjpeg-dev libxpm-dev libfreetype6-dev
libwmf-dev libtiff-dev libpaper-dev
curl
exif libexiv2-dev
graphicsmagick
imagemagick
libapr1-dev
libaprutil1-dev
libatm-dev
libcrypto++-dev
libcurl4-openssl-dev
libdjvulibre-dev
libexpat-dev
libfreetype6-dev
libgdbm-dev
libgmp-dev
libgpm-dev
libgraphicsmagick++1-dev
libgraphicsmagick1-dev
libgraphics-magick-perl
libgraphviz-dev
libgsf-1-dev
libharfbuzz-dev
libicu-dev
libilmbase-dev
libjpeg-dev
libkpathsea-dev
libkrb5-dev
libldap-dev
liblua5.1-0
liblua5.1-0-dev
libmagic-dev
libmagick-dev libgraphics-magick-perl
libgraphicsmagick++1-dev libgraphicsmagick1-dev
libgraphviz-dev libgsf-1-dev libilmbase-dev
libvpx-dev vpx-tools
libgpm-dev libkpathsea-dev libopenexr-dev librsvg2-dev libdjvulibre-dev
libatm-dev libexpat-dev
imagemagick graphicsmagick
libmagick-dev
libmcrypt-dev
libmhash-dev
libmm-dev
libncurses-dev
libnetpbm-dev
libopenexr-dev
libpaper-dev
libpq-dev
libpspell-dev
libqdbm-dev
libreadline-dev
librsvg2-dev
libsctp-dev
libsodium-dev
libtidy-dev
libtiff-dev
libvpx-dev
libwebp-dev
libwmf-dev
libxml2
libxml2-dev
libxmlrpc-epi-dev
libxpm-dev
libxslt1-dev
libzip-dev
mcrypt
netpbm
postgresql-client
re2c
sqlite3
exif libexiv2-dev
netpbm libnetpbm10-dev
libmcrypt-dev mcrypt
libwebp-dev
libpq-dev postgresql-client
libreadline-dev libncurses-dev
libxslt1-dev libpcre3-dev
libc-client-dev
libicu-dev
libtidy-dev
libmm-dev libgmp-dev libkrb5-dev libldap-dev
libmhash-dev
libapr1-dev libaprutil1-dev
liblua5.1-0 liblua5.1-0-dev
libsctp-dev
libcrypto++-dev
libzip-dev
libharfbuzz-dev
libsodium-dev
libxmlrpc-epi-dev"
vpx-tools"
# libcroco3-dev
# libc-client-dev is no longer available on debian 13
#
if [[ "$os_dist" = "debian" ]] && [[ $os_version -lt 13 ]] ; then
_required_base_packages="$_required_base_packages
libc-client-dev"
fi
# Package libpcre3-dev is not availabl at debian 13, but libpcre2-dev is
# available there.
#
if [[ "$os_dist" = "debian" ]] && [[ $os_version -lt 13 ]] ; then
_required_base_packages="$_required_base_packages
libpcre3-dev"
else
_required_base_packages="$_required_base_packages
libpcre2-dev"
fi
# - Package libgraphicsmagick++3 is not available at ubunru 18.04"
# -
if [[ "$os_dist" != "ubuntu" ]] ; then
@@ -4033,8 +4101,12 @@ else
--with-openssl"
fi
if ([[ "$PHP_MAJOR_VERSION" -eq 8 ]] && [[ "$PHP_MINOR_VERSION" -lt 4 ]]) \
|| [[ "$PHP_MAJOR_VERSION" -lt 8 ]] ; then
#if ([[ "$PHP_MAJOR_VERSION" -eq 8 ]] && [[ "$PHP_MINOR_VERSION" -lt 4 ]]) \
# || [[ "$PHP_MAJOR_VERSION" -lt 8 ]] ; then
if [[ "$os_dist" = "debian" ]] && [[ "$os_version" -lt 13 ]] \
&& ( [[ "$PHP_MAJOR_VERSION" -lt 8 ]] \
|| ( [[ "$PHP_MAJOR_VERSION" -eq 8 ]] && [[ "$PHP_MINOR_VERSION" -lt 4 ]] ) ) ; then
config_params="$config_params
--with-imap
@@ -6923,33 +6995,321 @@ echo "" >> ${_logdir}/pecl_install.log
echononl "\tInstall 'imap' via pecl.."
if ([[ "$PHP_MAJOR_VERSION" -eq 8 ]] && [[ "$PHP_MINOR_VERSION" -ge 4 ]]) \
|| [[ "$PHP_MAJOR_VERSION" -gt 8 ]] ; then
printf "\n" | ${PREFIX_PHP}/bin/pecl install imap >> "${_logdir}/pecl_install.log" 2>&1
if [ "$?" = "0" ]; then
echo_ok
|| [[ "$PHP_MAJOR_VERSION" -gt 8 ]] \
|| ([[ "$os_dist" = "debian" ]] && [[ "$os_version" -ge 13 ]]) ; then
if dpkg -s libc-client-dev > /dev/null 2>&1 \
|| dpkg -s libc-client2007e-dev > /dev/null 2>&1 \
|| dpkg -s libc-client2007f-dev > /dev/null 2>&1 \
|| dpkg -s uw-imap-dev >/dev/null 2>&1; then
export CPPFLAGS="-I/usr/include"
export LDFLAGS="-L/usr/lib"
printf "no\nyes\n" | pecl install imap >> "${_logdir}/pecl_install.log" 2>&1
echononl "\tphp.ini: extension=imap .."
_extension="imap.so"
perl -i -n -p -e "s#^(\s*\[PHP\]\s*)#\1\nextension=${_extension}\n#" $PHP_INI_FILE
if [ "$?" = "0" ]; then
echo_ok
echononl "\tphp.ini: extension=imap .."
_extension="imap.so"
perl -i -n -p -e "s#^(\s*\[PHP\]\s*)#\1\nextension=${_extension}\n#" $PHP_INI_FILE
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
else
echo_failed
echo ""
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
echo ""
fi
elif [[ -f "/usr/local/imap/lib/libc-client.a" ]] ; then
_failed=false
echo_skipped
echo -e "\tTry to install imap from source.."
cd /tmp
rm -rf /tmp/imap-*
echo "" >> ${_logdir}/pecl_install.log
echo "# Try to install imap from source.." >> ${_logdir}/pecl_install.log
echo "cd /tmp" >> ${_logdir}/pecl_install.log
echo "rm -rf /tmp/imap-*" >> ${_logdir}/pecl_install.log
# Download imap archive
echononl "\t Download imap source (pecl download imap).."
echo "" >> ${_logdir}/pecl_install.log
echo "# Download imap source .." >> ${_logdir}/pecl_install.log
echo "pecl download imap" >> ${_logdir}/pecl_install.log
pecl download imap > /dev/null 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
echo ""
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
echo ""
_failed=true
fi
# Unzip imap source archive
if ! ${_failed} ; then
echononl "\t Unzip imap source archive .."
echo "" >> ${_logdir}/pecl_install.log
echo "# Unzip imap source archiv .." >> ${_logdir}/pecl_install.log
echo "tar xzf imap-*.tgz " >> ${_logdir}/pecl_install.log
tar xzf imap-*.tgz >> ${_logdir}/pecl_install.log
if [[ $? -eq 0 ]]; then
echo_ok
echo " cd imap-*/" >> ${_logdir}/pecl_install.log
cd imap-*/ >> ${_logdir}/pecl_install.log
if [[ $? -gt 0 ]]; then
error "Error changing directory.."
echo ""
echo "command was: cd imap-*/"
echo ""
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
echo ""
_failed=true
fi
else
echo_failed
echo ""
echo "command was: tar xzf imap-*.tgz"
echo ""
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
echo ""
_failed=true
fi
fi
# phpize
if ! ${_failed} ; then
echononl "\t Prepare for building extension imap: phpize .."
echo "" >> ${_logdir}/pecl_install.log
echo "# Prepare for building extension imap: phpize .." >> ${_logdir}/pecl_install.log
echo "/usr/local/php-${VERSION}/bin/phpize " >> ${_logdir}/pecl_install.log
/usr/local/php-${VERSION}/bin/phpize >> ${_logdir}/pecl_install.log 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
echo ""
echo "command was: /usr/local/php-${VERSION}/bin/phpize"
echo ""
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
echo ""
_failed=true
fi
fi
# Configure..
if ! ${_failed} ; then
echononl "\t Configure imap extension.. .."
echo "" >> ${_logdir}/pecl_install.log
echo "# Configure imap extension .." >> ${_logdir}/pecl_install.log
cat <<EOF >> ${_logdir}/pecl_install.log
export CPPFLAGS="-I/usr/local/imap/include"
export LDFLAGS="-L/usr/local/imap/lib"
./configure \
--with-php-config=/usr/local/php-${VERSION}/bin/php-config \
--with-imap=/usr/local/imap \
--with-kerberos \
--with-imap-ssl
EOF
export CPPFLAGS="-I/usr/local/imap/include"
export LDFLAGS="-L/usr/local/imap/lib"
./configure \
--with-php-config=/usr/local/php-${VERSION}/bin/php-config \
--with-imap=/usr/local/imap \
--with-kerberos \
--with-imap-ssl >> ${_logdir}/pecl_install.log 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
echo ""
echo "command was: ./configure .."
echo ""
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
echo ""
_failed=true
fi
fi
if ! ${_failed} ; then
echononl "\t make.."
echo "" >> ${_logdir}/pecl_install.log
echo "# make .." >> ${_logdir}/pecl_install.log
echo "make -j\"$(nproc)\"" >> ${_logdir}/pecl_install.log
make -j"$(nproc)" >> ${_logdir}/pecl_install.log 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
echo ""
echo "command was: make -j\"$(nproc)\""
echo ""
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
echo ""
_failed=true
fi
fi
if ! ${_failed} ; then
echononl "\t make install.."
echo "" >> ${_logdir}/pecl_install.log
echo "# make install .." >> ${_logdir}/pecl_install.log
echo "make install" >> ${_logdir}/pecl_install.log
make install >> ${_logdir}/pecl_install.log 2>&1
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
echo ""
echo "command was: make install"
echo ""
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
echo ""
_failed=true
fi
fi
rm -rf /tmp/imap-*
if ! $_failed ; then
echononl "\tphp.ini: extension=propro .."
_extension="imap.so"
echo "" >> ${_logdir}/pecl_install.log
echo "# php.ini: extension=${_extension} .." >> ${_logdir}/pecl_install.log
echo "perl -i -n -p -e \"s#^(\s*\[PHP\]\s*)#\1\nextension=${_extension}\n#\" $PHP_INI_FILE" >> ${_logdir}/pecl_install.log
perl -i -n -p -e "s#^(\s*\[PHP\]\s*)#\1\nextension=${_extension}\n#" $PHP_INI_FILE
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
echo ""
fi
else
echo_failed
echo ""
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
echo ""
echo_skipped
warn "The imap plugin cannot be installed - no imap library was found. "
fi
else
@@ -7197,7 +7557,7 @@ else
_extension="propro.so"
echo "" >> ${_logdir}/pecl_install.log
echo "# php.ini: extension=memcsched .." >> ${_logdir}/pecl_install.log
echo "# php.ini: extension=${_extension} .." >> ${_logdir}/pecl_install.log
echo "perl -i -n -p -e \"s#^(\s*\[PHP\]\s*)#\1\nextension=${_extension}\n#\" $PHP_INI_FILE" >> ${_logdir}/pecl_install.log
perl -i -n -p -e "s#^(\s*\[PHP\]\s*)#\1\nextension=${_extension}\n#" $PHP_INI_FILE
@@ -7508,6 +7868,54 @@ echo ""
> ${_logdir}/pear_install.log
echo "" >> ${_logdir}/pear_install.log
echo "# - Change into TMP dir '/tmp'" >> ${_logdir}/pear_install.log
echo "# -" >> ${_logdir}/pear_install.log
echo "cd /tmp" >> ${_logdir}/pear_install.log
echononl "\tChange into TMP dir '/tmp'.."
cd /tmp >> ${_logdir}/pear_install.log 2>&1
if [[ $? -gt 0 ]] ; then
echo_failed
error "Changinginto TMP dir '/tmp' failed! \n\t See logfile '${_logdir}/pear_install.log'"
echo ""
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Interupted by user"
else
echo_ok
fi
echo "" >> ${_logdir}/pear_install.log
echo "# - Update channel 'pear.php.net'.." >> ${_logdir}/pear_install.log
echo "# -" >> ${_logdir}/pear_install.log
echo "${PREFIX_PHP}/bin/pear channel-update pear.php.net" >> ${_logdir}/pear_install.log
echononl "\tUpdate channel 'pear.php.net'.."
${PREFIX_PHP}/bin/pear channel-update pear.php.net >> ${_logdir}/pear_install.log 2>&1
if [[ $? -gt 0 ]] ; then
echo_failed
error "Updating channel 'pear.php.net' failed! \n\t See logfile '${_logdir}/pear_install.log'"
echo ""
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Interupted by user"
else
echo_ok
fi
PEAR_EXT="Net_Socket"
echo "" >> ${_logdir}/pear_install.log
echo "# - Install ${PEAR_EXT} via pear.." >> ${_logdir}/pear_install.log
@@ -8453,7 +8861,7 @@ if [[ -d "/usr/local/mysql" ]]; then
fi
cd $pwd
cd ${CUR_PWD}
cat<<EOF