From mboxrd@z Thu Jan 1 00:00:00 1970 From: Adolf Belka <adolf.belka@ipfire.org> To: development@lists.ipfire.org Subject: Re: [PATCH 1/5] fuse: Convert from core to addon Date: Wed, 13 Jan 2021 18:55:39 +0100 Message-ID: <f732de85-2046-c543-c267-a3cd004048d1@ipfire.org> In-Reply-To: <200e7c41-8779-b6e2-78ff-4aad8cb7c2ee@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0891547077574348231==" List-Id: <development.lists.ipfire.org> --===============0891547077574348231== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi Arne, I sent the below reply but it was slow getting delivered and by the time it g= ot to the ipfire server I had changed my list address to the new ipfire.org o= ne so the mail got bounced back to me together with two of the sub patches I = had sent earlier. Regards, Adolf. On 13/01/2021 16:36, Adolf Belka wrote: > Hi Arne, > > My apologies. The question about why it was not an addon came up with Micha= el when I had updated fuse and sshfs. I had searched in git for any reference= s to fuse and only found it in sshfs, borgbackup, samba and openvmtools. > > That was obviously wrong, so this whole patch set can be deleted. > > How can you tell that fuse is needed for ntfs-3g. If I look at the lfs, dep= endencies are not mentioned for core programmes > > Regards, > > Adolf. > > On 13/01/2021 16:23, Arne Fitzenreiter wrote: >> fuse is a dependency of ntfs-3g read and so it is needed in the core syste= m. >> >> Arne >> >> >> Am 2021-01-13 15:59, schrieb Adolf Belka: >>> - Convert the fuse package from core to addon >>> - Modify lfs to include package version number >>> - Create initscript that loads the fuse module when fuse is installed/sta= rted >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 and unloads the module when fu= se is uninstalled/stopped >>> - Create install/uninstall/update scripts for fuse >>> - Move the rootfile from common to packages >>> - Update the rootfile >>> - Split meson/ninja build statements into individual steps >>> >>> Signed-off-by: Adolf Belka <ahb.ipfire(a)gmail.com> >>> --- >>> =C2=A0config/rootfiles/common/fuse=C2=A0=C2=A0 | 38 ------------------ >>> =C2=A0config/rootfiles/packages/fuse | 21 ++++++++++ >>> =C2=A0lfs/fuse=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |= 25 ++++++++++-- >>> =C2=A0src/initscripts/packages/fuse=C2=A0 | 70 ++++++++++++++++++++++++++= ++++++++ >>> =C2=A0src/paks/fuse/install.sh=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 27 += ++++++++++++ >>> =C2=A0src/paks/fuse/uninstall.sh=C2=A0=C2=A0=C2=A0=C2=A0 | 27 +++++++++++= ++ >>> =C2=A0src/paks/fuse/update.sh=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |= 27 +++++++++++++ >>> =C2=A07 files changed, 194 insertions(+), 41 deletions(-) >>> =C2=A0delete mode 100644 config/rootfiles/common/fuse >>> =C2=A0create mode 100644 config/rootfiles/packages/fuse >>> =C2=A0create mode 100644 src/initscripts/packages/fuse >>> =C2=A0create mode 100644 src/paks/fuse/install.sh >>> =C2=A0create mode 100644 src/paks/fuse/uninstall.sh >>> =C2=A0create mode 100644 src/paks/fuse/update.sh >>> >>> diff --git a/config/rootfiles/common/fuse b/config/rootfiles/common/fuse >>> deleted file mode 100644 >>> index bae55b321..000000000 >>> --- a/config/rootfiles/common/fuse >>> +++ /dev/null >>> @@ -1,38 +0,0 @@ >>> -#etc/rc.d/init.d/fuse3 >>> -#lib/udev/rules.d/99-fuse3.rules >>> -etc/udev/rules.d/99-fuse3.rules >>> -sbin/mount.fuse3 >>> -usr/bin/fusermount3 >>> -#usr/local/bin/fusermount3 >>> -#usr/local/etc >>> -#usr/local/etc/fuse.conf >>> -#usr/local/include/fuse3 >>> -#usr/local/include/fuse3/cuse_lowlevel.h >>> -#usr/local/include/fuse3/fuse.h >>> -#usr/local/include/fuse3/fuse_common.h >>> -#usr/local/include/fuse3/fuse_log.h >>> -#usr/local/include/fuse3/fuse_lowlevel.h >>> -#usr/local/include/fuse3/fuse_opt.h >>> -#usr/local/lib/libfuse3.so >>> -#usr/local/lib/libfuse3.so.3 >>> -#usr/local/lib/libfuse3.so.3.10.1 >>> -#usr/local/lib/pkgconfig >>> -#usr/local/lib/pkgconfig/fuse3.pc >>> -#usr/local/sbin/mount.fuse3 >>> -#usr/local/share/man/man1/fusermount3.1 >>> -#usr/local/share/man/man8/mount.fuse3.8 >>> -#etc/fuse.conf >>> -#usr/include/fuse3 >>> -#usr/include/fuse3/cuse_lowlevel.h >>> -#usr/include/fuse3/fuse.h >>> -#usr/include/fuse3/fuse_common.h >>> -#usr/include/fuse3/fuse_log.h >>> -#usr/include/fuse3/fuse_lowlevel.h >>> -#usr/include/fuse3/fuse_opt.h >>> -#usr/lib/libfuse3.so >>> -usr/lib/libfuse3.so.3 >>> -usr/lib/libfuse3.so.3.10.1 >>> -#usr/lib/pkgconfig/fuse3.pc >>> -#usr/sbin/mount.fuse3 >>> -#usr/share/man/man1/fusermount3.1 >>> -#usr/share/man/man8/mount.fuse3.8 >>> diff --git a/config/rootfiles/packages/fuse b/config/rootfiles/packages/f= use >>> new file mode 100644 >>> index 000000000..917520bdf >>> --- /dev/null >>> +++ b/config/rootfiles/packages/fuse >>> @@ -0,0 +1,21 @@ >>> +#etc/fuse.conf >>> +etc/rc.d/init.d/fuse >>> +etc/rc.d/rc0.d/K35fuse >>> +etc/rc.d/rc3.d/S65fuse >>> +etc/rc.d/rc6.d/K35fuse >>> +etc/udev/rules.d/99-fuse3.rules >>> +sbin/mount.fuse3 >>> +usr/bin/fusermount3 >>> +#usr/include/fuse3 >>> +#usr/include/fuse3/cuse_lowlevel.h >>> +#usr/include/fuse3/fuse.h >>> +#usr/include/fuse3/fuse_common.h >>> +#usr/include/fuse3/fuse_log.h >>> +#usr/include/fuse3/fuse_lowlevel.h >>> +#usr/include/fuse3/fuse_opt.h >>> +#usr/lib/libfuse3.so >>> +usr/lib/libfuse3.so.3 >>> +usr/lib/libfuse3.so.3.10.1 >>> +#usr/lib/pkgconfig/fuse3.pc >>> +#usr/share/man/man1/fusermount3.1 >>> +#usr/share/man/man8/mount.fuse3.8 >>> diff --git a/lfs/fuse b/lfs/fuse >>> index 167612f68..c976bb4cd 100644 >>> --- a/lfs/fuse >>> +++ b/lfs/fuse >>> @@ -31,6 +31,10 @@ DL_FILE=C2=A0=C2=A0=C2=A0 =3D $(THISAPP).tar.xz >>> =C2=A0DL_FROM=C2=A0=C2=A0=C2=A0 =3D $(URL_IPFIRE) >>> =C2=A0DIR_APP=C2=A0=C2=A0=C2=A0 =3D $(DIR_SRC)/$(THISAPP) >>> =C2=A0TARGET=C2=A0=C2=A0=C2=A0=C2=A0 =3D $(DIR_INFO)/$(THISAPP) >>> +PROG=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D fuse >>> +PAK_VER=C2=A0=C2=A0=C2=A0 =3D 1 >>> + >>> +DEPS=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =3D >>> >>> >>> #########################################################################= ###### >>> =C2=A0# Top-level Rules >>> @@ -73,13 +77,28 @@ $(subst %,%_MD5,$(objects)) : >>> =C2=A0$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) >>> =C2=A0=C2=A0=C2=A0=C2=A0 @$(PREBUILD) >>> =C2=A0=C2=A0=C2=A0=C2=A0 @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $= (DIR_DL)/$(DL_FILE) >>> -=C2=A0=C2=A0=C2=A0 cd $(DIR_APP) && meson --prefix=3D/usr builddir && cd= builddir && >>> ninja && ninja install >>> +=C2=A0=C2=A0=C2=A0 cd $(DIR_APP) && meson --prefix=3D/usr builddir/ >>> +=C2=A0=C2=A0=C2=A0 cd $(DIR_APP) && ninja -C builddir/ >>> +=C2=A0=C2=A0=C2=A0 cd $(DIR_APP) && ninja -C builddir/ install >>> >>> -=C2=A0=C2=A0=C2=A0 # Move mount.fuse3 to same location as mount.fuse was= in previous version >>> +=C2=A0=C2=A0=C2=A0 # Move mount.fuse3 to same location as mount.fuse was= previously >>> =C2=A0=C2=A0=C2=A0=C2=A0 mv -v /usr/sbin/mount.fuse3 /sbin >>> >>> -=C2=A0=C2=A0=C2=A0 # Move 99-fuse3 rules to same udev location as in pre= vious version of fuse >>> +=C2=A0=C2=A0=C2=A0 # Move 99-fuse3 rules to same udev location as previo= usly >>> =C2=A0=C2=A0=C2=A0=C2=A0 mv -v /lib/udev/rules.d/99-fuse3.rules /etc/udev= /rules.d >>> >>> +=C2=A0=C2=A0=C2=A0 # Remove initscript installed from source code as it = loads the module but >>> +=C2=A0=C2=A0=C2=A0 # also defines and sets up the mount points that will= be used by fuse. >>> +=C2=A0=C2=A0=C2=A0 rm /etc/init.d/fuse3 >>> + >>> +=C2=A0=C2=A0=C2=A0 # Module loading extracted from source code initscrip= t and made into >>> an IPFire initscript >>> +=C2=A0=C2=A0=C2=A0 #install initscripts >>> +=C2=A0=C2=A0=C2=A0 $(call INSTALL_INITSCRIPT,fuse) >>> + >>> +=C2=A0=C2=A0=C2=A0 # create startlinks >>> +=C2=A0=C2=A0=C2=A0 ln -sf ../init.d/fuse /etc/rc.d/rc0.d/K35fuse >>> +=C2=A0=C2=A0=C2=A0 ln -sf ../init.d/fuse /etc/rc.d/rc3.d/S65fuse >>> +=C2=A0=C2=A0=C2=A0 ln -sf ../init.d/fuse /etc/rc.d/rc6.d/K35fuse >>> + >>> =C2=A0=C2=A0=C2=A0=C2=A0 @rm -rf $(DIR_APP) >>> =C2=A0=C2=A0=C2=A0=C2=A0 @$(POSTBUILD) >>> diff --git a/src/initscripts/packages/fuse b/src/initscripts/packages/fuse >>> new file mode 100644 >>> index 000000000..7127e1f87 >>> --- /dev/null >>> +++ b/src/initscripts/packages/fuse >>> @@ -0,0 +1,70 @@ >>> +#!/bin/sh >>> +######################################################################## >>> +# Begin $rc_base/init.d/fuse >>> +# >>> +# Description : Load and unload the fuse3 module >>> +# >>> +# Authors=C2=A0=C2=A0=C2=A0=C2=A0 : Adolf Belka >>> +# >>> +# Version=C2=A0=C2=A0=C2=A0=C2=A0 : 01.00 >>> +# >>> +# Notes=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 : >>> +# >>> +######################################################################## >>> + >>> +. /etc/sysconfig/rc >>> +. ${rc_functions} >>> + >>> +case "${1}" in >>> +=C2=A0=C2=A0=C2=A0 start) >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 boot_mesg "Loading fuse modul= e." >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ! grep -qw fuse /proc/file= systems; then >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo = -n "Loading fuse module" >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ! = modprobe fuse >/dev/null 2>&1; then >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 echo " failed!" >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 exit 1 >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo = "." >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 fi >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo = "fuse filesystem already available." >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 fi >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ;; >>> + >>> +=C2=A0=C2=A0=C2=A0 stop) >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 boot_mesg "Unloading fuse mod= ule." >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if grep -qw "^fuse" /proc/mod= ules; then >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo = -n "Unloading fuse module" >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ! = rmmod fuse >/dev/null 2>&1; then >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 echo " failed!" >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 echo "." >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 fi >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo = "fuse module not loaded." >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 fi >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ;; >>> + >>> +=C2=A0=C2=A0=C2=A0 restart) >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ${0} stop >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sleep 1 >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ${0} start >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ;; >>> + >>> +=C2=A0=C2=A0=C2=A0 status) >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo -n "Checking if fuse mod= ule loaded." >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ! grep -qw fuse /proc/file= systems; then >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo = " fuse module not loaded." >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exit 3 >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo = " ok." >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 fi >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ;; >>> + >>> +=C2=A0=C2=A0=C2=A0 *) >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo "Usage: ${0} {start|stop= |restart|status}" >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exit 1 >>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ;; >>> +esac >>> + >>> +# End $rc_base/init.d/fuse >>> diff --git a/src/paks/fuse/install.sh b/src/paks/fuse/install.sh >>> new file mode 100644 >>> index 000000000..e6a5af92b >>> --- /dev/null >>> +++ b/src/paks/fuse/install.sh >>> @@ -0,0 +1,27 @@ >>> +#!/bin/bash >>> +########################################################################= #### >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# This file is part of the IPFire Firewall. =C2=A0=C2=A0=C2=A0 # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# IPFire is free software; you can redistribute it and/or modify =C2=A0= =C2=A0=C2=A0 # >>> +# it under the terms of the GNU General Public License as published by = =C2=A0=C2=A0=C2=A0 # >>> +# the Free Software Foundation; either version 2 of the License, or =C2= =A0=C2=A0=C2=A0 # >>> +# (at your option) any later version. =C2=A0=C2=A0=C2=A0 # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# IPFire is distributed in the hope that it will be useful, =C2=A0=C2=A0= =C2=A0 # >>> +# but WITHOUT ANY WARRANTY; without even the implied warranty of =C2=A0= =C2=A0=C2=A0 # >>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.=C2=A0 See the =C2= =A0=C2=A0=C2=A0 # >>> +# GNU General Public License for more details. =C2=A0=C2=A0=C2=A0 # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# You should have received a copy of the GNU General Public License =C2= =A0=C2=A0=C2=A0 # >>> +# along with IPFire; if not, write to the Free Software =C2=A0=C2=A0=C2= =A0 # >>> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US= A # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# Copyright (C) 2007 IPFire-Team <info(a)ipfire.org>. # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +########################################################################= #### >>> +# >>> +. /opt/pakfire/lib/functions.sh >>> +extract_files >>> + >>> +start_service --background ${NAME} >>> diff --git a/src/paks/fuse/uninstall.sh b/src/paks/fuse/uninstall.sh >>> new file mode 100644 >>> index 000000000..dc37ea5b1 >>> --- /dev/null >>> +++ b/src/paks/fuse/uninstall.sh >>> @@ -0,0 +1,27 @@ >>> +#!/bin/bash >>> +########################################################################= #### >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# This file is part of the IPFire Firewall. =C2=A0=C2=A0=C2=A0 # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# IPFire is free software; you can redistribute it and/or modify =C2=A0= =C2=A0=C2=A0 # >>> +# it under the terms of the GNU General Public License as published by = =C2=A0=C2=A0=C2=A0 # >>> +# the Free Software Foundation; either version 2 of the License, or =C2= =A0=C2=A0=C2=A0 # >>> +# (at your option) any later version. =C2=A0=C2=A0=C2=A0 # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# IPFire is distributed in the hope that it will be useful, =C2=A0=C2=A0= =C2=A0 # >>> +# but WITHOUT ANY WARRANTY; without even the implied warranty of =C2=A0= =C2=A0=C2=A0 # >>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.=C2=A0 See the =C2= =A0=C2=A0=C2=A0 # >>> +# GNU General Public License for more details. =C2=A0=C2=A0=C2=A0 # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# You should have received a copy of the GNU General Public License =C2= =A0=C2=A0=C2=A0 # >>> +# along with IPFire; if not, write to the Free Software =C2=A0=C2=A0=C2= =A0 # >>> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US= A # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# Copyright (C) 2007 IPFire-Team <info(a)ipfire.org>. # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +########################################################################= #### >>> +# >>> +. /opt/pakfire/lib/functions.sh >>> +stop_service ${NAME} >>> + >>> +remove_files >>> diff --git a/src/paks/fuse/update.sh b/src/paks/fuse/update.sh >>> new file mode 100644 >>> index 000000000..99776659c >>> --- /dev/null >>> +++ b/src/paks/fuse/update.sh >>> @@ -0,0 +1,27 @@ >>> +#!/bin/bash >>> +########################################################################= #### >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# This file is part of the IPFire Firewall. =C2=A0=C2=A0=C2=A0 # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# IPFire is free software; you can redistribute it and/or modify =C2=A0= =C2=A0=C2=A0 # >>> +# it under the terms of the GNU General Public License as published by = =C2=A0=C2=A0=C2=A0 # >>> +# the Free Software Foundation; either version 2 of the License, or =C2= =A0=C2=A0=C2=A0 # >>> +# (at your option) any later version. =C2=A0=C2=A0=C2=A0 # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# IPFire is distributed in the hope that it will be useful, =C2=A0=C2=A0= =C2=A0 # >>> +# but WITHOUT ANY WARRANTY; without even the implied warranty of =C2=A0= =C2=A0=C2=A0 # >>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.=C2=A0 See the =C2= =A0=C2=A0=C2=A0 # >>> +# GNU General Public License for more details. =C2=A0=C2=A0=C2=A0 # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# You should have received a copy of the GNU General Public License =C2= =A0=C2=A0=C2=A0 # >>> +# along with IPFire; if not, write to the Free Software =C2=A0=C2=A0=C2= =A0 # >>> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US= A # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +# Copyright (C) 2007-2020 IPFire-Team <info(a)ipfire.org>. =C2=A0=C2=A0= =C2=A0 # >>> +# =C2=A0=C2=A0=C2=A0 # >>> +########################################################################= #### >>> +# >>> +. /opt/pakfire/lib/functions.sh >>> +extract_backup_includes >>> +./uninstall.sh >>> +./install.sh --===============0891547077574348231==--