summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2010-12-25 12:20:03 -0500
committerScott Ullrich <sullrich@pfsense.org>2010-12-25 12:20:28 -0500
commite9c7a334fd746b04b05ee25f4890cf77c136ccfe (patch)
tree4b0d69a4febddb5cfbfe5969260eda9cef161438 /etc
parent1916d34a1bba91760b1e80b41ad166bbebe99466 (diff)
downloadpfsense-e9c7a334fd746b04b05ee25f4890cf77c136ccfe.zip
pfsense-e9c7a334fd746b04b05ee25f4890cf77c136ccfe.tar.gz
Backup system libraries and restore during pkg deinstall.
Diffstat (limited to 'etc')
-rw-r--r--etc/inc/pkg-utils.inc12
1 files changed, 12 insertions, 0 deletions
diff --git a/etc/inc/pkg-utils.inc b/etc/inc/pkg-utils.inc
index 487b1bb..8b9d6a6 100644
--- a/etc/inc/pkg-utils.inc
+++ b/etc/inc/pkg-utils.inc
@@ -828,6 +828,11 @@ function delete_package_xml($pkg) {
conf_mount_rw();
+ // Back up /usr/local/lib libraries first
+ $static_output .= "Backing up libraries... ";
+ update_output_window($static_output);
+ exec("/usr/bin/tar czPf /tmp/pkg_libs.tgz `/bin/cat /etc/pfSense_md5.txt | /usr/bin/grep 'local/lib' | /usr/bin/awk '{ print $2 }' | /usr/bin/cut -d'(' -f2 | /usr/bin/cut -d')' -f1`");
+
$pkgid = get_pkg_id($pkg);
if ($pkgid == -1) {
$static_output .= "The {$pkg} package is not installed.\n\nDeletion aborted.";
@@ -1001,6 +1006,13 @@ function delete_package_xml($pkg) {
$static_output .= "done.\n";
update_output_window($static_output);
}
+
+ // Restore libraries that we backed up
+ $static_output .= "\tCleaning up... ";
+ update_output_window($static_output);
+ exec("/usr/bin/tar xzPf /tmp/pkg_libs.tgz -C /");
+ @unlink("/tmp/pkg_libs.tgz");
+
conf_mount_ro();
/* remove config.xml entries */
$static_output .= "\tConfiguration... ";
OpenPOWER on IntegriCloud