From cb57a3ecd501823f03d05e627f71964cc16303f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9rard=20Collin?= Date: Fri, 21 Jun 2024 18:44:58 +0200 Subject: [PATCH 1/3] Support for Bookworm & avoid reinstall --- helpers/helpers.v1.d/mongodb | 41 +++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/helpers/helpers.v1.d/mongodb b/helpers/helpers.v1.d/mongodb index d40d11bfe..d226443a4 100644 --- a/helpers/helpers.v1.d/mongodb +++ b/helpers/helpers.v1.d/mongodb @@ -293,6 +293,7 @@ ynh_mongo_remove_db() { } # Install MongoDB and integrate MongoDB service in YunoHost +# It can upgrade / downgrade the desired mongo version to ensure a compatible one is installed # # usage: ynh_install_mongo [--mongo_version=mongo_version] # | arg: -m, --mongo_version= - Version of MongoDB to install @@ -311,15 +312,39 @@ ynh_install_mongo() { local mongo_debian_release=$(ynh_get_debian_release) if [[ $(cat /proc/cpuinfo) != *"avx"* && "$mongo_version" != "4.4" ]]; then - ynh_print_warn --message="Installing Mongo 4.4 as $mongo_version is not compatible with your cpu (see https://docs.mongodb.com/manual/administration/production-notes/#x86_64)." - mongo_version="4.4" - fi - if [[ "$mongo_version" == "4.4" ]]; then - ynh_print_warn --message="Switched to buster install as Mongo 4.4 is not compatible with $mongo_debian_release." - mongo_debian_release=buster - fi + ynh_print_warn --message="Installing Mongo 4.4 as $mongo_version is not compatible with your cpu (see https://docs.mongodb.com/manual/administration/production-notes/#x86_64)." + mongo_version="4.4" + fi + if [[ "$mongo_version" == "4.4" ]]; then + ynh_print_warn --message="Switched to buster install as Mongo 4.4 is not compatible with $mongo_debian_release." + mongo_debian_release=buster + fi - ynh_install_extra_app_dependencies --repo="deb http://repo.mongodb.org/apt/debian $mongo_debian_release/mongodb-org/$mongo_version main" --package="mongodb-org mongodb-org-server mongodb-org-tools mongodb-mongosh" --key="https://www.mongodb.org/static/pgp/server-$mongo_version.asc" + if [[ "$mongo_debian_release" == "bookworm" && "$mongo_version" != "7."* ]]; then + ynh_print_warn --message="Switched to Mongo v7 as $mongo_version is not compatible with $mongo_debian_release" + mongo_version = "7.0" + fi + + # Check if MongoDB is already installed + local install_package=true + local current_version=$(ynh_package_version --package="mongodb-org-server") + current_version=$(cut -c 1-3 <<< "$current_version") + + if [[ "a$current_version" != "a" ]]; then + if (( $(bc <<< "$current_version < $mongo_version") )); then + ynh_print_info --message="Upgrading Mongo from version $current_version to $mongo_version" + else + if (( $(bc <<< "$current_version >= $mongo_version") )); then + ynh_print_info --message="Mongo version $current_version is already installed and will be kept instead of requested version $mongo_version" + install_package=false + fi + fi + fi + + if [[ "$install_package" = true ]]; then + ynh_install_extra_app_dependencies --repo="deb http://repo.mongodb.org/apt/debian $mongo_debian_release/mongodb-org/$mongo_version main" --package="mongodb-org mongodb-org-server mongodb-org-tools mongodb-mongosh" --key="https://www.mongodb.org/static/pgp/server-$mongo_version.asc" + fi + mongodb_servicename=mongod # Make sure MongoDB is started and enabled From 114efd30f6654c918f6d4663c76ed1fd870f4a9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9rard=20Collin?= Date: Sat, 22 Jun 2024 15:06:32 +0200 Subject: [PATCH 2/3] print error message when upgrading more than 1 version --- helpers/helpers.v1.d/mongodb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/helpers/helpers.v1.d/mongodb b/helpers/helpers.v1.d/mongodb index d226443a4..393e835bc 100644 --- a/helpers/helpers.v1.d/mongodb +++ b/helpers/helpers.v1.d/mongodb @@ -328,14 +328,21 @@ ynh_install_mongo() { # Check if MongoDB is already installed local install_package=true local current_version=$(ynh_package_version --package="mongodb-org-server") + # Focus only the major, minor versions current_version=$(cut -c 1-3 <<< "$current_version") if [[ "a$current_version" != "a" ]]; then if (( $(bc <<< "$current_version < $mongo_version") )); then - ynh_print_info --message="Upgrading Mongo from version $current_version to $mongo_version" + if (( $(bc <<< "scale = 0 ; x = $mongo_version / 1 - $current_version / 1; x > 1.0" ))); then + # Mongo only support upgrading a major version to another + ynh_print_err --message="Upgrading Mongo from version $current_version to $mongo_version is not supported" + install_package=false + else + ynh_print_info --message="Upgrading Mongo from version $current_version to $mongo_version" + fi else if (( $(bc <<< "$current_version >= $mongo_version") )); then - ynh_print_info --message="Mongo version $current_version is already installed and will be kept instead of requested version $mongo_version" + ynh_print_warn --message="Mongo version $current_version is already installed and will be kept instead of requested version $mongo_version" install_package=false fi fi From 7ac436762f8d12650c24f644b70920ae668e24d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9rard=20Collin?= Date: Mon, 24 Jun 2024 11:49:10 +0200 Subject: [PATCH 3/3] Bookworm support for helpers v2.1 as well --- helpers/helpers.v2.1.d/mongodb | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/helpers/helpers.v2.1.d/mongodb b/helpers/helpers.v2.1.d/mongodb index 370b88d92..16d91e920 100644 --- a/helpers/helpers.v2.1.d/mongodb +++ b/helpers/helpers.v2.1.d/mongodb @@ -214,6 +214,7 @@ ynh_mongo_remove_db() { } # Install MongoDB and integrate MongoDB service in YunoHost +# It can upgrade / downgrade the desired mongo version to ensure a compatible one is installed # # The installed version is defined by $mongo_version which should be defined as global prior to calling this helper # @@ -235,7 +236,37 @@ ynh_install_mongo() { mongo_debian_release=buster fi - ynh_install_extra_app_dependencies --repo="deb http://repo.mongodb.org/apt/debian $mongo_debian_release/mongodb-org/$mongo_version main" --package="mongodb-org mongodb-org-server mongodb-org-tools mongodb-mongosh" --key="https://www.mongodb.org/static/pgp/server-$mongo_version.asc" + if [[ "$mongo_debian_release" == "bookworm" && "$mongo_version" != "7."* ]]; then + ynh_print_warn --message="Switched to Mongo v7 as $mongo_version is not compatible with $mongo_debian_release" + mongo_version = "7.0" + fi + + # Check if MongoDB is already installed + local install_package=true + local current_version=$(ynh_package_version --package="mongodb-org-server") + # Focus only the major, minor versions + current_version=$(cut -c 1-3 <<< "$current_version") + + if [[ "a$current_version" != "a" ]]; then + if (( $(bc <<< "$current_version < $mongo_version") )); then + if (( $(bc <<< "scale = 0 ; x = $mongo_version / 1 - $current_version / 1; x > 1.0" ))); then + # Mongo only support upgrading a major version to another + ynh_print_err --message="Upgrading Mongo from version $current_version to $mongo_version is not supported" + install_package=false + else + ynh_print_info --message="Upgrading Mongo from version $current_version to $mongo_version" + fi + else + if (( $(bc <<< "$current_version >= $mongo_version") )); then + ynh_print_warn --message="Mongo version $current_version is already installed and will be kept instead of requested version $mongo_version" + install_package=false + fi + fi + fi + + if [[ "$install_package" = true ]]; then + ynh_install_extra_app_dependencies --repo="deb http://repo.mongodb.org/apt/debian $mongo_debian_release/mongodb-org/$mongo_version main" --package="mongodb-org mongodb-org-server mongodb-org-tools mongodb-mongosh" --key="https://www.mongodb.org/static/pgp/server-$mongo_version.asc" + fi mongodb_servicename=mongod # Make sure MongoDB is started and enabled