Ubuntu 24.04 LTS installation issues

I’ve spent a long and painful afternoon on this and it’s not working yet.

Firstly, I think I’m right in saying the docs should warn to set install_network to false. There’s a hardcoded chown pi:pi in there which looks unhelpful to me. I say this in case it helps someone else down the line.

Secondly the php installer assumes version 8.1, which isn’t available by default on 24.04. I tried changing the script to 8.3, but that didn’t play at all nicely. I installed an 8.1 version repo and it goes a lot further but

a) the install script seems to create a lot of 8.3 config files anyway, when it installs php8.3-common. This worries me.

b) then there are lot of warnings like

Warning: foreach() argument must be of type array|object, null given in Command.php on line 249

And finally, this kills the install

Fatal error: Uncaught mysqli_sql_exception: Access denied for user 'emoncms'@'localhost' (using password: YES) in /opt/openenergymonitor/EmonScripts/common/emoncmsdbupdate.php:16
Stack trace:
#0 /opt/openenergymonitor/EmonScripts/common/emoncmsdbupdate.php(16): mysqli->__construct()
#1 {main}
  thrown in /opt/openenergymonitor/EmonScripts/common/emoncmsdbupdate.php on line 16

I’ve checked, and the database exists and I can do the equivalent log in from the command line

mysql --host=localhost -u emoncms -p emoncms

However, the script is connecting from php, which is in a suspicious state (see above). Although I have years of experience of Linux and so on, I have nearly none of php, so I’m stuck…

I’m happy to post the full log output if that would be helpful.

Can anyone help, please?
Thanks.

1 Like

Looks like there’s a bit of work required to get it running on latest, will try a fresh build soon and let you know how far I get.

Yes that would be useful thanks!

1 Like

If you have the log for this set to 8.3 that would be interesting EmonScripts/install/php.sh at master · openenergymonitor/EmonScripts · GitHub

More accurately, it doesn’t assume 8.1 it forces 8.1 as we knew there was an issue with versions above that (which worked previously). There are a couple of PHP version related Issues in GitHub.

Probably need to do the work on updating and then dropping the Pi Zero/ARMv6 support completely.

PHP: Supported Versions

Is it defaulting to 8.3 as it doesn’t find 8.1 or have you amended the install script to install 8.3?

Can you start from scratch and take a copy of the install log messages?

./main.sh 2>&1 | tee install.log

I wonder if the mysql issue is related to an uncaught error (the install script isn’t robust in that respect).

This is where VMs and snapshots come in handy!

[edit]
I’m sort of remembering hitting this issue before and simply dropped back to an earlier Ubuntu last time I did it from scratch.

[edit2]
Are you running the install as root or creating a user pi?

I started with a new, clean ubuntu server 24.04 LTS.

I did the apt update and apt upgrade manually, as these don’t play nicely in the script - I’m guessing because of the tee? One of the upgrades changes a conf file and it wants to present you with that choice of view changes/keep/replace. That is totally un-interactive and you have to crash out of the process.

I downloaded the init script with wget as per the instructions. When offered to tweak the config, I did so (attached).

I’m logged in as a normal user (‘miles’) which has sudo ability, and ran the script as that as I see it has sudo wherever it needs it. The result is “run 1 - php default.zip”.

Then I reset the machine to a handy checkpoint I prepared earlier, used exactly the same tweaked config.ini but this time adjusted the hard wired 8.1 in the top of php.sh to 8.3. The result is “run 2 - php 83.zip”

Hope this is useful.

Ah, just tripped over the “new users cannot upload attachments”. Can someone work around this for me, please?

Cheers
Miles

Neither. I’m running it as my user- pi doesn’t exist and I’d have to be convinced of the need… Please see more details on the post I replied to in full later in this thread. I have logs but can’t upload yet.

Thanks.

See reply later in this thread, please…

You should be OK now.

There are some change owner/user commands within the scripts that don’t then play nicely with a different user. As we expect that emoncms is a dedicated machine/VM it is just too time consuming to add checks to each of the scripts.

If you could try it with a pi user, that will eliminate what the issue is (if it works).

Ok, some progress today. I now have an installation which at least lets me register and access an emoncms website, using the config.ini below. No feeds or anything else tested though.

Observations

  1. You can run it as pi or as the current logged in user, and set that user in user=, however the user pi must exist on the system. For simplicity, I’ve run my latest install as the pi user.

  2. Set PHP_Ver="8.3" in the top of php.sh

  3. apt_get_upgrade_and_clean=false. Do the apt upgrade and apt update steps before you run the main.sh script.

  4. The mysql password cannot in fact be changed in config.ini. It seems to be hardcoded in a few places in the codebase. Maybe it can be changed later, I don’t know at this point.

  5. I don’t have a menu entry for emonhub. I don’t even see any section relating to emonhub in the log. If I run emonhub.sh on its own, there are a handful of suspicious lines output

EmonHub directory: /opt/openenergymonitor/emonhub
/opt/openenergymonitor/emonhub/install.sh: line 21: cd: 0/EmonScripts/update: No such file or directory
/opt/openenergymonitor/emonhub/install.sh: line 22: load_config.sh: No such file or directory
...
Failed to restart emonhub.service: Unit var-log.mount not found.
...
E: Unable to locate package python3-pymodbus

Do I stand a chance of getting emonhub working, or might I have to roll my own solution? It looks like a powerful framework and I’d rather contribute back anything I manage to configure.

My config.ini

# Edit this config file to suit your local environment if it is not a
# vanilla Raspberry Pi.
#
# Main settings to look atif a non pi environment
# user - Change user to reflect your OS user
# emonSD_pi_env - Set emonSD_pi_env=0 if not a raspberrypi
# install_redis - REDIS is required for feedwriter, service-runner and emoncms_mqtt services
# locations - modify the install and data storage locations

user=pi
hostname=emon
emonSD_pi_env=0

# Components enabled
apt_get_upgrade_and_clean=false
install_apache=true
install_mysql=true
install_php=true
install_redis=true
# To use mqtt but a different server, just set install_mosquitto_server=false
# manually configure mqtt server settings in settings.ini
install_mosquitto=true
install_mosquitto_server=true
install_mosquitto_client=true

install_emoncms_core=true
install_emoncms_modules=true

# RaspberryPi emonSD applicable items - ignored if setting emonSD_pi_env=0
# set to false if not needed

# EmonHub: comment out line above "emoncms_emonpi_modules[config]=stable" if
# you do not wish to have the emoncms emonhub config module installed
install_emonhub=true

install_emoncms_emonpi_modules=false
install_firmware=false
install_emonpilcd=false
install_emonsd=false
install_docker=false
install_network=false

enable_onewire=false

openenergymonitor_dir=/opt/openenergymonitor
emoncms_dir=/opt/emoncms

emoncms_www=/var/www/emoncms
emoncms_log_location=/var/log/emoncms
emoncms_datadir=/var/opt/emoncms

# usernames and passwords below are for default raspberrypi installation
# these can all be changed to own preference

# MySQL
mysql_user=emoncms
mysql_password=emonpiemoncmsmysql2016
mysql_database=emoncms

# MQTT - change settings.ini after install if server is not local
mqtt_user=emonpi
mqtt_password=emonpimqtt2016

# Default branches
emoncms_core_branch=stable
emonhub_branch=stable
log2ram_branch=rsync_mods

# Core Modules installed in $emoncms_www/Modules
# Configure branches as applicable
declare -A emoncms_modules
emoncms_modules[graph]=stable
emoncms_modules[dashboard]=stable
emoncms_modules[app]=stable
emoncms_modules[device]=stable

# Specific EmonPi / EmonBase Modules installed in $emoncms_www/Modules
# Configure branches as applicable
declare -A emoncms_emonpi_modules
emoncms_emonpi_modules[config]=stable
emoncms_emonpi_modules[setup]=stable

# Modules installed in $emoncms_dir/modules
# Configure branches as applicable
declare -A symlinked_emoncms_modules
# symlinked_emoncms_modules[demandshaper]=stable
symlinked_emoncms_modules[sync]=stable
symlinked_emoncms_modules[backup]=stable
symlinked_emoncms_modules[usefulscripts]=stable
symlinked_emoncms_modules[postprocess]=stable
symlinked_emoncms_modules[network]=master

######################################################
## Only change the repositories if you are a developer.
# git repositories
declare -A git_repo
git_repo[emoncms_core]=https://github.com/emoncms/emoncms.git
# main modules
git_repo[config]=https://github.com/emoncms/config.git
git_repo[graph]=https://github.com/emoncms/graph.git
git_repo[dashboard]=https://github.com/emoncms/dashboard.git
git_repo[app]=https://github.com/emoncms/app.git
git_repo[device]=https://github.com/emoncms/device.git
git_repo[setup]=https://github.com/emoncms/setup.git
# symlinked modules
# git_repo[demandshaper]=https://github.com/emoncms/demandshaper.git
git_repo[sync]=https://github.com/emoncms/sync.git
git_repo[backup]=https://github.com/emoncms/backup.git
git_repo[usefulscripts]=https://github.com/emoncms/usefulscripts.git
git_repo[postprocess]=https://github.com/emoncms/postprocess.git
git_repo[network]=https://github.com/emoncms/network.git
# emonhub
git_repo[emonhub]=https://github.com/openenergymonitor/emonhub.git
# emonpi/rpi specific tools
git_repo[emonpi]=https://github.com/openenergymonitor/emonpi.git
git_repo[log2ram]=https://github.com/openenergymonitor/log2ram.git
git_repo[avrdude-rpi]=https://github.com/openenergymonitor/avrdude-rpi.git
git_repo[RFM2Pi]=https://github.com/openenergymonitor/RFM2Pi
git_repo[emonPiLCD]=https://github.com/openenergymonitor/emonPiLCD
1 Like

Not often emonhub is installed on a server so probably never tested before :slight_smile:

Did you record the install log? Are there any entires around that.

In the scripts, this triggers the emonhub install

This is the line failing (21) when you try and call it (probably not in the right directory to start with).

Has the emonhub directory been created (i.e. did the git clone work)?

If not just go to /opt/openenergymonitor/ and do a git clone.

You should be able to (logged in as pi), just run the install.sh without and parameters.

You only need emonHub if you are connecting devices generally via USB or serial directly to the server. Might make sense if this was a home server. If this is a VM on a remote server somewhere there’s no benefit in installing emonHub

1 Like

Thanks.

Maybe I misunderstood my reading up on the emonhub - that it would read from eg modbus over TCP and write to an input and hence a feed. That would be perfect for my local installation (non-pi).

For completeness, I just ran the emonhub.sh installer and the log output is below

-------------------------------------------------------------
BEGIN emonHub install
-------------------------------------------------------------
Cloning into 'emonhub'...
remote: Enumerating objects: 5888, done.
remote: Counting objects: 100% (632/632), done.
remote: Compressing objects: 100% (180/180), done.
remote: Total 5888 (delta 509), reused 490 (delta 443), pack-reused 5256 (from 1)
Receiving objects: 100% (5888/5888), 2.74 MiB | 4.71 MiB/s, done.
Resolving deltas: 100% (4033/4033), done.
EmonHub directory: /opt/openenergymonitor/emonhub
/opt/openenergymonitor/emonhub/install.sh: line 21: cd: 0/EmonScripts/update: No such file or directory
/opt/openenergymonitor/emonhub/install.sh: line 22: load_config.sh: No such file or directory
emonSD_pi_env provided in arg = 0
user provided as arg = pi
installing or updating emonhub dependencies
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package python3-pymodbus
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

    See /usr/share/doc/python3.12/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

    See /usr/share/doc/python3.12/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

    See /usr/share/doc/python3.12/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Creating /etc/emonhub directory
chown: cannot access '/var/log/emonhub': No such file or directory
No existing emonhub.conf configuration file found, installing default
emonhub.conf permissions adjusted to 666
Default emonhub.conf log level set to WARNING
Installing /usr/local/bin/emonhub symlink
Installing emonhub.service in /lib/systemd/system (creating symlink)
Created symlink /etc/systemd/system/emonhub.service → /opt/openenergymonitor/emonhub/service/emonhub.service.
Created symlink /etc/systemd/system/multi-user.target.wants/emonhub.service → /opt/openenergymonitor/emonhub/service/emonhub.service.
Failed to restart emonhub.service: Unit var-log.mount not found.
Failed to restart emonhub.service: Unit var-log.mount not found.
- Service ActiveState=inactive
/opt/openenergymonitor/EmonScripts/sudoers.d/emonhub-sudoers: parsed OK
-- emonhub service control sudoers entry installed
-------------------------------------------------------------
END emonHub install
-------------------------------------------------------------

(The BEGIN and END are mine)

For myself, I decided the shorter path to happiness was to write a couple of quick scripts and cron them so that I can read from my heatpump modbus and a Shelly energy clamp and push them into emoncms via the POST api. Seems to work a treat.

I have other questions, but I’ll find or start a different thread.

Thanks for the help in getting this far!
Miles

@TrystanLea @glyn.hudson probably needs investigating.

[edit]
Looks like they are forcing the use of venv. It will come to PiOS eventually.

We are currently bypassing this stricter requirement in EmonScripts by removing a flag that then allows the older installation procedure e.g:

sudo rm -rf /usr/lib/python3.11/EXTERNALLY-MANAGED
1 Like

Is that a new change since @miles installed it?

Turns out there are other installation issues.

I happened to be looking for an unrelated issue in syslog and saw lots of these:

2024-09-10T13:56:34.424371+00:00 emon systemd[1]: service-runner.service: Scheduled restart job, restart counter is at 53759.
2024-09-10T13:56:34.428994+00:00 emon systemd[1]: Started service-runner.service - Emoncms service-runner Input Script.
2024-09-10T13:56:34.598923+00:00 emon service-runner[1466747]: Traceback (most recent call last):
2024-09-10T13:56:34.600471+00:00 emon service-runner[1466747]:   File "/var/www/emoncms/scripts/services/service-runner/service-runner.py", line 13, in <module>
2024-09-10T13:56:34.600532+00:00 emon service-runner[1466747]:     import redis
2024-09-10T13:56:34.600556+00:00 emon service-runner[1466747]: ModuleNotFoundError: No module named 'redis'
2024-09-10T13:56:34.623034+00:00 emon systemd[1]: service-runner.service: Main process exited, code=exited, status=1/FAILURE
2024-09-10T13:56:34.624024+00:00 emon systemd[1]: service-runner.service: Failed with result 'exit-code'.

The relevant section of the build log is below, with a suspicious output at the very end

-------------------------------------------------------------
Redis configuration
-------------------------------------------------------------
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  libjemalloc2 liblzf1 redis-tools
Suggested packages:
  ruby-redis
The following NEW packages will be installed:
  libjemalloc2 liblzf1 redis-server redis-tools
0 upgraded, 4 newly installed, 0 to remove and 41 not upgraded.
Need to get 1,481 kB of archives.
After this operation, 7,558 kB of additional disk space will be used.
Get:1 http://gb.archive.ubuntu.com/ubuntu noble/universe amd64 libjemalloc2 amd64 5.3.0-2build1 [256 kB]
Get:2 http://gb.archive.ubuntu.com/ubuntu noble/universe amd64 liblzf1 amd64 3.6-4 [7,624 B]
Get:3 http://gb.archive.ubuntu.com/ubuntu noble/universe amd64 redis-tools amd64 5:7.0.15-1build2 [1,165 kB]
Get:4 http://gb.archive.ubuntu.com/ubuntu noble/universe amd64 redis-server amd64 5:7.0.15-1build2 [51.7 kB]
Fetched 1,481 kB in 0s (3,847 kB/s)
Selecting previously unselected package libjemalloc2:amd64.M
(Reading database ... M(Reading database ... 5%M(Reading database ... 10%M(Reading database ... 15%M(Reading database ... 20%M(Reading database ... 25%M(Reading database ... 30%M(Reading database ... 35%M(
Preparing to unpack .../libjemalloc2_5.3.0-2build1_amd64.deb ...M
Unpacking libjemalloc2:amd64 (5.3.0-2build1) ...M
Selecting previously unselected package liblzf1:amd64.M
Preparing to unpack .../liblzf1_3.6-4_amd64.deb ...M
Unpacking liblzf1:amd64 (3.6-4) ...M
Selecting previously unselected package redis-tools.M
Preparing to unpack .../redis-tools_5%3a7.0.15-1build2_amd64.deb ...M
Unpacking redis-tools (5:7.0.15-1build2) ...M
Selecting previously unselected package redis-server.M
Preparing to unpack .../redis-server_5%3a7.0.15-1build2_amd64.deb ...M
Unpacking redis-server (5:7.0.15-1build2) ...M
Setting up libjemalloc2:amd64 (5.3.0-2build1) ...M
Setting up liblzf1:amd64 (3.6-4) ...M
Setting up redis-tools (5:7.0.15-1build2) ...M
Setting up redis-server (5:7.0.15-1build2) ...M
Created symlink /etc/systemd/system/redis.service ? /usr/lib/systemd/system/redis-server.service.MM
Created symlink /etc/systemd/system/multi-user.target.wants/redis-server.service ? /usr/lib/systemd/system/redis-server.service.MM
Processing triggers for man-db (2.12.0-4build2) ...M
Processing triggers for libc-bin (2.39-0ubuntu8.3) ...M
Disabling Ubuntu mode, explicit restart mode configured
Running kernel seems to be up-to-date.

Restarting services...

Service restarts being deferred:
 /etc/needrestart/restart.d/dbus.service
 systemctl restart systemd-logind.service
 systemctl restart unattended-upgrades.service

No containers need to be restarted.

User sessions running outdated binaries:
 miles @ session #1: login[1081]
 miles @ session #3: sshd[1272]
 miles @ session #5: sshd[9559]
 miles @ session #9: sshd[10333]
 miles @ user manager service: systemd[1205]
 pi @ session #13: sshd[10804]
 pi @ user manager service: systemd[10673]

No VM guests are running outdated hypervisor (qemu) binaries on this host.
-------------------------------------------------------------

Cloning into 'phpredis'...
Configuring for:
PHP Api Version:         20230831
Zend Module Api No:      20230831
Zend Extension Api No:   420230831
configure.ac:165: warning: The macro `AC_PROG_LIBTOOL' is obsolete.
configure.ac:165: You should run autoupdate.
build/libtool.m4:100: AC_PROG_LIBTOOL is expanded from...
configure.ac:165: the top level
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /usr/bin/sed
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for cc... cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether cc accepts -g... yes
checking for cc option to enable C11 features... none needed
checking how to run the C preprocessor... cc -E
checking for icc... no
checking for suncc... no
checking for system library directory... lib
checking if compiler supports -Wl,-rpath,... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for PHP prefix... /usr
checking for PHP includes... -I/usr/include/php/20230831 -I/usr/include/php/20230831/main -I/usr/include/php/20230831/TSRM -I/usr/include/php/20230831/Zend -I/usr/include/php/20230831/ext -I/usr/include/ph
checking for PHP extension directory... /usr/lib/php/20230831
checking for PHP installed headers prefix... /usr/include/php/20230831
checking if debug is enabled... no
checking if zts is enabled... no
checking for gawk... gawk
checking whether to enable redis support... yes, shared
checking whether to enable sessions... yes
checking whether to enable json serializer support... yes
checking whether to enable igbinary serializer support... no
checking whether to enable msgpack serializer support... no
checking whether to enable lzf compression... no
checking use system liblzf... no
checking whether to enable Zstd compression... no
checking use system libzstd... yes
checking whether to enable lz4 compression... no
checking use system liblz4... no
checking for hash includes... /usr/include/php/20230831
checking for json includes... /usr/include/php/20230831
checking for redis json support... enabled
checking for redis igbinary support... disabled
checking for pkg-config... /usr/bin/pkg-config
checking for git... yes
checking how to print strings... printf
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for fgrep... /usr/bin/grep -F
checking for ld used by cc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for file... file
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking for gawk... (cached) gawk
checking command to parse /usr/bin/nm -B output from cc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if cc supports -fno-rtti -fno-exceptions... no
checking for cc option to produce PIC... -fPIC -DPIC
checking if cc PIC flag -fPIC -DPIC works... yes
checking if cc static flag -static works... yes
checking if cc supports -c -o file.o... yes
checking if cc supports -c -o file.o... (cached) yes
checking whether the cc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
configure: patching config.h.in
configure: creating ./config.status
config.status: creating config.h
config.status: executing libtool commands
/bin/bash /opt/openenergymonitor/EmonScripts/install/phpredis/libtool --tag=CC --mode=compile cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpre
libtool: compile:  cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpredis/include -I/opt/openenergymonitor/EmonScripts/install/phpredis/main -I/o
/bin/bash /opt/openenergymonitor/EmonScripts/install/phpredis/libtool --tag=CC --mode=compile cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpre
libtool: compile:  cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpredis/include -I/opt/openenergymonitor/EmonScripts/install/phpredis/main -I/o
/bin/bash /opt/openenergymonitor/EmonScripts/install/phpredis/libtool --tag=CC --mode=compile cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpre
libtool: compile:  cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpredis/include -I/opt/openenergymonitor/EmonScripts/install/phpredis/main -I/o
/bin/bash /opt/openenergymonitor/EmonScripts/install/phpredis/libtool --tag=CC --mode=compile cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpre
libtool: compile:  cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpredis/include -I/opt/openenergymonitor/EmonScripts/install/phpredis/main -I/o
/bin/bash /opt/openenergymonitor/EmonScripts/install/phpredis/libtool --tag=CC --mode=compile cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpre
libtool: compile:  cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpredis/include -I/opt/openenergymonitor/EmonScripts/install/phpredis/main -I/o
/bin/bash /opt/openenergymonitor/EmonScripts/install/phpredis/libtool --tag=CC --mode=compile cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpre
libtool: compile:  cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpredis/include -I/opt/openenergymonitor/EmonScripts/install/phpredis/main -I/o
/bin/bash /opt/openenergymonitor/EmonScripts/install/phpredis/libtool --tag=CC --mode=compile cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpre
libtool: compile:  cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpredis/include -I/opt/openenergymonitor/EmonScripts/install/phpredis/main -I/o
/bin/bash /opt/openenergymonitor/EmonScripts/install/phpredis/libtool --tag=CC --mode=compile cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpre
libtool: compile:  cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpredis/include -I/opt/openenergymonitor/EmonScripts/install/phpredis/main -I/o
/bin/bash /opt/openenergymonitor/EmonScripts/install/phpredis/libtool --tag=CC --mode=compile cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpre
libtool: compile:  cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpredis/include -I/opt/openenergymonitor/EmonScripts/install/phpredis/main -I/o
/bin/bash /opt/openenergymonitor/EmonScripts/install/phpredis/libtool --tag=CC --mode=compile cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpre
libtool: compile:  cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpredis/include -I/opt/openenergymonitor/EmonScripts/install/phpredis/main -I/o
/bin/bash /opt/openenergymonitor/EmonScripts/install/phpredis/libtool --tag=CC --mode=compile cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpre
libtool: compile:  cc -I. -I/opt/openenergymonitor/EmonScripts/install/phpredis -I/opt/openenergymonitor/EmonScripts/install/phpredis/include -I/opt/openenergymonitor/EmonScripts/install/phpredis/main -I/o
/bin/bash /opt/openenergymonitor/EmonScripts/install/phpredis/libtool --tag=CC --mode=link cc -shared -I/opt/openenergymonitor/EmonScripts/install/phpredis/include -I/opt/openenergymonitor/EmonScripts/inst
libtool: link: cc -shared  -fPIC -DPIC  .libs/redis.o .libs/redis_commands.o .libs/library.o .libs/redis_session.o .libs/redis_array.o .libs/redis_array_impl.o .libs/redis_cluster.o .libs/cluster_library.o
libtool: link: ( cd ".libs" && rm -f "redis.la" && ln -s "../redis.la" "redis.la" )
/bin/bash /opt/openenergymonitor/EmonScripts/install/phpredis/libtool --tag=CC --mode=install cp ./redis.la /opt/openenergymonitor/EmonScripts/install/phpredis/modules
libtool: install: cp ./.libs/redis.so /opt/openenergymonitor/EmonScripts/install/phpredis/modules/redis.so
libtool: install: cp ./.libs/redis.lai /opt/openenergymonitor/EmonScripts/install/phpredis/modules/redis.la
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/sbin" ldconfig -n /opt/openenergymonitor/EmonScripts/install/phpredis/modules
----------------------------------------------------------------------
Libraries have been installed in:
   /opt/openenergymonitor/EmonScripts/install/phpredis/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/lib/php/20230831/
-------------------------------------------------------------
extension=redis.soerror: externally-managed-environment

× This environment is externally managed
?-> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

    See /usr/share/doc/python3.12/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --brea
hint: See PEP 668 for the detailed specification.

What functionality am is missing out on with redis compromised in this way? Can/should it be fixed?

Thanks
Miles

Hello

I am running Emoncms 11.6.2 with PHP 8.1.2 on a VPS server (Ubuntu). Another CMS is as well installed on the same Apache server.

Question 1: do you recommend upgrading to PHP 8.3?
Question 2: do you recommend upgrading to Ubuntu 24.04?

Thanks for your help

Walter