diff --git a/data/helpers.d/apt b/data/helpers.d/apt
index dcea0c976..c6621d814 100644
--- a/data/helpers.d/apt
+++ b/data/helpers.d/apt
@@ -10,6 +10,7 @@
# Requires YunoHost version 3.3.1 or higher.
ynh_wait_dpkg_free() {
local try
+ set +o xtrace # set +x
# With seq 1 17, timeout will be almost 30 minutes
for try in `seq 1 17`
do
@@ -32,13 +33,16 @@ ynh_wait_dpkg_free() {
then
# If so, that a remaining of dpkg.
ynh_print_err "E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem."
+ set -o xtrace # set -x
return 1
fi
done 9<<< "$(ls -1 $dpkg_dir)"
+ set -o xtrace # set -x
return 0
fi
done
echo "apt still used, but timeout reached !"
+ set -o xtrace # set -x
}
# Check either a package is installed or not
@@ -189,17 +193,37 @@ ynh_package_install_from_equivs () {
LC_ALL=C equivs-build ./control 1> /dev/null
dpkg --force-depends --install "./${pkgname}_${pkgversion}_all.deb" 2>&1)
- ynh_package_install --fix-broken || \
+ # Let's try to see if install will work using dry-run. It it fails,
+ # it could be because the pinning of sury is blocking some package install
+ # c.f. for example: https://github.com/YunoHost/issues/issues/1563#issuecomment-623406509
+ # ... In that case, we use an ugly hack were we'll use a tweaked
+ # preferences.d directory with looser contrains for sury...
+ if ! ynh_package_install --fix-broken --dry-run >/dev/null 2>&1 && [ -e /etc/apt/preferences.d/extra_php_version ]
+ then
+ cp -r /etc/apt/preferences.d/ /etc/apt/preferences.d.tmp/
+ sed 's/^Pin-Priority: .*/Pin-Priority: 600/g' -i /etc/apt/preferences.d.tmp/extra_php_version
+ local apt_tweaks='--option Dir::Etc::preferencesparts=preferences.d.tmp'
+ # Try a dry-run again to see if that fixes the issue ...
+ # If it did not, then that's probably not related to sury.
+ ynh_package_install $apt_tweaks --fix-broken --dry-run >/dev/null 2>&1 || apt_tweaks=""
+ else
+ local apt_tweaks=""
+ fi
+
+ # Try to install for real
+ ynh_package_install $apt_tweaks --fix-broken || \
{ # If the installation failed
# (the following is ran inside { } to not start a subshell otherwise ynh_die wouldnt exit the original process)
+ rm --recursive --force /etc/apt/preferences.d.tmp/
# Get the list of dependencies from the deb
local dependencies="$(dpkg --info "$TMPDIR/${pkgname}_${pkgversion}_all.deb" | grep Depends | \
sed 's/^ Depends: //' | sed 's/,//g')"
# Fake an install of those dependencies to see the errors
# The sed command here is, Print only from '--fix-broken' to the end.
- ynh_package_install $dependencies --dry-run | sed --quiet '/--fix-broken/,$p' >&2
+ ynh_package_install $apt_tweaks $dependencies --dry-run | sed --quiet '/--fix-broken/,$p' >&2
ynh_die --message="Unable to install dependencies"; }
[[ -n "$TMPDIR" ]] && rm --recursive --force $TMPDIR # Remove the temp dir.
+ rm --recursive --force /etc/apt/preferences.d.tmp/
# check if the package is actually installed
ynh_package_is_installed "$pkgname"
@@ -329,8 +353,6 @@ ynh_remove_app_dependencies () {
ynh_package_autopurge ${dep_app}-ynh-deps # Remove the fake package and its dependencies if they not still used.
}
-#=================================================
-
# Install packages from an extra repository properly.
#
# usage: ynh_install_extra_app_dependencies --repo="repo" --package="dep1 dep2" [--key=key_url] [--name=name]
diff --git a/data/helpers.d/fail2ban b/data/helpers.d/fail2ban
index d8777a16d..f9bdd89b2 100644
--- a/data/helpers.d/fail2ban
+++ b/data/helpers.d/fail2ban
@@ -134,7 +134,7 @@ EOF
ynh_systemd_action --service_name=fail2ban --action=reload --line_match="(Started|Reloaded) Fail2Ban Service" --log_path=systemd
- local fail2ban_error="$(journalctl --unit=fail2ban | tail --lines=50 | grep "WARNING.*$app.*")"
+ local fail2ban_error="$(journalctl --no-hostname --unit=fail2ban | tail --lines=50 | grep "WARNING.*$app.*")"
if [[ -n "$fail2ban_error" ]]
then
ynh_print_err --message="Fail2ban failed to load the jail for $app"
diff --git a/data/helpers.d/logging b/data/helpers.d/logging
index d5f4f5eec..45b5b7e67 100644
--- a/data/helpers.d/logging
+++ b/data/helpers.d/logging
@@ -80,7 +80,7 @@ ynh_print_warn () {
# Manage arguments with getopts
ynh_handle_getopts_args "$@"
- ynh_print_log "\e[93m\e[1m[WARN]\e[0m ${message}" >&2
+ ynh_print_log "${message}" >&2
}
# Print an error on stderr
@@ -97,7 +97,7 @@ ynh_print_err () {
# Manage arguments with getopts
ynh_handle_getopts_args "$@"
- ynh_print_log "\e[91m\e[1m[ERR]\e[0m ${message}" >&2
+ ynh_print_log "[Error] ${message}" >&2
}
# Execute a command and print the result as an error
@@ -332,7 +332,7 @@ ynh_debug () {
if [ -n "$message" ]
then
- ynh_print_log "\e[34m\e[1m[DEBUG]\e[0m ${message}" >&2
+ ynh_print_log "[Debug] ${message}" >&2
fi
if [ "$trace" == "1" ]
diff --git a/data/helpers.d/php b/data/helpers.d/php
index e8de6d9ff..9b9df64f9 100644
--- a/data/helpers.d/php
+++ b/data/helpers.d/php
@@ -297,7 +297,10 @@ ynh_remove_fpm_config () {
fi
ynh_secure_remove --file="$fpm_config_dir/pool.d/$app.conf"
- ynh_exec_warn_less ynh_secure_remove --file="$fpm_config_dir/conf.d/20-$app.ini"
+ if [ -e $fpm_config_dir/conf.d/20-$app.ini ]
+ then
+ ynh_secure_remove --file="$fpm_config_dir/conf.d/20-$app.ini"
+ fi
# If the php version used is not the default version for YunoHost
if [ "$phpversion" != "$YNH_DEFAULT_PHP_VERSION" ]
diff --git a/data/helpers.d/postgresql b/data/helpers.d/postgresql
index e2bef8746..0b027c78f 100644
--- a/data/helpers.d/postgresql
+++ b/data/helpers.d/postgresql
@@ -1,6 +1,7 @@
#!/bin/bash
PSQL_ROOT_PWD_FILE=/etc/yunohost/psql
+PSQL_VERSION=9.6
# Open a connection as a user
#
@@ -228,12 +229,14 @@ ynh_psql_setup_db() {
# Manage arguments with getopts
ynh_handle_getopts_args "$@"
- local new_db_pwd=$(ynh_string_random) # Generate a random password
- # If $db_pwd is not given, use new_db_pwd instead for db_pwd
- db_pwd="${db_pwd:-$new_db_pwd}"
-
if ! ynh_psql_user_exists --user=$db_user; then
+ local new_db_pwd=$(ynh_string_random) # Generate a random password
+ # If $db_pwd is not given, use new_db_pwd instead for db_pwd
+ db_pwd="${db_pwd:-$new_db_pwd}"
+
ynh_psql_create_user "$db_user" "$db_pwd"
+ elif [ -z $db_pwd ]; then
+ ynh_die --message="The user $db_user exists, please provide his password"
fi
ynh_psql_create_db "$db_name" "$db_user" # Create the database
@@ -273,6 +276,7 @@ ynh_psql_remove_db() {
}
# Create a master password and set up global settings
+# It also make sure that postgresql is installed and running
# Please always call this script in install and restore scripts
#
# usage: ynh_psql_test_if_first_run
@@ -280,45 +284,38 @@ ynh_psql_remove_db() {
# Requires YunoHost version 2.7.13 or higher.
ynh_psql_test_if_first_run() {
- if [ -f "$PSQL_ROOT_PWD_FILE" ]
+ # Make sure postgresql is indeed installed
+ dpkg --list | grep -q "ii postgresql-$PSQL_VERSION" || ynh_die "postgresql-$PSQL_VERSION is not installed !?"
+
+ # Check for some weird issue where postgresql could be installed but etc folder would not exist ...
+ [ -e "/etc/postgresql/$PSQL_VERSION" ] || ynh_die "It looks like postgresql was not properly configured ? /etc/postgresql/$PSQL_VERSION is missing ... Could be due to a locale issue, c.f.https://serverfault.com/questions/426989/postgresql-etc-postgresql-doesnt-exist"
+
+ # Make sure postgresql is started and enabled
+ # (N.B. : to check the active state, we check the cluster state because
+ # postgresql could be flagged as active even though the cluster is in
+ # failed state because of how the service is configured..)
+ systemctl is-active postgresql@$PSQL_VERSION-main -q || ynh_systemd_action --service_name=postgresql --action=restart
+ systemctl is-enabled postgresql -q || systemctl enable postgresql
+
+ # If this is the very first time, we define the root password
+ # and configure a few things
+ if [ ! -f "$PSQL_ROOT_PWD_FILE" ]
then
- ynh_print_info --message="PostgreSQL is already installed, no need to create master password"
- return
+ local pg_hba=/etc/postgresql/$PSQL_VERSION/main/pg_hba.conf
+
+ local psql_root_password="$(ynh_string_random)"
+ echo "$psql_root_password" >$PSQL_ROOT_PWD_FILE
+ sudo --login --user=postgres psql -c"ALTER user postgres WITH PASSWORD '$psql_root_password'" postgres
+
+ # force all user to connect to local databases using hashed passwords
+ # https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html#EXAMPLE-PG-HBA.CONF
+ # Note: we can't use peer since YunoHost create users with nologin
+ # See: https://github.com/YunoHost/yunohost/blob/unstable/data/helpers.d/user
+ ynh_replace_string --match_string="local\(\s*\)all\(\s*\)all\(\s*\)peer" --replace_string="local\1all\2all\3md5" --target_file="$pg_hba"
+
+ # Integrate postgresql service in yunohost
+ yunohost service add postgresql --log "/var/log/postgresql/"
+
+ ynh_systemd_action --service_name=postgresql --action=reload
fi
-
- local psql_root_password="$(ynh_string_random)"
- echo "$psql_root_password" >$PSQL_ROOT_PWD_FILE
-
- if [ -e /etc/postgresql/9.4/ ]
- then
- local pg_hba=/etc/postgresql/9.4/main/pg_hba.conf
- local logfile=/var/log/postgresql/postgresql-9.4-main.log
- elif [ -e /etc/postgresql/9.6/ ]
- then
- local pg_hba=/etc/postgresql/9.6/main/pg_hba.conf
- local logfile=/var/log/postgresql/postgresql-9.6-main.log
- else
- if dpkg --list | grep -q "ii postgresql-9."
- then
- ynh_die "It looks like postgresql was not properly configured ? /etc/postgresql/9.* is missing ... Could be due to a locale issue, c.f.https://serverfault.com/questions/426989/postgresql-etc-postgresql-doesnt-exist"
- else
- ynh_die "postgresql shoud be 9.4 or 9.6"
- fi
- fi
-
- ynh_systemd_action --service_name=postgresql --action=start
-
- sudo --login --user=postgres psql -c"ALTER user postgres WITH PASSWORD '$psql_root_password'" postgres
-
- # force all user to connect to local databases using hashed passwords
- # https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html#EXAMPLE-PG-HBA.CONF
- # Note: we can't use peer since YunoHost create users with nologin
- # See: https://github.com/YunoHost/yunohost/blob/unstable/data/helpers.d/user
- ynh_replace_string --match_string="local\(\s*\)all\(\s*\)all\(\s*\)peer" --replace_string="local\1all\2all\3md5" --target_file="$pg_hba"
-
- # Advertise service in admin panel
- yunohost service add postgresql --log "$logfile"
-
- systemctl enable postgresql
- ynh_systemd_action --service_name=postgresql --action=reload
}
diff --git a/data/helpers.d/systemd b/data/helpers.d/systemd
index 613f023fa..236781f8b 100644
--- a/data/helpers.d/systemd
+++ b/data/helpers.d/systemd
@@ -145,7 +145,7 @@ ynh_systemd_action() {
if ! systemctl $action $service_name
then
# Show syslog for this service
- ynh_exec_err journalctl --no-pager --lines=$length --unit=$service_name
+ ynh_exec_err journalctl --quiet --no-hostname --no-pager --lines=$length --unit=$service_name
# If a log is specified for this service, show also the content of this log
if [ -e "$log_path" ]
then
@@ -183,7 +183,7 @@ ynh_systemd_action() {
then
ynh_print_warn --message="The service $service_name didn't fully executed the action ${action} before the timeout."
ynh_print_warn --message="Please find here an extract of the end of the log of the service $service_name:"
- ynh_exec_warn journalctl --no-pager --lines=$length --unit=$service_name
+ ynh_exec_warn journalctl --quiet --no-hostname --no-pager --lines=$length --unit=$service_name
if [ -e "$log_path" ]
then
ynh_print_warn --message="\-\-\-"
diff --git a/data/hooks/diagnosis/10-ip.py b/data/hooks/diagnosis/10-ip.py
index fe4993935..b18b4f435 100644
--- a/data/hooks/diagnosis/10-ip.py
+++ b/data/hooks/diagnosis/10-ip.py
@@ -108,7 +108,7 @@ class IPDiagnoser(Diagnoser):
return False
# If we are indeed connected in ipv4 or ipv6, we should find a default route
- routes = check_output("ip -%s route" % protocol).split("\n")
+ routes = check_output("ip -%s route show table all" % protocol).split("\n")
def is_default_route(r):
# Typically the default route starts with "default"
diff --git a/data/hooks/diagnosis/14-ports.py b/data/hooks/diagnosis/14-ports.py
index bd68c60d6..38f6e0089 100644
--- a/data/hooks/diagnosis/14-ports.py
+++ b/data/hooks/diagnosis/14-ports.py
@@ -87,7 +87,7 @@ class PortsDiagnoser(Diagnoser):
# If any AAAA record is set, IPv6 is important...
def ipv6_is_important():
dnsrecords = Diagnoser.get_cached_report("dnsrecords") or {}
- return any(record["data"]["AAAA:@"] in ["OK", "WRONG"] for record in dnsrecords.get("items", []))
+ return any(record["data"].get("AAAA:@") in ["OK", "WRONG"] for record in dnsrecords.get("items", []))
if failed == 4 or ipv6_is_important():
yield dict(meta={"port": port},
diff --git a/debian/changelog b/debian/changelog
index 139d390a5..83ae9c3d4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,30 @@
+yunohost (3.8.4.3) stable; urgency=low
+
+ - [fix] Workaround for the sury pinning issues when installing dependencies
+ - [i18n] Translations updated for Catalan, French, Occitan
+
+ Thanks to all contributors <3 ! (Aleks, clecle226, Kay0u, ppr, Quenti)
+
+ -- Kay0u Doc auto-generated by this script on {{data.date}} (Yunohost version {{data.version}})App helpers
+{{ category }}
@@ -70,7 +72,7 @@
- Dude, show me the code ! + Dude, show me the code !
@@ -81,9 +83,6 @@ {% endfor %} {% endfor %} -Generated by this script on {{data.date}} (Yunohost version {{data.version}})
- -