Erreur MàJ avec shell Duplicity

Bonjour,
A priori, il y a une erreur de chemin

sh: 1: duplicity: not found

Unzip in progress | OK
Clean temporary files (tmp) | OK
Disable all task | OK
Disable all scenario | OK
Moving files
Ignore file /tmp/jeedom_unzip/core-alpha///docs/de_DE/noteVersion.md because size is 0
Ignore file /tmp/jeedom_unzip/core-alpha///docs/en_US/noteVersion.md because size is 0
Ignore file /tmp/jeedom_unzip/core-alpha///docs/es_ES/noteVersion.md because size is 0
Ignore file /tmp/jeedom_unzip/core-alpha///docs/fr_FR/noteVersion.md because size is 0
Ignore file /tmp/jeedom_unzip/core-alpha///docs/pt_PT/noteVersion.md because size is 0 | OK
Remove temporary files | OK
Remove useless files
Cleaning 3rdparty
Cleaning desktop
Cleaning mobile
Cleaning core
Cleaning docs
Cleaning install
Cleaning script
Cleaning vendor
Check jeedom consistency
[START CONSISTENCY]
[START CHECK AND FIX DB]
[END CHECK AND FIX DB]
Check jeedom database | OK
Check filesystem right | OK
sh: 1: duplicity: not found
Upgrade duplicity to 0.7.19
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
--2020-05-23 21:51:05--  https://images.jeedom.com/resources/duplicity/duplicity.tar.gz
Resolving images.jeedom.com (images.jeedom.com) 51.178.174.207, 51.91.166.124
Connecting to images.jeedom.com (images.jeedom.com)|51.178.174.207|:443 connected.
HTTP request sent, awaiting response 200 | OK
Length: 1727321 (1.6M) [application/x-gzip]
Saving to: '/tmp/duplicity.tar.gz'

C’est pas forcement grave, sachant j’ai pas l’option cloud… Par contre c’est pas clair, ça tente une réinstallation à chaque fois car ça c’est pas bon, il y a une coquille entre le répertoire d’extraction qui est le répertoire courant et pas forcement le /tmp

Voilà un fix

$duplicity_version = trim(str_replace('duplicity','',shell_exec('duplicity --version')));
if(version_compare($duplicity_version, '0.7.19','<')){
	echo "Upgrade duplicity to 0.7.19\n";
	exec('sudo apt remove -y --purge duplicity');
	exec('sudo wget https://images.jeedom.com/resources/duplicity/duplicity.tar.gz -O /tmp/duplicity.tar.gz');
	exec('tar xvf /tmp/duplicity.tar.gz -C /tmp/');
	exec('cd /tmp/duplicity-0.7.19; sudo python setup.py install 2>&1 >> /dev/null');
	exec('sudo rm -rf /tmp/duplicity.tar.gz');
	exec('sudo rm -rf duplicity-0.7.19');
}

ça lance l’installation mais ça plante

running install
running build
running build_py
creating build
creating build/lib.linux-aarch64-2.7
creating build/lib.linux-aarch64-2.7/duplicity
copying duplicity/dup_time.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/librsync.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/tempdir.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/dup_temp.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/robust.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/util.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/cached_ops.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/gpg.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/path.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/progress.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/commandline.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/asyncscheduler.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/patchdir.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/errors.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/log.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/globals.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/lazy.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/dup_threading.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/file_naming.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/compilec.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/backend.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/statistics.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/collections.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/globmatch.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/manifest.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/tarfile.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/gpginterface.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/__init__.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/diffdir.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/filechunkio.py -> build/lib.linux-aarch64-2.7/duplicity
copying duplicity/selection.py -> build/lib.linux-aarch64-2.7/duplicity
creating build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/_cf_pyrax.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/swiftbackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/pydrivebackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/localbackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/sxbackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/ncftpbackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/rsyncbackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/_boto_multi.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/gdocsbackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/tahoebackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/acdclibackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/ssh_paramiko_backend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/cfbackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/b2backend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/azurebackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/megabackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/ssh_pexpect_backend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/par2backend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/mediafirebackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/giobackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/webdavbackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/_cf_cloudfiles.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/botobackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/_boto_single.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/multibackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/lftpbackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/onedrivebackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/imapbackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/dpbxbackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/__init__.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/hsibackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
copying duplicity/backends/hubicbackend.py -> build/lib.linux-aarch64-2.7/duplicity/backends
creating build/lib.linux-aarch64-2.7/duplicity/backends/pyrax_identity
copying duplicity/backends/pyrax_identity/hubic.py -> build/lib.linux-aarch64-2.7/duplicity/backends/pyrax_identity
copying duplicity/backends/pyrax_identity/__init__.py -> build/lib.linux-aarch64-2.7/duplicity/backends/pyrax_identity
creating build/lib.linux-aarch64-2.7/testing
copying testing/test_code.py -> build/lib.linux-aarch64-2.7/testing
copying testing/__init__.py -> build/lib.linux-aarch64-2.7/testing
creating build/lib.linux-aarch64-2.7/testing/functional
copying testing/functional/test_final.py -> build/lib.linux-aarch64-2.7/testing/functional
copying testing/functional/test_badupload.py -> build/lib.linux-aarch64-2.7/testing/functional
copying testing/functional/test_selection.py -> build/lib.linux-aarch64-2.7/testing/functional
copying testing/functional/test_verify.py -> build/lib.linux-aarch64-2.7/testing/functional
copying testing/functional/test_cleanup.py -> build/lib.linux-aarch64-2.7/testing/functional
copying testing/functional/test_log.py -> build/lib.linux-aarch64-2.7/testing/functional
copying testing/functional/__init__.py -> build/lib.linux-aarch64-2.7/testing/functional
copying testing/functional/test_restart.py -> build/lib.linux-aarch64-2.7/testing/functional
copying testing/functional/test_rdiffdir.py -> build/lib.linux-aarch64-2.7/testing/functional
creating build/lib.linux-aarch64-2.7/testing/overrides
copying testing/overrides/gettext.py -> build/lib.linux-aarch64-2.7/testing/overrides
copying testing/overrides/__init__.py -> build/lib.linux-aarch64-2.7/testing/overrides
creating build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_dup_temp.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_tempdir.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_selection.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_backend_instance.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_gpg.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_diffdir.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_manifest.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_collections.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_gpginterface.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_file_naming.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_patchdir.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_dup_time.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_backend.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_path.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_tarfile.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_lazy.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/__init__.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_globmatch.py -> build/lib.linux-aarch64-2.7/testing/unit
copying testing/unit/test_statistics.py -> build/lib.linux-aarch64-2.7/testing/unit
running build_ext
building 'duplicity._librsync' extension
creating build/temp.linux-aarch64-2.7
creating build/temp.linux-aarch64-2.7/duplicity
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-InigCj/python2.7-2.7.16=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c duplicity/_librsyncmodule.c -o build/temp.linux-aarch64-2.7/duplicity/_librsyncmodule.o
duplicity/_librsyncmodule.c:27:10: fatal error: librsync.h: Aucun fichier ou dossier de ce type
 #include <librsync.h>
          ^~~~~~~~~~~~
compilation terminated.
error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1