summaryrefslogtreecommitdiffstats
path: root/src/usr/local/share/pfSense
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2016-04-29 16:00:35 -0300
committerRenato Botelho <renato@netgate.com>2016-04-29 16:02:25 -0300
commitc0cb3c7358ed07acf1497cdfdfe79016322db6be (patch)
treee303891b602f30a041de388113eb30f05179d58c /src/usr/local/share/pfSense
parent3610a08e13e51fb825e9b5e39a304ea7ca102a2c (diff)
downloadpfsense-c0cb3c7358ed07acf1497cdfdfe79016322db6be.zip
pfsense-c0cb3c7358ed07acf1497cdfdfe79016322db6be.tar.gz
Fix #6137:
- Uninstall all packages on current system before upgrade using pre_upgrade_command script - Create a file containing all packages previously installed and reinstall them on first boot after upgrade
Diffstat (limited to 'src/usr/local/share/pfSense')
-rw-r--r--src/usr/local/share/pfSense/pre_upgrade_command45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/usr/local/share/pfSense/pre_upgrade_command b/src/usr/local/share/pfSense/pre_upgrade_command
index 8c141a4..bf6ddd6 100644
--- a/src/usr/local/share/pfSense/pre_upgrade_command
+++ b/src/usr/local/share/pfSense/pre_upgrade_command
@@ -12,6 +12,51 @@ echo $PRIOR_VERSION > /tmp/pre_upgrade_version
# De-activate sync on the root slice only. This will not match NanoBSD since it already has sync,noatime
/usr/bin/sed -i '' 's/^\(\/.*[[:space:]]*\/[[:space:]]*ufs[[:space:]]*\)rw,sync\([[:space:]]*[[:digit:]][[:space:]]*[[:digit:]]\)$/\1rw\2/' /etc/fstab
+# Uninstall all packages before upgrade to 2.3
+PFSENSE_VERSION=$(cat /etc/version)
+
+if echo "$PFSENSE_VERSION" | grep -q '^1.2'; then
+ UNINSTALL="uninstall_package_from_name"
+else
+ UNINSTALL="uninstall_package"
+fi
+
+cat >/tmp/remove_all_packages.php <<EOD
+#!/usr/local/bin/php
+<?php
+
+require_once("pkg-utils.inc");
+
+global \$pkg_interface;
+\$pkg_interface = "console";
+
+if (!isset(\$config['installedpackages']['package'])) {
+ exit(0);
+}
+
+if (!is_array(\$config['installedpackages']['package'])) {
+ exit(0);
+}
+
+\$removed_packages = array();
+foreach (\$config['installedpackages']['package'] as \$package) {
+ if (isset(\$package['internal_name'])) {
+ \$removed_packages[] = \$package['internal_name'];
+ } else {
+ \$removed_packages[] = \$package['name'];
+ }
+ //${UNINSTALL}(\$package['name']);
+}
+
+@file_put_contents("{\$g['cf_conf_path']}/packages_to_reinstall_after_upgrade.txt", implode("\\n",\$removed_packages));
+
+?>
+EOD
+
+/usr/local/bin/php /tmp/remove_all_packages.php
+exit
+rm -f /tmp/remove_all_packages.php
+
# Cleanup PBIs
if which pbi_info >/dev/null 2>&1; then
for pbi in $(pbi_info); do
OpenPOWER on IntegriCloud