ISPConfig Migration Toolkit Debian 12 Dash is incompatible

Discussion in 'Plugins/Modules/Addons' started by Smythsys, Nov 1, 2023.

  1. Smythsys

    Smythsys New Member


    We are having a problem with ISPConfig Migration Toolkit
    Source server: Debian 12
    Destination server: Debian 12

    Error 1: You are using an unsupported PHP version (8.2).
    We had to install php 7.4 and use the command PHP=/usr/bin/php7.4 ./migrate
    Are there any plans to make the tool compatible (in the short term)?

    Error 2: Please change default shell to bash. Dash is incompatible.
    The command "dpkg-reconfigure dash" does not work.

    The server is in production.
    What can we do?

  2. till

    till Super Moderator Staff Member ISPConfig Developer

    We plan to make it compatible, but this will take some time. You can use it with an alternate PHP version in the way you described it, that's why this option was added to the Tool. We are also working on making it available as Docker image to prevent such incompatibilities.

    That's a known issue in Debian 12 that dpkg-reconfigure command refuses to disable dash. The Migration Tool uses complex bash scripts, and dash is simply not capable of running them. The solution is to temporarily rename /bin/sh (which is a symlink) and then create a new symlink for /bin/sh that points to bash instead of dash.
    Smythsys and Th0m like this.
  3. Smythsys

    Smythsys New Member

    Thanks for the quick response!

    Personally I prefer not to install more packages than necessary (like older versions of php or docker) , but that's great for older/unsupported systems.

    This will need a workaround. As indicated in the following link, this is not a bug and will be the case from now on using non-interactive shell (the same for Ubuntu releases).

    https : / /
    (Check the blanks, I am not allowed to use links)

    "From DebianSqueeze to DebianBullseye, it was possible to select bash as the target of the /bin/sh symlink (by running dpkg-reconfigure dash). As of DebianBookworm, this is no longer supported".

    For now we have fixed it as you suggested by changing the /bin/sh link.

    Change to Bash
    sudo ln -sf /bin/bash /bin/sh
    Revert to to Dash
    sudo ln -sf /bin/dash /bin/sh
  4. till

    till Super Moderator Staff Member ISPConfig Developer

    There used to be a command to do this, dpkg-reconfigure, which does not obey the selection that the administrator (root user) of a system has chosen for the shell anymore. So, I would call this a bug as the command and config option for dash still exists, even if they might call it a feature. It's OK if Debian devs decide that they like this misbehavior of the command, which means they render their command useless, so we will have to start providing our own code to fix what they broke in Debian 12.

    The reason why this is an issue is simply that all PHP binaries have hardcoded references to /bin/sh, so even if you run a php script with bash on the shell, it will execute commands internally that are run with exec with dash if /bin/sh is linked to dash, so there is no workaround as either changing /bin/sh to a more capable shell than dash or changing PHP sources and recompile PHP.
    ahrasis, Th0m and Smythsys like this.

Share This Page