DirectAdmin v1.656 RC

fln

Administrator
Staff member
Joined
Aug 30, 2021
Messages
922
Hi everyone!

We are happy to announce the release of DirectAdmin 1.656 RC.

Main focus of this release is to provide a way for old servers to clean up no longer used libraries in /usr/local.

Full release change log can be found here:

DirectAdmin 1.656

The update should be automatically available for all installations subscribed to the beta release channel.

We appreciate all the feedback on forums and issues reported in the ticketing system.

Thanks!
 
Some clarification on old library removal.

Removable libraries list is visible with da build list_removals. Libraries can be removed one by one manually or almost all of them with da build remove_items. It is almost because it will remove all libraries except iconv. It needs to be removed manually because after fully removing iconv library all software comonents needs to be rebuit with da build all. We are forcing it to be removed manually to display this warning and prepare admins for some downtime (until all services are rebuilt).

It is possible to disable iconv without fully removing it, by removing only the header files. That way the old packages will continue to work and new software will not fail to build (exim and PHP). However I would still recommend to remove it fully and rebuild all the packages.

Old libraries removal order is important! Command da build list_removals will list them in the order they should be removed. For example removing iconv before libxml2 is removed would cause system-wide breakage of non DA related binaries (for example yum will stop working). CustomBuild will refuse removing iconv if it spots at least any other old library not yet removed.

Most straightforward way to clean-up old system would be:
  1. da build remove_items - remove all libraries except iconv.
  2. da build remove_old_local libiconv - remove iconv.
  3. da build all - rebuild everything. Note: after iconv is removed, but before everything is rebuilt some services will not work if restarted.

A more cautions approach minimizing service downtime could be:
  1. da build list_removals - check how many of the old libraries there are, useful if any of them needs to be restored.
  2. da build remove_items - remove all libraries except iconv.
  3. da build remove_old_local libiconv - remove iconv and create backup (actually only to create backup :)).
  4. da build restore_old_local libiconv - restore back iconv so that all existing software would work fine for the time being.
  5. rm -f /usr/local/include/{iconv.h,libcharset.h,localcharset.h} - remove only iconv headers (we still have full iconv backup just in case)
  6. da build all - rebuild everything, iconv from /usr/local should not be used by the rebuit software
  7. da build remove_old_local libiconv - remove iconv for good now.
It is quite hard to re-create all possible system versions with all possible old libraries combinations so we are not automating these steps inside CustomBuild and instead exposing them to the sysadmin to execute it manually. At any time it is possible to restore libraries back with da build restore_old_local {name}.

Any feedback would be really appreciated. Are there any more old libraries in /usr/local that we are not detecting and removing? Does the steps above work reliably? Have you ever needed to restore old library from backup? Thanks.
 
Does the steps above work reliably? Have you ever needed to restore old library from backup? Thanks.
I have done it on 3 servers for now (Centos 7 + AL8 +AL9) and removing old librarys didn't give any problem.
Rebuild all didnt gave any trouble, I had forgotten to remove libiconv because I had assumed that da build remove_items command will remove them all but it was not, saw later that was an separate command.
And this solved an old problem that I had with rebuilding Exim when upgrading from Centos 7 to AL8
 
Last edited:
A more cautions approach minimizing service downtime could be:
  1. da build list_removals - check how many of the old libraries there are, useful if any of them needs to be restored.
  2. da build remove_items - remove all libraries except iconv.
  3. da build remove_old_local libiconv - remove iconv and create backup (actually only to create backup :)).
  4. da build restore_old_local libiconv - restore back iconv so that all existing software would work fine for the time being.
  5. rm -f /usr/local/include/{iconv.h,libcharset.h,localcharset.h} - remove only iconv headers (we still have full iconv backup just in case)
  6. da build all - rebuild everything, iconv from /usr/local should not be used by the rebuit software
  7. da build remove_old_local libiconv - remove iconv for good now.
It is quite hard to re-create all possible system versions with all possible old libraries combinations so we are not automating these steps inside CustomBuild and instead exposing them to the sysadmin to execute it manually. At any time it is possible to restore libraries back with da build restore_old_local {name}.

Any feedback would be really appreciated. Are there any more old libraries in /usr/local that we are not detecting and removing? Does the steps above work reliably? Have you ever needed to restore old library from backup? Thanks.

It seems that debian 10 still require iconv to be able to compile php..

After Step 6:

"...checking for GNU MP support... no
checking for mhash support... yes
checking size of long... (cached) 8
checking if we're at 64-bit platform... yes
checking for iconv support... yes
configure: error: Please reinstall the iconv library.

*** There was an error while trying to configure php. Check the configure file..."
 
Some clarification on old library removal.

Removable libraries list is visible with da build list_removals. Libraries can be removed one by one manually or almost all of them with da build remove_items. It is almost because it will remove all libraries except iconv. It needs to be removed manually because after fully removing iconv library all software comonents needs to be rebuit with da build all. We are forcing it to be removed manually to display this warning and prepare admins for some downtime (until all services are rebuilt).

It is possible to disable iconv without fully removing it, by removing only the header files. That way the old packages will continue to work and new software will not fail to build (exim and PHP). However I would still recommend to remove it fully and rebuild all the packages.

Old libraries removal order is important! Command da build list_removals will list them in the order they should be removed. For example removing iconv before libxml2 is removed would cause system-wide breakage of non DA related binaries (for example yum will stop working). CustomBuild will refuse removing iconv if it spots at least any other old library not yet removed.

Most straightforward way to clean-up old system would be:
  1. da build remove_items - remove all libraries except iconv.
  2. da build remove_old_local libiconv - remove iconv.
  3. da build all - rebuild everything. Note: after iconv is removed, but before everything is rebuilt some services will not work if restarted.

A more cautions approach minimizing service downtime could be:
  1. da build list_removals - check how many of the old libraries there are, useful if any of them needs to be restored.
  2. da build remove_items - remove all libraries except iconv.
  3. da build remove_old_local libiconv - remove iconv and create backup (actually only to create backup :)).
  4. da build restore_old_local libiconv - restore back iconv so that all existing software would work fine for the time being.
  5. rm -f /usr/local/include/{iconv.h,libcharset.h,localcharset.h} - remove only iconv headers (we still have full iconv backup just in case)
  6. da build all - rebuild everything, iconv from /usr/local should not be used by the rebuit software
  7. da build remove_old_local libiconv - remove iconv for good now.
It is quite hard to re-create all possible system versions with all possible old libraries combinations so we are not automating these steps inside CustomBuild and instead exposing them to the sysadmin to execute it manually. At any time it is possible to restore libraries back with da build restore_old_local {name}.

Any feedback would be really appreciated. Are there any more old libraries in /usr/local that we are not detecting and removing? Does the steps above work reliably? Have you ever needed to restore old library from backup? Thanks.

I have found that if CSF is installed but disabled,

da build all

will fail.

In order to get it working, CSF must be enabled.
 
Nope. No other firewall / service running which might be restricting the ports.

Recreating the issues is very simple. Just disable CSF and follow the steps.
Step number 6 (da build all) will fail.

I tried it on 3 servers and had this issue.
 
Back
Top