We already have a check to avoid upgrading between minor versions,
such as 4.3 <-> 4.4 (and 4.4 <-> 4.5):
```
Cannot upgrade/downgrade to 4.4.11-rc.3 from 4.3.17
We only support relup between patch versions
escript: exception error: {relup_not_allowed,unsupported_target_version}
in function install_upgrade_escript__escript__1670__7364__537878__24:validate_target_version/2 (/usr/lib/emqx/bin/install_upgrade.escript, line 444)
in call from install_upgrade_escript__escript__1670__7364__537878__24:install/2 (/usr/lib/emqx/bin/install_upgrade.escript, line 58)
in call from escript:run/2 (escript.erl, line 758)
in call from escript:start/1 (escript.erl, line 277)
in call from init:start_em/1
in call from init:do_boot/3
```
But such check is missing for `unpack`, which may result in an
unusable node after just unpacking:
```
emqx@d70cfe0e8e62:~$ emqx ctl status
ERROR: node_is_not_running!
```
The issue apparently arises from `nodetool` trying to use the
`compiler` lib from the newer version rather than the old one:
```
+ ERL_FLAGS=' -start_epmd false -epmd_module ekka_epmd -proto_dist ekka'
+ /usr/lib/emqx/erts-11.2.2.8/bin/escript /usr/lib/emqx/bin/nodetool -name emqx@127.0.0.1 -setcookie emqxsecretcookie ping
+ die 'node_is_not_running!' 1
+ set +x
ERROR: node_is_not_running!
emqx@d70cfe0e8e62:~$ /usr/lib/emqx/erts-11.2.2.8/bin/escript /usr/lib/emqx/bin/nodetool -name emqx@127.0.0.1 -setcookie emqxsecretcookie ping
escript: Internal error: undef
=ERROR REPORT==== 2-Dec-2022::19:02:39.150274 ===
Loading of /usr/lib/emqx/lib/compiler-8.1.1/ebin/compile.beam failed: badfile
=ERROR REPORT==== 2-Dec-2022::19:02:39.150271 ===
beam/beam_load.c(1879): Error loading module compile:
This BEAM file was compiled for a later version of the run-time system than 23.
To fix this, please recompile this module with an 23 compiler.
(Use of opcode 176; this emulator supports only up to 170.)
```
Starting from this commit, there will be no more merges from 4.3 to 4.4.
That is: fixes affecting both 4.3 and 4.4 will have to be sent
in separate pull requests.
This change is due to two reasons:
1. The ever increasing divergence from 4.4 is making the merges
to cause more and more conflicts which are also harder to resolve
2. Opensource edition 4.3 has come to the 18-month EOL by November 2022