Core Update 166: Perform spring clean of orphaned files

Message ID 882973ed-3c11-5462-f01f-8945f705ab42@ipfire.org
State Accepted
Commit fa0a7c038c9191c35b85b1cc78ee60eb81548a79
Headers
Series Core Update 166: Perform spring clean of orphaned files |

Commit Message

Peter Müller March 21, 2022, 3:35 p.m. UTC
  On an IPFire installation that has been around since Core Update 110
(released April 28, 2017), these files have been identified as being
orphaned, comparing to a fresh installation of Core Update 164.

To avoid such a list of files agglomerating, persons responsible for a
Core Update should check whether an updated package contains deleted
files in its rootfile. If so, they should be deleted on existing systems
via update.sh as well.

Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
---
 config/rootfiles/core/166/update.sh | 260 +++++++++++++++++++++++++++-
 1 file changed, 258 insertions(+), 2 deletions(-)
  

Comments

Peter Müller March 21, 2022, 3:49 p.m. UTC | #1
Hello *,

for the records: On the IPFire installation in question, this would save some
117 MBytes in total:

24K	/bin/setserial
4.0K	/etc/dracut.conf
0	/etc/fonts/conf.d/30-urw-aliases.conf
4.0K	/etc/grub.d/README
4.0K	/etc/rc.d/init.d/networking/red.up/99-geoip-database
4.0K	/etc/udev/rules.d/99-fuse.rules
4.0K	/lib/firmware/amd-ucode/microcode_amd.bin.asc
4.0K	/lib/firmware/amd-ucode/microcode_amd_fam15h.bin.asc
4.0K	/lib/firmware/amd-ucode/microcode_amd_fam16h.bin.asc
4.0K	/lib/firmware/amd-ucode/microcode_amd_fam17h.bin.asc
32K	/lib/firmware/ath10k/QCA4019/hw1.0/notice_ath10k_firmware-5.txt
48K	/lib/firmware/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt
80K	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt
56K	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt
48K	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt
56K	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt
16K	/lib/firmware/ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt
32K	/lib/firmware/ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt
16K	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt
16K	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt
32K	/lib/firmware/ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt
32K	/lib/firmware/ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt
4.0K	/lib/firmware/atusb/ChangeLog
4.0K	/lib/firmware/check_whence.py
56K	/lib/firmware/cis/src
4.0K	/lib/firmware/copy-firmware.sh
548K	/lib/firmware/cxgb4/t4fw-1.20.8.0.bin
560K	/lib/firmware/cxgb4/t4fw-1.24.3.0.bin
632K	/lib/firmware/cxgb4/t5fw-1.20.8.0.bin
648K	/lib/firmware/cxgb4/t5fw-1.24.3.0.bin
680K	/lib/firmware/cxgb4/t6fw-1.20.8.0.bin
700K	/lib/firmware/cxgb4/t6fw-1.24.3.0.bin
20K	/lib/firmware/GPL-2
36K	/lib/firmware/GPL-3
4.0K	/lib/firmware/isci/README
4.0K	/lib/firmware/LICENCE.Abilis
48K	/lib/firmware/LICENCE.adsp_sst
4.0K	/lib/firmware/LICENCE.agere
4.0K	/lib/firmware/LICENCE.atheros_firmware
8.0K	/lib/firmware/LICENCE.broadcom_bcm43xx
4.0K	/lib/firmware/LICENCE.ca0132
4.0K	/lib/firmware/LICENCE.cadence
4.0K	/lib/firmware/LICENCE.cavium
28K	/lib/firmware/LICENCE.cavium_liquidio
4.0K	/lib/firmware/LICENCE.chelsio_firmware
4.0K	/lib/firmware/LICENCE.cw1200
12K	/lib/firmware/LICENCE.cypress
4.0K	/lib/firmware/LICENCE.e100
4.0K	/lib/firmware/LICENCE.ene_firmware
4.0K	/lib/firmware/LICENCE.fw_sst_0f28
20K	/lib/firmware/LICENCE.go7007
4.0K	/lib/firmware/LICENCE.i2400m
4.0K	/lib/firmware/LICENCE.ibt_firmware
4.0K	/lib/firmware/LICENCE.IntcSST2
4.0K	/lib/firmware/LICENCE.it913x
4.0K	/lib/firmware/LICENCE.iwlwifi_firmware
4.0K	/lib/firmware/LICENCE.kaweth
4.0K	/lib/firmware/LICENCE.Marvell
4.0K	/lib/firmware/LICENCE.mediatek
4.0K	/lib/firmware/LICENCE.microchip
4.0K	/lib/firmware/LICENCE.moxa
4.0K	/lib/firmware/LICENCE.myri10ge_firmware
4.0K	/lib/firmware/LICENCE.Netronome
8.0K	/lib/firmware/LICENCE.nvidia
4.0K	/lib/firmware/LICENCE.OLPC
12K	/lib/firmware/LICENCE.open-ath9k-htc-firmware
4.0K	/lib/firmware/LICENCE.phanfw
4.0K	/lib/firmware/LICENCE.qat_firmware
4.0K	/lib/firmware/LICENCE.qla1280
4.0K	/lib/firmware/LICENCE.qla2xxx
4.0K	/lib/firmware/LICENCE.r8a779x_usb3
4.0K	/lib/firmware/LICENCE.ralink_a_mediatek_company_firmware
4.0K	/lib/firmware/LICENCE.ralink-firmware.txt
4.0K	/lib/firmware/LICENCE.rockchip
4.0K	/lib/firmware/LICENCE.rtlwifi_firmware.txt
4.0K	/lib/firmware/LICENCE.siano
4.0K	/lib/firmware/LICENCE.tda7706-firmware.txt
4.0K	/lib/firmware/LICENCE.ti-connectivity
4.0K	/lib/firmware/LICENCE.ti-keystone
4.0K	/lib/firmware/LICENCE.ueagle-atm4-firmware
4.0K	/lib/firmware/LICENCE.via_vt6656
4.0K	/lib/firmware/LICENCE.wl1251
4.0K	/lib/firmware/LICENCE.xc4000
4.0K	/lib/firmware/LICENCE.xc5000
4.0K	/lib/firmware/LICENCE.xc5000c
4.0K	/lib/firmware/Makefile
20K	/lib/firmware/qca/NOTICE.txt
24K	/lib/firmware/qcom/NOTICE.txt
4.0K	/lib/firmware/README
140K	/lib/firmware/WHENCE
4.0K	/lib/kbd/keymaps/i386/qwerty/fi-latin1.map.gz
4.0K	/lib/kbd/keymaps/i386/qwerty/fi-latin9.map.gz
168K	/lib/ld-2.29.so
172K	/lib/ld-2.31.so
180K	/lib/ld-2.32.so
0	/lib/libcap.so
0	/lib/libhistory.so.5
48K	/lib/libhistory.so.5.2
0	/lib/libip4tc.so.0
40K	/lib/libip4tc.so.0.1.0
0	/lib/libip6tc.so.0
40K	/lib/libip6tc.so.0.1.0
0	/lib/libiptc.so
0	/lib/libiptc.so.0
16K	/lib/libiptc.so.0.0.0
52K	/lib/libnss_nis-2.31.so
60K	/lib/libnss_nisplus-2.31.so
0	/lib/libnss_nisplus.so.2
0	/lib/libnss_nis.so.2
68K	/lib/libproc-3.2.8.so
0	/lib/libreadline.so.5
308K	/lib/libreadline.so.5.2
0	/lib/libsysfs.so
0	/lib/libsysfs.so.1
68K	/lib/libsysfs.so.1.0.3
4.0K	/lib/udev/bluetooth_serial
4.0K	/lib/udev/rules.d/24-bluetooth.rules
20K	/lib/xtables/libxt_IMQ.so
4.0K	/opt/pakfire/pakfire-2007.key
16K	/sbin/mount.fuse
16K	/sbin/raw
88K	/sbin/xfs_scrub
8.0K	/sbin/xfs_scrub_all
8.0K	/srv/web/ipfire/cgi-bin/bluetooth.cgi
80K	/usr/bin/ez-ipupdate
36K	/usr/bin/fusermount
656K	/usr/bin/gawk-5.1.0
420K	/usr/bin/gcov-dump
16K	/usr/bin/getunimap
8.0K	/usr/bin/mkinitrd
176K	/usr/bin/mtools
20K	/usr/bin/pango-querymodules
3.2M	/usr/bin/perl5.30.0
16K	/usr/bin/setlogcons
16K	/usr/bin/setvesablank
16K	/usr/bin/ulockmgr_server
44K	/usr/include/python2.7
216K	/usr/lib/cairo
4.0K	/usr/lib/dracut/dracut.conf.d
12K	/usr/lib/dracut/modules.d/99shutdown
8.0K	/usr/lib/dracut/modules.d/03rescue
60K	/usr/lib/dracut/modules.d/90mdraid
16K	/usr/lib/dracut/modules.d/99fs-lib
12K	/usr/lib/dracut/modules.d/95fstab-sys
8.0K	/usr/lib/dracut/modules.d/50drm
32K	/usr/lib/dracut/modules.d/10i18n
20K	/usr/lib/dracut/modules.d/98integrity
16K	/usr/lib/dracut/modules.d/02caps
12K	/usr/lib/dracut/modules.d/98pollcdrom
68K	/usr/lib/dracut/modules.d/99base
12K	/usr/lib/dracut/modules.d/99img-lib
16K	/usr/lib/dracut/modules.d/04watchdog
8.0K	/usr/lib/dracut/modules.d/95debug
8.0K	/usr/lib/dracut/modules.d/00bash
36K	/usr/lib/dracut/modules.d/98syslog
8.0K	/usr/lib/dracut/modules.d/95terminfo
28K	/usr/lib/dracut/modules.d/95rootfs-block
16K	/usr/lib/dracut/modules.d/90kernel-modules
20K	/usr/lib/dracut/modules.d/99installer
16K	/usr/lib/dracut/modules.d/95virtfs
20K	/usr/lib/dracut/modules.d/95udev-rules
456K	/usr/lib/dracut/modules.d
616K	/usr/lib/dracut
32K	/usr/lib/findutils/bigram
36K	/usr/lib/findutils/code
32K	/usr/lib/gawk/testext.so
384K	/usr/lib/itcl4.2.1
0	/usr/lib/libasan.so.5
1.6M	/usr/lib/libasan.so.5.0.0
1.4M	/usr/lib/libbfd-2.32.so
1.3M	/usr/lib/libbfd-2.34.so
1.3M	/usr/lib/libbfd-2.35.1.so
88K	/usr/lib/libbind9-9.16.22.so
0	/usr/lib/libbind9.so.161
76K	/usr/lib/libbind9.so.161.0.4
0	/usr/lib/libblkid.so
2.2M	/usr/lib/libdns-9.16.22.so
0	/usr/lib/libdnssec.so.7
188K	/usr/lib/libdnssec.so.7.0.0
0	/usr/lib/libdns.so.1106
2.4M	/usr/lib/libdns.so.1106.0.1
0	/usr/lib/libdns.so.1107
2.3M	/usr/lib/libdns.so.1107.1.0
0	/usr/lib/libdns.so.1110
2.3M	/usr/lib/libdns.so.1110.0.4
0	/usr/lib/libdns.so.1112
2.3M	/usr/lib/libdns.so.1112.0.2
0	/usr/lib/libdns.so.1113
2.3M	/usr/lib/libdns.so.1113.0.2
0	/usr/lib/libdns.so.1115
2.3M	/usr/lib/libdns.so.1115.0.0
0	/usr/lib/libevent-2.1.so.6
424K	/usr/lib/libevent-2.1.so.6.0.2
0	/usr/lib/libevent_core-2.1.so.6
276K	/usr/lib/libevent_core-2.1.so.6.0.2
0	/usr/lib/libevent_extra-2.1.so.6
172K	/usr/lib/libevent_extra-2.1.so.6.0.2
0	/usr/lib/libevent_openssl-2.1.so.6
40K	/usr/lib/libevent_openssl-2.1.so.6.0.2
0	/usr/lib/libevent_openssl.so
0	/usr/lib/libevent_pthreads-2.1.so.6
20K	/usr/lib/libevent_pthreads-2.1.so.6.0.2
0	/usr/lib/libevent_pthreads.so
0	/usr/lib/libexpat.so
0	/usr/lib/libexslt.so
0	/usr/lib/libffi.so.6
48K	/usr/lib/libffi.so.6.0.4
0	/usr/lib/libffi.so.7
44K	/usr/lib/libffi.so.7.1.0
0	/usr/lib/libfuse.so
0	/usr/lib/libfuse.so.2
288K	/usr/lib/libfuse.so.2.9.7
0	/usr/lib/libgdbm_compat.so
0	/usr/lib/libgdbm_compat.so.3
20K	/usr/lib/libgdbm_compat.so.3.0.0
0	/usr/lib/libgdbm.so
0	/usr/lib/libgdbm.so.3
32K	/usr/lib/libgdbm.so.3.0.0
0	/usr/lib/libgd.so
0	/usr/lib/libgd.so.2
328K	/usr/lib/libgd.so.2.0.0
1.8M	/usr/lib/libgettextlib-0.19.8.1.so
352K	/usr/lib/libgettextsrc-0.19.8.1.so
0	/usr/lib/libhistory.so.6
52K	/usr/lib/libhistory.so.6.3
0	/usr/lib/libhogweed.so.5
248K	/usr/lib/libhogweed.so.5.0
0	/usr/lib/libidn.so
0	/usr/lib/libidn.so.11
216K	/usr/lib/libidn.so.11.6.18
48K	/usr/lib/libirs-9.16.22.so
612K	/usr/lib/libisc-9.16.22.so
44K	/usr/lib/libisccc-9.16.22.so
0	/usr/lib/libisccc.so.161
48K	/usr/lib/libisccc.so.161.0.1
212K	/usr/lib/libisccfg-9.16.22.so
0	/usr/lib/libisccfg.so.163
184K	/usr/lib/libisccfg.so.163.0.8
0	/usr/lib/libisc.so.1100
596K	/usr/lib/libisc.so.1100.3.2
0	/usr/lib/libisc.so.1104
536K	/usr/lib/libisc.so.1104.0.0
0	/usr/lib/libisc.so.1105
548K	/usr/lib/libisc.so.1105.1.1
0	/usr/lib/libisc.so.1107
548K	/usr/lib/libisc.so.1107.0.5
0	/usr/lib/libixml.so
0	/usr/lib/libknot.so.10
288K	/usr/lib/libknot.so.10.0.0
0	/usr/lib/libknot.so.11
248K	/usr/lib/libknot.so.11.0.0
0	/usr/lib/libknot.so.9
328K	/usr/lib/libknot.so.9.0.0
0	/usr/lib/liblber-2.3.so.0
72K	/usr/lib/liblber-2.3.so.0.2.8
0	/usr/lib/libldap-2.3.so.0
264K	/usr/lib/libldap-2.3.so.0.2.8
0	/usr/lib/libldap_r-2.3.so.0
284K	/usr/lib/libldap_r-2.3.so.0.2.8
0	/usr/lib/libloc.so.0
56K	/usr/lib/libloc.so.0.0.0
264K	/usr/lib/liblua-5.3.so
0	/usr/lib/liblua.so
0	/usr/lib/liblwres.so.161
88K	/usr/lib/liblwres.so.161.0.4
0	/usr/lib/libmpfr.so.4
428K	/usr/lib/libmpfr.so.4.1.5
0	/usr/lib/libmpx.so.2
28K	/usr/lib/libmpx.so.2.0.1
0	/usr/lib/libmpxwrappers.so.2
24K	/usr/lib/libmpxwrappers.so.2.0.1
0	/usr/lib/libnettle.so.7
264K	/usr/lib/libnettle.so.7.0
304K	/usr/lib/libns-9.16.22.so
1.5M	/usr/lib/libopcodes-2.32.so
1.4M	/usr/lib/libopcodes-2.34.so
1.4M	/usr/lib/libopcodes-2.35.1.so
0	/usr/lib/libpcre2-posix.so.2
16K	/usr/lib/libpcre2-posix.so.2.0.3
0	/usr/lib/libpng12.so
0	/usr/lib/libpng12.so.0
240K	/usr/lib/libpng12.so.0.57.0
0	/usr/lib/libpng.so.3
256K	/usr/lib/libpng.so.3.57.0
0	/usr/lib/libpoppler.so.100
3.8M	/usr/lib/libpoppler.so.100.0.0
0	/usr/lib/libpoppler.so.110
3.6M	/usr/lib/libpoppler.so.110.0.0
0	/usr/lib/libpoppler.so.111
3.7M	/usr/lib/libpoppler.so.111.0.0
0	/usr/lib/libpoppler.so.66
2.8M	/usr/lib/libpoppler.so.66.0.0
0	/usr/lib/libqpdf.so.17
1.1M	/usr/lib/libqpdf.so.17.0.0
0	/usr/lib/libreadline.so.6
348K	/usr/lib/libreadline.so.6.3
0	/usr/lib/libsensors.so.4
76K	/usr/lib/libsensors.so.4.4.0
0	/usr/lib/libsqlite3.so
0	/usr/lib/libthreadutil.so
0	/usr/lib/libthreadutil.so.6
32K	/usr/lib/libthreadutil.so.6.0.3
0	/usr/lib/libulockmgr.so
0	/usr/lib/libulockmgr.so.1
20K	/usr/lib/libulockmgr.so.1.0.1
0	/usr/lib/libupnp.so
0	/usr/lib/libuuid.so
0	/usr/lib/libxml2.so
0	/usr/lib/libxslt.so
316K	/usr/lib/pango/1.6.0/modules
320K	/usr/lib/pango/1.6.0
324K	/usr/lib/pango
24K	/usr/lib/perl5/site_perl/5.30.0/Apache
36K	/usr/lib/perl5/site_perl/5.30.0/Geo/IP
40K	/usr/lib/perl5/site_perl/5.30.0/Geo
28K	/usr/lib/perl5/site_perl/5.30.0/Mail/Mailer
16K	/usr/lib/perl5/site_perl/5.30.0/Mail/Field
120K	/usr/lib/perl5/site_perl/5.30.0/Mail
12K	/usr/lib/perl5/site_perl/5.30.0/HTML/Template
196K	/usr/lib/perl5/site_perl/5.30.0/HTML
8.0K	/usr/lib/perl5/site_perl/5.30.0/WWW/RobotRules
24K	/usr/lib/perl5/site_perl/5.30.0/WWW
12K	/usr/lib/perl5/site_perl/5.30.0/URI/urn
32K	/usr/lib/perl5/site_perl/5.30.0/URI/file
232K	/usr/lib/perl5/site_perl/5.30.0/URI
8.0K	/usr/lib/perl5/site_perl/5.30.0/CGI/HTML
8.0K	/usr/lib/perl5/site_perl/5.30.0/CGI/File
88K	/usr/lib/perl5/site_perl/5.30.0/CGI
16K	/usr/lib/perl5/site_perl/5.30.0/Digest
20K	/usr/lib/perl5/site_perl/5.30.0/LWP/Authen
100K	/usr/lib/perl5/site_perl/5.30.0/LWP/Protocol
232K	/usr/lib/perl5/site_perl/5.30.0/LWP
24K	/usr/lib/perl5/site_perl/5.30.0/Archive/Zip
24K	/usr/lib/perl5/site_perl/5.30.0/Archive/Tar
192K	/usr/lib/perl5/site_perl/5.30.0/Archive
16K	/usr/lib/perl5/site_perl/5.30.0/File
108K	/usr/lib/perl5/site_perl/5.30.0/MIME
16K	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/ColorSpace/Indexed
32K	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/ColorSpace
16K	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Image/TIFF
84K	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Image
28K	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Form/BarCode
44K	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject/Form
140K	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/XObject
24K	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/TrueType
1.3M	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CJKFont
16M	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont/CMap
17M	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/CIDFont
1.2M	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font/CoreFont
1.3M	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource/Font
19M	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Resource
8.0K	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Content
28K	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF/Filter
152K	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic/PDF
156K	/usr/lib/perl5/site_perl/5.30.0/PDF/API2/Basic
19M	/usr/lib/perl5/site_perl/5.30.0/PDF/API2
20M	/usr/lib/perl5/site_perl/5.30.0/PDF
28K	/usr/lib/perl5/site_perl/5.30.0/GD/Text
176K	/usr/lib/perl5/site_perl/5.30.0/GD/Graph
276K	/usr/lib/perl5/site_perl/5.30.0/GD
12K	/usr/lib/perl5/site_perl/5.30.0/Crypt
260K	/usr/lib/perl5/site_perl/5.30.0/IO/Socket/SSL
372K	/usr/lib/perl5/site_perl/5.30.0/IO/Socket
488K	/usr/lib/perl5/site_perl/5.30.0/IO
28K	/usr/lib/perl5/site_perl/5.30.0/Convert
8.0K	/usr/lib/perl5/site_perl/5.30.0/Email/Date
12K	/usr/lib/perl5/site_perl/5.30.0/Email
16K	/usr/lib/perl5/site_perl/5.30.0/Device/Modem/Log
20K	/usr/lib/perl5/site_perl/5.30.0/Device/Modem/Protocol
60K	/usr/lib/perl5/site_perl/5.30.0/Device/Modem
108K	/usr/lib/perl5/site_perl/5.30.0/Device
16K	/usr/lib/perl5/site_perl/5.30.0/Font/TTF/Features
12K	/usr/lib/perl5/site_perl/5.30.0/Font/TTF/Woff
24K	/usr/lib/perl5/site_perl/5.30.0/Font/TTF/Kern
48K	/usr/lib/perl5/site_perl/5.30.0/Font/TTF/Mort
900K	/usr/lib/perl5/site_perl/5.30.0/Font/TTF
908K	/usr/lib/perl5/site_perl/5.30.0/Font
76K	/usr/lib/perl5/site_perl/5.30.0/Net/DNS/Resolver
428K	/usr/lib/perl5/site_perl/5.30.0/Net/DNS/RR
704K	/usr/lib/perl5/site_perl/5.30.0/Net/DNS
32K	/usr/lib/perl5/site_perl/5.30.0/Net/Server/Proto
160K	/usr/lib/perl5/site_perl/5.30.0/Net/Server
24K	/usr/lib/perl5/site_perl/5.30.0/Net/CIDR
24K	/usr/lib/perl5/site_perl/5.30.0/Net/HTTP
1.2M	/usr/lib/perl5/site_perl/5.30.0/Net
16K	/usr/lib/perl5/site_perl/5.30.0/HTTP/Cookies
20K	/usr/lib/perl5/site_perl/5.30.0/HTTP/Request
20K	/usr/lib/perl5/site_perl/5.30.0/HTTP/Headers
208K	/usr/lib/perl5/site_perl/5.30.0/HTTP
100K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/HTML
4.0K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/Linux
12K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/Win32
96K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/Text
12K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/Digest
24K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBD/Gofer/Policy
48K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBD/Gofer/Transport
76K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBD/Gofer
372K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBD
36K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/Compress
16K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/Unix
4.0K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/common
76K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/GD
112K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/NetAddr/IP
160K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/NetAddr
20K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/Convert
12K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/BerkeleyDB
104K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/Device
36K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBI/SQL
12K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBI/Util
84K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBI/DBD
84K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBI/Const/GetInfo
96K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBI/Const
12K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBI/ProfileDumper
16K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBI/Gofer/Serializer
20K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBI/Gofer/Transport
88K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBI/Gofer
752K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/DBI
16K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/Net/SSLeay
92K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/Net
24K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/XML/Parser/Style
300K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/XML/Parser/Encodings
368K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/XML/Parser
400K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/XML
8.0K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/Bundle
64K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/HTML/Parser
68K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/HTML
28K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Location
4.0K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Linux/Inotify2
8.0K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Linux
72K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Text/CSV_XS
76K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Text
28K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Digest/SHA1
32K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Digest
848K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/DBD/SQLite
852K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/DBD
68K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Compress/Zlib
72K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Compress
36K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Unix/Syslog
40K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Unix
136K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/GD
40K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/NetAddr/IP/Util
44K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/NetAddr/IP/InetBase
112K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/NetAddr/IP/UtilPP
268K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/NetAddr/IP
272K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/NetAddr
196K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Convert/UUlib
200K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Convert
52K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/RRDs
236K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/BerkeleyDB
24K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Device/SerialPort
28K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Device
140K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/DBI
976K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Net/SSLeay
32K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Net/Oping
24K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Net/DNS
1.1M	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/Net
104K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/XML/Parser/Expat
108K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/XML/Parser
112K	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto/XML
3.4M	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi/auto
6.1M	/usr/lib/perl5/site_perl/5.30.0/x86_64-linux-thread-multi
4.0K	/usr/lib/perl5/site_perl/5.30.0/Guardian
8.0K	/usr/lib/perl5/site_perl/5.30.0/Bundle
8.0K	/usr/lib/perl5/site_perl/5.30.0/auto/Net/IPv4Addr
12K	/usr/lib/perl5/site_perl/5.30.0/auto/Net
16K	/usr/lib/perl5/site_perl/5.30.0/auto
28K	/usr/lib/perl5/site_perl/5.30.0/Sort
30M	/usr/lib/perl5/site_perl/5.30.0
76K	/usr/lib/perl5/site_perl/5.32.1/Net/IP.pm
1.4M	/usr/lib/python3.8/ensurepip/_bundled/pip-19.2.3-py2.py3-none-any.whl
60K	/usr/lib/python3.8/idlelib/Icons/idle.icns
16K	/usr/lib/python3.8/lib2to3/Grammar3.8.1.final.0.pickle
4.0K	/usr/lib/python3.8/lib2to3/PatternGrammar3.8.1.final.0.pickle
1.4M	/usr/lib/sqlite3.34.0
16K	/usr/lib/squid/basic_nis_auth
24K	/usr/lib/squid/ext_time_quota_acl
12K	/usr/lib/tcl8/8.4/platform-1.0.14.tm
12K	/usr/lib/tcl8/8.4/platform-1.0.15.tm
36K	/usr/lib/tcl8/8.5/msgcat-1.6.0.tm
100K	/usr/lib/tcl8/8.5/tcltest-2.4.0.tm
44K	/usr/lib/tcl8/8.6/http-2.8.9.tm
20K	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.0.4.tm
20K	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm
72K	/usr/lib/tdbc1.1.2
72K	/usr/lib/tdbcmysql1.1.2
92K	/usr/lib/tdbcodbc1.1.2
68K	/usr/lib/tdbcpostgres1.1.2
140K	/usr/lib/thread2.8.6
16K	/usr/libexec/xtables-addons
du: cannot access '/usr/local/bin/ovpn-ccd-convert': No such file or directory
4.0K	/usr/local/bin/rebuild-initrd
8.0K	/usr/local/bin/xt_geoip_build
8.0K	/usr/local/bin/xt_geoip_update
68K	/usr/sbin/batctl
40K	/usr/sbin/fbset
4.0K	/usr/sbin/update-usbids.sh
36K	/usr/sbin/uuidd
40K	/usr/share/doc/fireinfo
140K	/usr/share/GeoIP/bin
2.2M	/usr/share/GeoIP
4.0K	/usr/share/zoneinfo/posix/US/Pacific-New
4.0K	/usr/share/zoneinfo/right/US/Pacific-New
4.0K	/usr/share/zoneinfo/US/Pacific-New
16M	/var/lib/GeoIP
117M	total

Thanks, and best regards,
Peter Müller
  
Michael Tremer March 21, 2022, 3:55 p.m. UTC | #2
Hello,

This is interesting.

> On 21 Mar 2022, at 15:35, Peter Müller <peter.mueller@ipfire.org> wrote:
> 
> On an IPFire installation that has been around since Core Update 110
> (released April 28, 2017), these files have been identified as being
> orphaned, comparing to a fresh installation of Core Update 164.
> 
> To avoid such a list of files agglomerating, persons responsible for a
> Core Update should check whether an updated package contains deleted
> files in its rootfile. If so, they should be deleted on existing systems
> via update.sh as well.
> 
> Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
> ---
> config/rootfiles/core/166/update.sh | 260 +++++++++++++++++++++++++++-
> 1 file changed, 258 insertions(+), 2 deletions(-)
> 
> diff --git a/config/rootfiles/core/166/update.sh b/config/rootfiles/core/166/update.sh
> index 1370555b0..b556986a5 100644
> --- a/config/rootfiles/core/166/update.sh
> +++ b/config/rootfiles/core/166/update.sh
> @@ -32,13 +32,269 @@ for (( i=1; i<=$core; i++ )); do
> done
> 
> # Remove files
> -rm -vf \
> +rm -rvf \
> +	/bin/setserial \
> 	/etc/dracut.conf \
> +	/etc/fonts/conf.d/30-urw-aliases.conf \
> +	/etc/grub.d/README \
> +	/etc/rc.d/init.d/networking/red.up/99-geoip-database \
> +	/etc/udev/rules.d/99-fuse.rules \
> +	/lib/firmware/amd-ucode/microcode_amd.bin.asc \
> +	/lib/firmware/amd-ucode/microcode_amd_fam15h.bin.asc \
> +	/lib/firmware/amd-ucode/microcode_amd_fam16h.bin.asc \
> +	/lib/firmware/amd-ucode/microcode_amd_fam17h.bin.asc \
> +	/lib/firmware/ath10k/QCA4019/hw1.0/notice_ath10k_firmware-5.txt \
> +	/lib/firmware/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt \
> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt \
> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt \
> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt \
> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt \
> +	/lib/firmware/ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt \
> +	/lib/firmware/ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt \
> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt \
> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt \
> +	/lib/firmware/ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt \
> +	/lib/firmware/ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt \
> +	/lib/firmware/atusb/ChangeLog \
> +	/lib/firmware/check_whence.py \
> +	/lib/firmware/cis/src \
> +	/lib/firmware/copy-firmware.sh \
> +	/lib/firmware/cxgb4/t4fw-1.20.8.0.bin \
> +	/lib/firmware/cxgb4/t4fw-1.24.3.0.bin \
> +	/lib/firmware/cxgb4/t5fw-1.20.8.0.bin \
> +	/lib/firmware/cxgb4/t5fw-1.24.3.0.bin \
> +	/lib/firmware/cxgb4/t6fw-1.20.8.0.bin \
> +	/lib/firmware/cxgb4/t6fw-1.24.3.0.bin \
> +	/lib/firmware/GPL-2 \
> +	/lib/firmware/GPL-3 \
> +	/lib/firmware/isci/README \
> +	/lib/firmware/LICENCE.* \
> +	/lib/firmware/Makefile \
> +	/lib/firmware/qca/NOTICE.txt \
> +	/lib/firmware/qcom/NOTICE.txt \
> +	/lib/firmware/README \
> +	/lib/firmware/WHENCE \
> +	/lib/kbd/keymaps/i386/qwerty/fi-latin1.map.gz \
> +	/lib/kbd/keymaps/i386/qwerty/fi-latin9.map.gz \
> +	/lib/ld-2.29.so \
> +	/lib/ld-2.31.so \
> +	/lib/ld-2.32.so \

These should have been gone before. Ideally by the filesystem cleanup script.

> +	/lib/libcap.so \
> +	/lib/libhistory.so.5 \
> +	/lib/libhistory.so.5.2 \
> +	/lib/libip4tc.so.0 \
> +	/lib/libip4tc.so.0.1.0 \
> +	/lib/libip6tc.so.0 \
> +	/lib/libip6tc.so.0.1.0 \
> +	/lib/libiptc.so \
> +	/lib/libiptc.so.0 \
> +	/lib/libiptc.so.0.0.0 \
> +	/lib/libnss_nis-2.31.so \
> +	/lib/libnss_nisplus-2.31.so \
> +	/lib/libnss_nisplus.so.2 \
> +	/lib/libnss_nis.so.2 \
> +	/lib/libproc-3.2.8.so \
> +	/lib/libreadline.so.5 \
> +	/lib/libreadline.so.5.2 \
> +	/lib/libsysfs.so \
> +	/lib/libsysfs.so.1 \
> +	/lib/libsysfs.so.1.0.3 \
> +	/lib/udev/bluetooth_serial \
> +	/lib/udev/rules.d/24-bluetooth.rules \
> +	/lib/xtables/libxt_IMQ.so \
> 	/opt/pakfire/pakfire-2007.key \
> +	/sbin/mount.fuse \
> +	/sbin/raw \
> +	/sbin/xfs_scrub \
> +	/sbin/xfs_scrub_all \
> +	/srv/web/ipfire/cgi-bin/bluetooth.cgi \
> +	/usr/bin/ez-ipupdate \

LOL

> +	/usr/bin/fusermount \
> +	/usr/bin/gawk-5.1.0 \
> +	/usr/bin/gcov-dump \
> +	/usr/bin/getunimap \
> 	/usr/bin/mkinitrd \
> +	/usr/bin/mtools \
> +	/usr/bin/pango-querymodules \
> +	/usr/bin/perl5.30.0 \
> +	/usr/bin/setlogcons \
> +	/usr/bin/setvesablank \
> +	/usr/bin/ulockmgr_server \
> +	/usr/include/python2.7 \
> +	/usr/lib/cairo \
> 	/usr/lib/dracut \
> +	/usr/lib/findutils/bigram \
> +	/usr/lib/findutils/code \
> +	/usr/lib/gawk/testext.so \
> +	/usr/lib/itcl4.2.1 \
> +	/usr/lib/libasan.so.5 \
> +	/usr/lib/libasan.so.5.0.0 \
> +	/usr/lib/libbfd-2.32.so \
> +	/usr/lib/libbfd-2.34.so \
> +	/usr/lib/libbfd-2.35.1.so \
> +	/usr/lib/libbind9-9.16.22.so \
> +	/usr/lib/libbind9.so.161 \
> +	/usr/lib/libbind9.so.161.0.4 \
> +	/usr/lib/libblkid.so \
> +	/usr/lib/libdns-9.16.22.so \
> +	/usr/lib/libdnssec.so.7 \
> +	/usr/lib/libdnssec.so.7.0.0 \
> +	/usr/lib/libdns.so.* \

These should have been caught by the script as well. Any idea why that didn’t happen?

> +	/usr/lib/libevent-2.1.so.6 \
> +	/usr/lib/libevent-2.1.so.6.0.2 \
> +	/usr/lib/libevent_core-2.1.so.6 \
> +	/usr/lib/libevent_core-2.1.so.6.0.2 \
> +	/usr/lib/libevent_extra-2.1.so.6 \
> +	/usr/lib/libevent_extra-2.1.so.6.0.2 \
> +	/usr/lib/libevent_openssl-2.1.so.6 \
> +	/usr/lib/libevent_openssl-2.1.so.6.0.2 \
> +	/usr/lib/libevent_openssl.so \
> +	/usr/lib/libevent_pthreads-2.1.so.6 \
> +	/usr/lib/libevent_pthreads-2.1.so.6.0.2 \
> +	/usr/lib/libevent_pthreads.so \
> +	/usr/lib/libexpat.so \
> +	/usr/lib/libexslt.so \
> +	/usr/lib/libffi.so.6 \
> +	/usr/lib/libffi.so.6.0.4 \
> +	/usr/lib/libffi.so.7 \
> +	/usr/lib/libffi.so.7.1.0 \
> +	/usr/lib/libfuse.so \
> +	/usr/lib/libfuse.so.2 \
> +	/usr/lib/libfuse.so.2.9.7 \
> +	/usr/lib/libgdbm_compat.so \
> +	/usr/lib/libgdbm_compat.so.3 \
> +	/usr/lib/libgdbm_compat.so.3.0.0 \
> +	/usr/lib/libgdbm.so \
> +	/usr/lib/libgdbm.so.3 \
> +	/usr/lib/libgdbm.so.3.0.0 \
> +	/usr/lib/libgd.so \
> +	/usr/lib/libgd.so.2 \
> +	/usr/lib/libgd.so.2.0.0 \
> +	/usr/lib/libgettextlib-0.19.8.1.so \
> +	/usr/lib/libgettextsrc-0.19.8.1.so \
> +	/usr/lib/libhistory.so.6 \
> +	/usr/lib/libhistory.so.6.3 \
> +	/usr/lib/libhogweed.so.5 \
> +	/usr/lib/libhogweed.so.5.0 \
> +	/usr/lib/libidn.so \
> +	/usr/lib/libidn.so.11 \
> +	/usr/lib/libidn.so.11.6.18 \
> +	/usr/lib/libirs-9.16.22.so \
> +	/usr/lib/libisc-9.16.22.so \
> +	/usr/lib/libisccc-9.16.22.so \
> +	/usr/lib/libisccc.so.161 \
> +	/usr/lib/libisccc.so.161.0.1 \
> +	/usr/lib/libisccfg-9.16.22.so \
> +	/usr/lib/libisccfg.so.163 \
> +	/usr/lib/libisccfg.so.163.0.8 \
> +	/usr/lib/libisc.so.1100 \
> +	/usr/lib/libisc.so.1100.3.2 \
> +	/usr/lib/libisc.so.1104 \
> +	/usr/lib/libisc.so.1104.0.0 \
> +	/usr/lib/libisc.so.1105 \
> +	/usr/lib/libisc.so.1105.1.1 \
> +	/usr/lib/libisc.so.1107 \
> +	/usr/lib/libisc.so.1107.0.5 \

See above.

> +	/usr/lib/libixml.so \
> +	/usr/lib/libknot.so.10 \
> +	/usr/lib/libknot.so.10.0.0 \
> +	/usr/lib/libknot.so.11 \
> +	/usr/lib/libknot.so.11.0.0 \
> +	/usr/lib/libknot.so.9 \
> +	/usr/lib/libknot.so.9.0.0 \
> +	/usr/lib/liblber-2.3.so.0 \
> +	/usr/lib/liblber-2.3.so.0.2.8 \
> +	/usr/lib/libldap-2.3.so.0 \
> +	/usr/lib/libldap-2.3.so.0.2.8 \
> +	/usr/lib/libldap_r-2.3.so.0 \
> +	/usr/lib/libldap_r-2.3.so.0.2.8 \
> +	/usr/lib/libloc.so.0 \
> +	/usr/lib/libloc.so.0.0.0 \
> +	/usr/lib/liblua-5.3.so \
> +	/usr/lib/liblua.so \
> +	/usr/lib/liblwres.so.161 \
> +	/usr/lib/liblwres.so.161.0.4 \
> +	/usr/lib/libmpfr.so.4 \
> +	/usr/lib/libmpfr.so.4.1.5 \
> +	/usr/lib/libmpx.so.2 \
> +	/usr/lib/libmpx.so.2.0.1 \
> +	/usr/lib/libmpxwrappers.so.2 \
> +	/usr/lib/libmpxwrappers.so.2.0.1 \
> +	/usr/lib/libnettle.so.7 \
> +	/usr/lib/libnettle.so.7.0 \
> +	/usr/lib/libns-9.16.22.so \
> +	/usr/lib/libopcodes-2.32.so \
> +	/usr/lib/libopcodes-2.34.so \
> +	/usr/lib/libopcodes-2.35.1.so \
> +	/usr/lib/libpcre2-posix.so.2 \
> +	/usr/lib/libpcre2-posix.so.2.0.3 \
> +	/usr/lib/libpng12.so \
> +	/usr/lib/libpng12.so.0 \
> +	/usr/lib/libpng12.so.0.57.0 \
> +	/usr/lib/libpng.so.3 \
> +	/usr/lib/libpng.so.3.57.0 \
> +	/usr/lib/libpoppler.so.100 \
> +	/usr/lib/libpoppler.so.100.0.0 \
> +	/usr/lib/libpoppler.so.110 \
> +	/usr/lib/libpoppler.so.110.0.0 \
> +	/usr/lib/libpoppler.so.111 \
> +	/usr/lib/libpoppler.so.111.0.0 \
> +	/usr/lib/libpoppler.so.66 \
> +	/usr/lib/libpoppler.so.66.0.0 \
> +	/usr/lib/libqpdf.so.17 \
> +	/usr/lib/libqpdf.so.17.0.0 \
> +	/usr/lib/libreadline.so.6 \
> +	/usr/lib/libreadline.so.6.3 \
> +	/usr/lib/libsensors.so.4 \
> +	/usr/lib/libsensors.so.4.4.0 \
> +	/usr/lib/libsqlite3.so \
> +	/usr/lib/libthreadutil.so \
> +	/usr/lib/libthreadutil.so.6 \
> +	/usr/lib/libthreadutil.so.6.0.3 \
> +	/usr/lib/libulockmgr.so \
> +	/usr/lib/libulockmgr.so.1 \
> +	/usr/lib/libulockmgr.so.1.0.1 \
> +	/usr/lib/libupnp.so \
> +	/usr/lib/libuuid.so \
> +	/usr/lib/libxml2.so \
> +	/usr/lib/libxslt.so \
> +	/usr/lib/pango \
> +	/usr/lib/perl5/site_perl/5.30.0 \
> +	/usr/lib/perl5/site_perl/5.32.1/Net/IP.pm \
> +	/usr/lib/python3.8/ensurepip/_bundled/pip-19.2.3-py2.py3-none-any.whl \
> +	/usr/lib/python3.8/idlelib/Icons/idle.icns \
> +	/usr/lib/python3.8/lib2to3/Grammar3.8.1.final.0.pickle \
> +	/usr/lib/python3.8/lib2to3/PatternGrammar3.8.1.final.0.pickle \

Why can we not delete /usr/lib/python3.8 as a whole? This should not be needed any more.

> +	/usr/lib/sqlite3.34.0 \
> +	/usr/lib/squid/basic_nis_auth \
> +	/usr/lib/squid/ext_time_quota_acl \
> +	/usr/lib/tcl8/8.4/platform-1.0.14.tm \
> +	/usr/lib/tcl8/8.4/platform-1.0.15.tm \
> +	/usr/lib/tcl8/8.5/msgcat-1.6.0.tm \
> +	/usr/lib/tcl8/8.5/tcltest-2.4.0.tm \
> +	/usr/lib/tcl8/8.6/http-2.8.9.tm \
> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.0.4.tm \
> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm \

Why do we even ship tcl? Is anything reliant on this?

> +	/usr/lib/tdbc1.1.2 \
> +	/usr/lib/tdbcmysql1.1.2 \
> +	/usr/lib/tdbcodbc1.1.2 \
> +	/usr/lib/tdbcpostgres1.1.2 \
> +	/usr/lib/thread2.8.6 \
> +	/usr/libexec/xtables-addons \
> 	/usr/local/bin/ovpn-ccd-convert \
> -	/usr/local/bin/rebuild-initrd
> +	/usr/local/bin/rebuild-initrd \
> +	/usr/local/bin/xt_geoip_build \
> +	/usr/local/bin/xt_geoip_update \
> +	/usr/sbin/batctl \
> +	/usr/sbin/fbset \
> +	/usr/sbin/update-usbids.sh \
> +	/usr/sbin/uuidd \
> +	/usr/share/doc/fireinfo \
> +	/usr/share/GeoIP \
> +	/usr/share/zoneinfo/posix/US/Pacific-New \
> +	/usr/share/zoneinfo/right/US/Pacific-New \
> +	/usr/share/zoneinfo/US/Pacific-New \
> +	/var/lib/GeoIP

What method did you use to identify all these files?

-Michael

> 
> # Delete old 2007 Pakfire key from GPG keyring
> export GNUPGHOME="/opt/pakfire/etc/.gnupg"
> -- 
> 2.34.1
  
Peter Müller March 21, 2022, 4:03 p.m. UTC | #3
Hello Michael,

thanks for your reply.

> Hello,
> 
> This is interesting.

That's a mild way of putting it, I think. :-)

> 
>> On 21 Mar 2022, at 15:35, Peter Müller <peter.mueller@ipfire.org> wrote:
>>
>> On an IPFire installation that has been around since Core Update 110
>> (released April 28, 2017), these files have been identified as being
>> orphaned, comparing to a fresh installation of Core Update 164.
>>
>> To avoid such a list of files agglomerating, persons responsible for a
>> Core Update should check whether an updated package contains deleted
>> files in its rootfile. If so, they should be deleted on existing systems
>> via update.sh as well.
>>
>> Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
>> ---
>> config/rootfiles/core/166/update.sh | 260 +++++++++++++++++++++++++++-
>> 1 file changed, 258 insertions(+), 2 deletions(-)
>>
>> diff --git a/config/rootfiles/core/166/update.sh b/config/rootfiles/core/166/update.sh
>> index 1370555b0..b556986a5 100644
>> --- a/config/rootfiles/core/166/update.sh
>> +++ b/config/rootfiles/core/166/update.sh
>> @@ -32,13 +32,269 @@ for (( i=1; i<=$core; i++ )); do
>> done
>>
>> # Remove files
>> -rm -vf \
>> +rm -rvf \
>> +	/bin/setserial \
>> 	/etc/dracut.conf \
>> +	/etc/fonts/conf.d/30-urw-aliases.conf \
>> +	/etc/grub.d/README \
>> +	/etc/rc.d/init.d/networking/red.up/99-geoip-database \
>> +	/etc/udev/rules.d/99-fuse.rules \
>> +	/lib/firmware/amd-ucode/microcode_amd.bin.asc \
>> +	/lib/firmware/amd-ucode/microcode_amd_fam15h.bin.asc \
>> +	/lib/firmware/amd-ucode/microcode_amd_fam16h.bin.asc \
>> +	/lib/firmware/amd-ucode/microcode_amd_fam17h.bin.asc \
>> +	/lib/firmware/ath10k/QCA4019/hw1.0/notice_ath10k_firmware-5.txt \
>> +	/lib/firmware/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt \
>> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt \
>> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt \
>> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt \
>> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt \
>> +	/lib/firmware/ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt \
>> +	/lib/firmware/ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt \
>> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt \
>> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt \
>> +	/lib/firmware/ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt \
>> +	/lib/firmware/ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt \
>> +	/lib/firmware/atusb/ChangeLog \
>> +	/lib/firmware/check_whence.py \
>> +	/lib/firmware/cis/src \
>> +	/lib/firmware/copy-firmware.sh \
>> +	/lib/firmware/cxgb4/t4fw-1.20.8.0.bin \
>> +	/lib/firmware/cxgb4/t4fw-1.24.3.0.bin \
>> +	/lib/firmware/cxgb4/t5fw-1.20.8.0.bin \
>> +	/lib/firmware/cxgb4/t5fw-1.24.3.0.bin \
>> +	/lib/firmware/cxgb4/t6fw-1.20.8.0.bin \
>> +	/lib/firmware/cxgb4/t6fw-1.24.3.0.bin \
>> +	/lib/firmware/GPL-2 \
>> +	/lib/firmware/GPL-3 \
>> +	/lib/firmware/isci/README \
>> +	/lib/firmware/LICENCE.* \
>> +	/lib/firmware/Makefile \
>> +	/lib/firmware/qca/NOTICE.txt \
>> +	/lib/firmware/qcom/NOTICE.txt \
>> +	/lib/firmware/README \
>> +	/lib/firmware/WHENCE \
>> +	/lib/kbd/keymaps/i386/qwerty/fi-latin1.map.gz \
>> +	/lib/kbd/keymaps/i386/qwerty/fi-latin9.map.gz \
>> +	/lib/ld-2.29.so \
>> +	/lib/ld-2.31.so \
>> +	/lib/ld-2.32.so \
> 
> These should have been gone before. Ideally by the filesystem cleanup script.

To be honest, I never had a look at this script, and therefore do not have an idea
what it does and what it does not. I will investigate and get back to you, if necessary.

>> +	/lib/libcap.so \
>> +	/lib/libhistory.so.5 \
>> +	/lib/libhistory.so.5.2 \
>> +	/lib/libip4tc.so.0 \
>> +	/lib/libip4tc.so.0.1.0 \
>> +	/lib/libip6tc.so.0 \
>> +	/lib/libip6tc.so.0.1.0 \
>> +	/lib/libiptc.so \
>> +	/lib/libiptc.so.0 \
>> +	/lib/libiptc.so.0.0.0 \
>> +	/lib/libnss_nis-2.31.so \
>> +	/lib/libnss_nisplus-2.31.so \
>> +	/lib/libnss_nisplus.so.2 \
>> +	/lib/libnss_nis.so.2 \
>> +	/lib/libproc-3.2.8.so \
>> +	/lib/libreadline.so.5 \
>> +	/lib/libreadline.so.5.2 \
>> +	/lib/libsysfs.so \
>> +	/lib/libsysfs.so.1 \
>> +	/lib/libsysfs.so.1.0.3 \
>> +	/lib/udev/bluetooth_serial \
>> +	/lib/udev/rules.d/24-bluetooth.rules \
>> +	/lib/xtables/libxt_IMQ.so \
>> 	/opt/pakfire/pakfire-2007.key \
>> +	/sbin/mount.fuse \
>> +	/sbin/raw \
>> +	/sbin/xfs_scrub \
>> +	/sbin/xfs_scrub_all \
>> +	/srv/web/ipfire/cgi-bin/bluetooth.cgi \
>> +	/usr/bin/ez-ipupdate \
> 
> LOL

?

> 
>> +	/usr/bin/fusermount \
>> +	/usr/bin/gawk-5.1.0 \
>> +	/usr/bin/gcov-dump \
>> +	/usr/bin/getunimap \
>> 	/usr/bin/mkinitrd \
>> +	/usr/bin/mtools \
>> +	/usr/bin/pango-querymodules \
>> +	/usr/bin/perl5.30.0 \
>> +	/usr/bin/setlogcons \
>> +	/usr/bin/setvesablank \
>> +	/usr/bin/ulockmgr_server \
>> +	/usr/include/python2.7 \
>> +	/usr/lib/cairo \
>> 	/usr/lib/dracut \
>> +	/usr/lib/findutils/bigram \
>> +	/usr/lib/findutils/code \
>> +	/usr/lib/gawk/testext.so \
>> +	/usr/lib/itcl4.2.1 \
>> +	/usr/lib/libasan.so.5 \
>> +	/usr/lib/libasan.so.5.0.0 \
>> +	/usr/lib/libbfd-2.32.so \
>> +	/usr/lib/libbfd-2.34.so \
>> +	/usr/lib/libbfd-2.35.1.so \
>> +	/usr/lib/libbind9-9.16.22.so \
>> +	/usr/lib/libbind9.so.161 \
>> +	/usr/lib/libbind9.so.161.0.4 \
>> +	/usr/lib/libblkid.so \
>> +	/usr/lib/libdns-9.16.22.so \
>> +	/usr/lib/libdnssec.so.7 \
>> +	/usr/lib/libdnssec.so.7.0.0 \
>> +	/usr/lib/libdns.so.* \
> 
> These should have been caught by the script as well. Any idea why that didn’t happen?
> 
>> +	/usr/lib/libevent-2.1.so.6 \
>> +	/usr/lib/libevent-2.1.so.6.0.2 \
>> +	/usr/lib/libevent_core-2.1.so.6 \
>> +	/usr/lib/libevent_core-2.1.so.6.0.2 \
>> +	/usr/lib/libevent_extra-2.1.so.6 \
>> +	/usr/lib/libevent_extra-2.1.so.6.0.2 \
>> +	/usr/lib/libevent_openssl-2.1.so.6 \
>> +	/usr/lib/libevent_openssl-2.1.so.6.0.2 \
>> +	/usr/lib/libevent_openssl.so \
>> +	/usr/lib/libevent_pthreads-2.1.so.6 \
>> +	/usr/lib/libevent_pthreads-2.1.so.6.0.2 \
>> +	/usr/lib/libevent_pthreads.so \
>> +	/usr/lib/libexpat.so \
>> +	/usr/lib/libexslt.so \
>> +	/usr/lib/libffi.so.6 \
>> +	/usr/lib/libffi.so.6.0.4 \
>> +	/usr/lib/libffi.so.7 \
>> +	/usr/lib/libffi.so.7.1.0 \
>> +	/usr/lib/libfuse.so \
>> +	/usr/lib/libfuse.so.2 \
>> +	/usr/lib/libfuse.so.2.9.7 \
>> +	/usr/lib/libgdbm_compat.so \
>> +	/usr/lib/libgdbm_compat.so.3 \
>> +	/usr/lib/libgdbm_compat.so.3.0.0 \
>> +	/usr/lib/libgdbm.so \
>> +	/usr/lib/libgdbm.so.3 \
>> +	/usr/lib/libgdbm.so.3.0.0 \
>> +	/usr/lib/libgd.so \
>> +	/usr/lib/libgd.so.2 \
>> +	/usr/lib/libgd.so.2.0.0 \
>> +	/usr/lib/libgettextlib-0.19.8.1.so \
>> +	/usr/lib/libgettextsrc-0.19.8.1.so \
>> +	/usr/lib/libhistory.so.6 \
>> +	/usr/lib/libhistory.so.6.3 \
>> +	/usr/lib/libhogweed.so.5 \
>> +	/usr/lib/libhogweed.so.5.0 \
>> +	/usr/lib/libidn.so \
>> +	/usr/lib/libidn.so.11 \
>> +	/usr/lib/libidn.so.11.6.18 \
>> +	/usr/lib/libirs-9.16.22.so \
>> +	/usr/lib/libisc-9.16.22.so \
>> +	/usr/lib/libisccc-9.16.22.so \
>> +	/usr/lib/libisccc.so.161 \
>> +	/usr/lib/libisccc.so.161.0.1 \
>> +	/usr/lib/libisccfg-9.16.22.so \
>> +	/usr/lib/libisccfg.so.163 \
>> +	/usr/lib/libisccfg.so.163.0.8 \
>> +	/usr/lib/libisc.so.1100 \
>> +	/usr/lib/libisc.so.1100.3.2 \
>> +	/usr/lib/libisc.so.1104 \
>> +	/usr/lib/libisc.so.1104.0.0 \
>> +	/usr/lib/libisc.so.1105 \
>> +	/usr/lib/libisc.so.1105.1.1 \
>> +	/usr/lib/libisc.so.1107 \
>> +	/usr/lib/libisc.so.1107.0.5 \
> 
> See above.
> 
>> +	/usr/lib/libixml.so \
>> +	/usr/lib/libknot.so.10 \
>> +	/usr/lib/libknot.so.10.0.0 \
>> +	/usr/lib/libknot.so.11 \
>> +	/usr/lib/libknot.so.11.0.0 \
>> +	/usr/lib/libknot.so.9 \
>> +	/usr/lib/libknot.so.9.0.0 \
>> +	/usr/lib/liblber-2.3.so.0 \
>> +	/usr/lib/liblber-2.3.so.0.2.8 \
>> +	/usr/lib/libldap-2.3.so.0 \
>> +	/usr/lib/libldap-2.3.so.0.2.8 \
>> +	/usr/lib/libldap_r-2.3.so.0 \
>> +	/usr/lib/libldap_r-2.3.so.0.2.8 \
>> +	/usr/lib/libloc.so.0 \
>> +	/usr/lib/libloc.so.0.0.0 \
>> +	/usr/lib/liblua-5.3.so \
>> +	/usr/lib/liblua.so \
>> +	/usr/lib/liblwres.so.161 \
>> +	/usr/lib/liblwres.so.161.0.4 \
>> +	/usr/lib/libmpfr.so.4 \
>> +	/usr/lib/libmpfr.so.4.1.5 \
>> +	/usr/lib/libmpx.so.2 \
>> +	/usr/lib/libmpx.so.2.0.1 \
>> +	/usr/lib/libmpxwrappers.so.2 \
>> +	/usr/lib/libmpxwrappers.so.2.0.1 \
>> +	/usr/lib/libnettle.so.7 \
>> +	/usr/lib/libnettle.so.7.0 \
>> +	/usr/lib/libns-9.16.22.so \
>> +	/usr/lib/libopcodes-2.32.so \
>> +	/usr/lib/libopcodes-2.34.so \
>> +	/usr/lib/libopcodes-2.35.1.so \
>> +	/usr/lib/libpcre2-posix.so.2 \
>> +	/usr/lib/libpcre2-posix.so.2.0.3 \
>> +	/usr/lib/libpng12.so \
>> +	/usr/lib/libpng12.so.0 \
>> +	/usr/lib/libpng12.so.0.57.0 \
>> +	/usr/lib/libpng.so.3 \
>> +	/usr/lib/libpng.so.3.57.0 \
>> +	/usr/lib/libpoppler.so.100 \
>> +	/usr/lib/libpoppler.so.100.0.0 \
>> +	/usr/lib/libpoppler.so.110 \
>> +	/usr/lib/libpoppler.so.110.0.0 \
>> +	/usr/lib/libpoppler.so.111 \
>> +	/usr/lib/libpoppler.so.111.0.0 \
>> +	/usr/lib/libpoppler.so.66 \
>> +	/usr/lib/libpoppler.so.66.0.0 \
>> +	/usr/lib/libqpdf.so.17 \
>> +	/usr/lib/libqpdf.so.17.0.0 \
>> +	/usr/lib/libreadline.so.6 \
>> +	/usr/lib/libreadline.so.6.3 \
>> +	/usr/lib/libsensors.so.4 \
>> +	/usr/lib/libsensors.so.4.4.0 \
>> +	/usr/lib/libsqlite3.so \
>> +	/usr/lib/libthreadutil.so \
>> +	/usr/lib/libthreadutil.so.6 \
>> +	/usr/lib/libthreadutil.so.6.0.3 \
>> +	/usr/lib/libulockmgr.so \
>> +	/usr/lib/libulockmgr.so.1 \
>> +	/usr/lib/libulockmgr.so.1.0.1 \
>> +	/usr/lib/libupnp.so \
>> +	/usr/lib/libuuid.so \
>> +	/usr/lib/libxml2.so \
>> +	/usr/lib/libxslt.so \
>> +	/usr/lib/pango \
>> +	/usr/lib/perl5/site_perl/5.30.0 \
>> +	/usr/lib/perl5/site_perl/5.32.1/Net/IP.pm \
>> +	/usr/lib/python3.8/ensurepip/_bundled/pip-19.2.3-py2.py3-none-any.whl \
>> +	/usr/lib/python3.8/idlelib/Icons/idle.icns \
>> +	/usr/lib/python3.8/lib2to3/Grammar3.8.1.final.0.pickle \
>> +	/usr/lib/python3.8/lib2to3/PatternGrammar3.8.1.final.0.pickle \
> 
> Why can we not delete /usr/lib/python3.8 as a whole? This should not be needed any more.

Yes, good point. I was running the comparison based on Core Update 164, but with
Python being updated to 3.10.x in Core Update 165, this folder won't be necessary
anymore completely.

> 
>> +	/usr/lib/sqlite3.34.0 \
>> +	/usr/lib/squid/basic_nis_auth \
>> +	/usr/lib/squid/ext_time_quota_acl \
>> +	/usr/lib/tcl8/8.4/platform-1.0.14.tm \
>> +	/usr/lib/tcl8/8.4/platform-1.0.15.tm \
>> +	/usr/lib/tcl8/8.5/msgcat-1.6.0.tm \
>> +	/usr/lib/tcl8/8.5/tcltest-2.4.0.tm \
>> +	/usr/lib/tcl8/8.6/http-2.8.9.tm \
>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.0.4.tm \
>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm \
> 
> Why do we even ship tcl? Is anything reliant on this?

I don't know.

>> +	/usr/lib/tdbc1.1.2 \
>> +	/usr/lib/tdbcmysql1.1.2 \
>> +	/usr/lib/tdbcodbc1.1.2 \
>> +	/usr/lib/tdbcpostgres1.1.2 \
>> +	/usr/lib/thread2.8.6 \
>> +	/usr/libexec/xtables-addons \
>> 	/usr/local/bin/ovpn-ccd-convert \
>> -	/usr/local/bin/rebuild-initrd
>> +	/usr/local/bin/rebuild-initrd \
>> +	/usr/local/bin/xt_geoip_build \
>> +	/usr/local/bin/xt_geoip_update \
>> +	/usr/sbin/batctl \
>> +	/usr/sbin/fbset \
>> +	/usr/sbin/update-usbids.sh \
>> +	/usr/sbin/uuidd \
>> +	/usr/share/doc/fireinfo \
>> +	/usr/share/GeoIP \
>> +	/usr/share/zoneinfo/posix/US/Pacific-New \
>> +	/usr/share/zoneinfo/right/US/Pacific-New \
>> +	/usr/share/zoneinfo/US/Pacific-New \
>> +	/var/lib/GeoIP
> 
> What method did you use to identify all these files?

On the IPFire installation in question, I ran

> find bin/ etc/ lib/ opt/ run/ sbin/ srv/ usr/ var/ | sort > ~/ist

and scp'ed that file onto my workstation. Then, I downloaded the ISO for Core Update 164
(because I wanted to have something stable, which is why I did not choose C165 for this),
installed it in a VM, rebooted it, mounted the root partition and executed the same find
command with a different file name.

A

> diff -Naur soll ist | less

(sorry for the German) outputs a long list, which I vetted manually since some add-ons
were installed on the productive system, and I did not want to pipe the output into the
rm command blindly.

Thanks, and best regards,
Peter Müller

> 
> -Michael
> 
>>
>> # Delete old 2007 Pakfire key from GPG keyring
>> export GNUPGHOME="/opt/pakfire/etc/.gnupg"
>> -- 
>> 2.34.1
>
  
Michael Tremer March 21, 2022, 4:06 p.m. UTC | #4
Hello,

> On 21 Mar 2022, at 16:03, Peter Müller <peter.mueller@ipfire.org> wrote:
> 
> Hello Michael,
> 
> thanks for your reply.
> 
>> Hello,
>> 
>> This is interesting.
> 
> That's a mild way of putting it, I think. :-)
> 
>> 
>>> On 21 Mar 2022, at 15:35, Peter Müller <peter.mueller@ipfire.org> wrote:
>>> 
>>> On an IPFire installation that has been around since Core Update 110
>>> (released April 28, 2017), these files have been identified as being
>>> orphaned, comparing to a fresh installation of Core Update 164.
>>> 
>>> To avoid such a list of files agglomerating, persons responsible for a
>>> Core Update should check whether an updated package contains deleted
>>> files in its rootfile. If so, they should be deleted on existing systems
>>> via update.sh as well.
>>> 
>>> Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
>>> ---
>>> config/rootfiles/core/166/update.sh | 260 +++++++++++++++++++++++++++-
>>> 1 file changed, 258 insertions(+), 2 deletions(-)
>>> 
>>> diff --git a/config/rootfiles/core/166/update.sh b/config/rootfiles/core/166/update.sh
>>> index 1370555b0..b556986a5 100644
>>> --- a/config/rootfiles/core/166/update.sh
>>> +++ b/config/rootfiles/core/166/update.sh
>>> @@ -32,13 +32,269 @@ for (( i=1; i<=$core; i++ )); do
>>> done
>>> 
>>> # Remove files
>>> -rm -vf \
>>> +rm -rvf \
>>> +	/bin/setserial \
>>> 	/etc/dracut.conf \
>>> +	/etc/fonts/conf.d/30-urw-aliases.conf \
>>> +	/etc/grub.d/README \
>>> +	/etc/rc.d/init.d/networking/red.up/99-geoip-database \
>>> +	/etc/udev/rules.d/99-fuse.rules \
>>> +	/lib/firmware/amd-ucode/microcode_amd.bin.asc \
>>> +	/lib/firmware/amd-ucode/microcode_amd_fam15h.bin.asc \
>>> +	/lib/firmware/amd-ucode/microcode_amd_fam16h.bin.asc \
>>> +	/lib/firmware/amd-ucode/microcode_amd_fam17h.bin.asc \
>>> +	/lib/firmware/ath10k/QCA4019/hw1.0/notice_ath10k_firmware-5.txt \
>>> +	/lib/firmware/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt \
>>> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt \
>>> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt \
>>> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt \
>>> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt \
>>> +	/lib/firmware/ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt \
>>> +	/lib/firmware/ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt \
>>> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt \
>>> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt \
>>> +	/lib/firmware/ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt \
>>> +	/lib/firmware/ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt \
>>> +	/lib/firmware/atusb/ChangeLog \
>>> +	/lib/firmware/check_whence.py \
>>> +	/lib/firmware/cis/src \
>>> +	/lib/firmware/copy-firmware.sh \
>>> +	/lib/firmware/cxgb4/t4fw-1.20.8.0.bin \
>>> +	/lib/firmware/cxgb4/t4fw-1.24.3.0.bin \
>>> +	/lib/firmware/cxgb4/t5fw-1.20.8.0.bin \
>>> +	/lib/firmware/cxgb4/t5fw-1.24.3.0.bin \
>>> +	/lib/firmware/cxgb4/t6fw-1.20.8.0.bin \
>>> +	/lib/firmware/cxgb4/t6fw-1.24.3.0.bin \
>>> +	/lib/firmware/GPL-2 \
>>> +	/lib/firmware/GPL-3 \
>>> +	/lib/firmware/isci/README \
>>> +	/lib/firmware/LICENCE.* \
>>> +	/lib/firmware/Makefile \
>>> +	/lib/firmware/qca/NOTICE.txt \
>>> +	/lib/firmware/qcom/NOTICE.txt \
>>> +	/lib/firmware/README \
>>> +	/lib/firmware/WHENCE \
>>> +	/lib/kbd/keymaps/i386/qwerty/fi-latin1.map.gz \
>>> +	/lib/kbd/keymaps/i386/qwerty/fi-latin9.map.gz \
>>> +	/lib/ld-2.29.so \
>>> +	/lib/ld-2.31.so \
>>> +	/lib/ld-2.32.so \
>> 
>> These should have been gone before. Ideally by the filesystem cleanup script.
> 
> To be honest, I never had a look at this script, and therefore do not have an idea
> what it does and what it does not. I will investigate and get back to you, if necessary.
> 
>>> +	/lib/libcap.so \
>>> +	/lib/libhistory.so.5 \
>>> +	/lib/libhistory.so.5.2 \
>>> +	/lib/libip4tc.so.0 \
>>> +	/lib/libip4tc.so.0.1.0 \
>>> +	/lib/libip6tc.so.0 \
>>> +	/lib/libip6tc.so.0.1.0 \
>>> +	/lib/libiptc.so \
>>> +	/lib/libiptc.so.0 \
>>> +	/lib/libiptc.so.0.0.0 \
>>> +	/lib/libnss_nis-2.31.so \
>>> +	/lib/libnss_nisplus-2.31.so \
>>> +	/lib/libnss_nisplus.so.2 \
>>> +	/lib/libnss_nis.so.2 \
>>> +	/lib/libproc-3.2.8.so \
>>> +	/lib/libreadline.so.5 \
>>> +	/lib/libreadline.so.5.2 \
>>> +	/lib/libsysfs.so \
>>> +	/lib/libsysfs.so.1 \
>>> +	/lib/libsysfs.so.1.0.3 \
>>> +	/lib/udev/bluetooth_serial \
>>> +	/lib/udev/rules.d/24-bluetooth.rules \
>>> +	/lib/xtables/libxt_IMQ.so \
>>> 	/opt/pakfire/pakfire-2007.key \
>>> +	/sbin/mount.fuse \
>>> +	/sbin/raw \
>>> +	/sbin/xfs_scrub \
>>> +	/sbin/xfs_scrub_all \
>>> +	/srv/web/ipfire/cgi-bin/bluetooth.cgi \
>>> +	/usr/bin/ez-ipupdate \
>> 
>> LOL
> 
> ?
> 
>> 
>>> +	/usr/bin/fusermount \
>>> +	/usr/bin/gawk-5.1.0 \
>>> +	/usr/bin/gcov-dump \
>>> +	/usr/bin/getunimap \
>>> 	/usr/bin/mkinitrd \
>>> +	/usr/bin/mtools \
>>> +	/usr/bin/pango-querymodules \
>>> +	/usr/bin/perl5.30.0 \
>>> +	/usr/bin/setlogcons \
>>> +	/usr/bin/setvesablank \
>>> +	/usr/bin/ulockmgr_server \
>>> +	/usr/include/python2.7 \
>>> +	/usr/lib/cairo \
>>> 	/usr/lib/dracut \
>>> +	/usr/lib/findutils/bigram \
>>> +	/usr/lib/findutils/code \
>>> +	/usr/lib/gawk/testext.so \
>>> +	/usr/lib/itcl4.2.1 \
>>> +	/usr/lib/libasan.so.5 \
>>> +	/usr/lib/libasan.so.5.0.0 \
>>> +	/usr/lib/libbfd-2.32.so \
>>> +	/usr/lib/libbfd-2.34.so \
>>> +	/usr/lib/libbfd-2.35.1.so \
>>> +	/usr/lib/libbind9-9.16.22.so \
>>> +	/usr/lib/libbind9.so.161 \
>>> +	/usr/lib/libbind9.so.161.0.4 \
>>> +	/usr/lib/libblkid.so \
>>> +	/usr/lib/libdns-9.16.22.so \
>>> +	/usr/lib/libdnssec.so.7 \
>>> +	/usr/lib/libdnssec.so.7.0.0 \
>>> +	/usr/lib/libdns.so.* \
>> 
>> These should have been caught by the script as well. Any idea why that didn’t happen?
>> 
>>> +	/usr/lib/libevent-2.1.so.6 \
>>> +	/usr/lib/libevent-2.1.so.6.0.2 \
>>> +	/usr/lib/libevent_core-2.1.so.6 \
>>> +	/usr/lib/libevent_core-2.1.so.6.0.2 \
>>> +	/usr/lib/libevent_extra-2.1.so.6 \
>>> +	/usr/lib/libevent_extra-2.1.so.6.0.2 \
>>> +	/usr/lib/libevent_openssl-2.1.so.6 \
>>> +	/usr/lib/libevent_openssl-2.1.so.6.0.2 \
>>> +	/usr/lib/libevent_openssl.so \
>>> +	/usr/lib/libevent_pthreads-2.1.so.6 \
>>> +	/usr/lib/libevent_pthreads-2.1.so.6.0.2 \
>>> +	/usr/lib/libevent_pthreads.so \
>>> +	/usr/lib/libexpat.so \
>>> +	/usr/lib/libexslt.so \
>>> +	/usr/lib/libffi.so.6 \
>>> +	/usr/lib/libffi.so.6.0.4 \
>>> +	/usr/lib/libffi.so.7 \
>>> +	/usr/lib/libffi.so.7.1.0 \
>>> +	/usr/lib/libfuse.so \
>>> +	/usr/lib/libfuse.so.2 \
>>> +	/usr/lib/libfuse.so.2.9.7 \
>>> +	/usr/lib/libgdbm_compat.so \
>>> +	/usr/lib/libgdbm_compat.so.3 \
>>> +	/usr/lib/libgdbm_compat.so.3.0.0 \
>>> +	/usr/lib/libgdbm.so \
>>> +	/usr/lib/libgdbm.so.3 \
>>> +	/usr/lib/libgdbm.so.3.0.0 \
>>> +	/usr/lib/libgd.so \
>>> +	/usr/lib/libgd.so.2 \
>>> +	/usr/lib/libgd.so.2.0.0 \
>>> +	/usr/lib/libgettextlib-0.19.8.1.so \
>>> +	/usr/lib/libgettextsrc-0.19.8.1.so \
>>> +	/usr/lib/libhistory.so.6 \
>>> +	/usr/lib/libhistory.so.6.3 \
>>> +	/usr/lib/libhogweed.so.5 \
>>> +	/usr/lib/libhogweed.so.5.0 \
>>> +	/usr/lib/libidn.so \
>>> +	/usr/lib/libidn.so.11 \
>>> +	/usr/lib/libidn.so.11.6.18 \
>>> +	/usr/lib/libirs-9.16.22.so \
>>> +	/usr/lib/libisc-9.16.22.so \
>>> +	/usr/lib/libisccc-9.16.22.so \
>>> +	/usr/lib/libisccc.so.161 \
>>> +	/usr/lib/libisccc.so.161.0.1 \
>>> +	/usr/lib/libisccfg-9.16.22.so \
>>> +	/usr/lib/libisccfg.so.163 \
>>> +	/usr/lib/libisccfg.so.163.0.8 \
>>> +	/usr/lib/libisc.so.1100 \
>>> +	/usr/lib/libisc.so.1100.3.2 \
>>> +	/usr/lib/libisc.so.1104 \
>>> +	/usr/lib/libisc.so.1104.0.0 \
>>> +	/usr/lib/libisc.so.1105 \
>>> +	/usr/lib/libisc.so.1105.1.1 \
>>> +	/usr/lib/libisc.so.1107 \
>>> +	/usr/lib/libisc.so.1107.0.5 \
>> 
>> See above.
>> 
>>> +	/usr/lib/libixml.so \
>>> +	/usr/lib/libknot.so.10 \
>>> +	/usr/lib/libknot.so.10.0.0 \
>>> +	/usr/lib/libknot.so.11 \
>>> +	/usr/lib/libknot.so.11.0.0 \
>>> +	/usr/lib/libknot.so.9 \
>>> +	/usr/lib/libknot.so.9.0.0 \
>>> +	/usr/lib/liblber-2.3.so.0 \
>>> +	/usr/lib/liblber-2.3.so.0.2.8 \
>>> +	/usr/lib/libldap-2.3.so.0 \
>>> +	/usr/lib/libldap-2.3.so.0.2.8 \
>>> +	/usr/lib/libldap_r-2.3.so.0 \
>>> +	/usr/lib/libldap_r-2.3.so.0.2.8 \
>>> +	/usr/lib/libloc.so.0 \
>>> +	/usr/lib/libloc.so.0.0.0 \
>>> +	/usr/lib/liblua-5.3.so \
>>> +	/usr/lib/liblua.so \
>>> +	/usr/lib/liblwres.so.161 \
>>> +	/usr/lib/liblwres.so.161.0.4 \
>>> +	/usr/lib/libmpfr.so.4 \
>>> +	/usr/lib/libmpfr.so.4.1.5 \
>>> +	/usr/lib/libmpx.so.2 \
>>> +	/usr/lib/libmpx.so.2.0.1 \
>>> +	/usr/lib/libmpxwrappers.so.2 \
>>> +	/usr/lib/libmpxwrappers.so.2.0.1 \
>>> +	/usr/lib/libnettle.so.7 \
>>> +	/usr/lib/libnettle.so.7.0 \
>>> +	/usr/lib/libns-9.16.22.so \
>>> +	/usr/lib/libopcodes-2.32.so \
>>> +	/usr/lib/libopcodes-2.34.so \
>>> +	/usr/lib/libopcodes-2.35.1.so \
>>> +	/usr/lib/libpcre2-posix.so.2 \
>>> +	/usr/lib/libpcre2-posix.so.2.0.3 \
>>> +	/usr/lib/libpng12.so \
>>> +	/usr/lib/libpng12.so.0 \
>>> +	/usr/lib/libpng12.so.0.57.0 \
>>> +	/usr/lib/libpng.so.3 \
>>> +	/usr/lib/libpng.so.3.57.0 \
>>> +	/usr/lib/libpoppler.so.100 \
>>> +	/usr/lib/libpoppler.so.100.0.0 \
>>> +	/usr/lib/libpoppler.so.110 \
>>> +	/usr/lib/libpoppler.so.110.0.0 \
>>> +	/usr/lib/libpoppler.so.111 \
>>> +	/usr/lib/libpoppler.so.111.0.0 \
>>> +	/usr/lib/libpoppler.so.66 \
>>> +	/usr/lib/libpoppler.so.66.0.0 \
>>> +	/usr/lib/libqpdf.so.17 \
>>> +	/usr/lib/libqpdf.so.17.0.0 \
>>> +	/usr/lib/libreadline.so.6 \
>>> +	/usr/lib/libreadline.so.6.3 \
>>> +	/usr/lib/libsensors.so.4 \
>>> +	/usr/lib/libsensors.so.4.4.0 \
>>> +	/usr/lib/libsqlite3.so \
>>> +	/usr/lib/libthreadutil.so \
>>> +	/usr/lib/libthreadutil.so.6 \
>>> +	/usr/lib/libthreadutil.so.6.0.3 \
>>> +	/usr/lib/libulockmgr.so \
>>> +	/usr/lib/libulockmgr.so.1 \
>>> +	/usr/lib/libulockmgr.so.1.0.1 \
>>> +	/usr/lib/libupnp.so \
>>> +	/usr/lib/libuuid.so \
>>> +	/usr/lib/libxml2.so \
>>> +	/usr/lib/libxslt.so \
>>> +	/usr/lib/pango \
>>> +	/usr/lib/perl5/site_perl/5.30.0 \
>>> +	/usr/lib/perl5/site_perl/5.32.1/Net/IP.pm \
>>> +	/usr/lib/python3.8/ensurepip/_bundled/pip-19.2.3-py2.py3-none-any.whl \
>>> +	/usr/lib/python3.8/idlelib/Icons/idle.icns \
>>> +	/usr/lib/python3.8/lib2to3/Grammar3.8.1.final.0.pickle \
>>> +	/usr/lib/python3.8/lib2to3/PatternGrammar3.8.1.final.0.pickle \
>> 
>> Why can we not delete /usr/lib/python3.8 as a whole? This should not be needed any more.
> 
> Yes, good point. I was running the comparison based on Core Update 164, but with
> Python being updated to 3.10.x in Core Update 165, this folder won't be necessary
> anymore completely.
> 
>> 
>>> +	/usr/lib/sqlite3.34.0 \
>>> +	/usr/lib/squid/basic_nis_auth \
>>> +	/usr/lib/squid/ext_time_quota_acl \
>>> +	/usr/lib/tcl8/8.4/platform-1.0.14.tm \
>>> +	/usr/lib/tcl8/8.4/platform-1.0.15.tm \
>>> +	/usr/lib/tcl8/8.5/msgcat-1.6.0.tm \
>>> +	/usr/lib/tcl8/8.5/tcltest-2.4.0.tm \
>>> +	/usr/lib/tcl8/8.6/http-2.8.9.tm \
>>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.0.4.tm \
>>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm \
>> 
>> Why do we even ship tcl? Is anything reliant on this?
> 
> I don't know.
> 
>>> +	/usr/lib/tdbc1.1.2 \
>>> +	/usr/lib/tdbcmysql1.1.2 \
>>> +	/usr/lib/tdbcodbc1.1.2 \
>>> +	/usr/lib/tdbcpostgres1.1.2 \
>>> +	/usr/lib/thread2.8.6 \
>>> +	/usr/libexec/xtables-addons \
>>> 	/usr/local/bin/ovpn-ccd-convert \
>>> -	/usr/local/bin/rebuild-initrd
>>> +	/usr/local/bin/rebuild-initrd \
>>> +	/usr/local/bin/xt_geoip_build \
>>> +	/usr/local/bin/xt_geoip_update \
>>> +	/usr/sbin/batctl \
>>> +	/usr/sbin/fbset \
>>> +	/usr/sbin/update-usbids.sh \
>>> +	/usr/sbin/uuidd \
>>> +	/usr/share/doc/fireinfo \
>>> +	/usr/share/GeoIP \
>>> +	/usr/share/zoneinfo/posix/US/Pacific-New \
>>> +	/usr/share/zoneinfo/right/US/Pacific-New \
>>> +	/usr/share/zoneinfo/US/Pacific-New \
>>> +	/var/lib/GeoIP
>> 
>> What method did you use to identify all these files?
> 
> On the IPFire installation in question, I ran
> 
>> find bin/ etc/ lib/ opt/ run/ sbin/ srv/ usr/ var/ | sort > ~/ist
> 
> and scp'ed that file onto my workstation. Then, I downloaded the ISO for Core Update 164
> (because I wanted to have something stable, which is why I did not choose C165 for this),
> installed it in a VM, rebooted it, mounted the root partition and executed the same find
> command with a different file name.

Okay, so this is based on a random system. Not bad, but would be better if we could diff two filelists from two core updates, wouldn’t it?

> 
> A
> 
>> diff -Naur soll ist | less
> 
> (sorry for the German) outputs a long list, which I vetted manually since some add-ons
> were installed on the productive system, and I did not want to pipe the output into the
> rm command blindly.
> 
> Thanks, and best regards,
> Peter Müller
> 
>> 
>> -Michael
>> 
>>> 
>>> # Delete old 2007 Pakfire key from GPG keyring
>>> export GNUPGHOME="/opt/pakfire/etc/.gnupg"
>>> -- 
>>> 2.34.1
  
Peter Müller March 21, 2022, 7:15 p.m. UTC | #5
Hello Michael,

thanks for your reply.

> Hello,
> 
>> On 21 Mar 2022, at 16:03, Peter Müller <peter.mueller@ipfire.org> wrote:
>>
>> Hello Michael,
>>
>> thanks for your reply.
>>
>>> Hello,
>>>
>>> This is interesting.
>>
>> That's a mild way of putting it, I think. :-)
>>
>>>
>>>> On 21 Mar 2022, at 15:35, Peter Müller <peter.mueller@ipfire.org> wrote:
>>>>
>>>> On an IPFire installation that has been around since Core Update 110
>>>> (released April 28, 2017), these files have been identified as being
>>>> orphaned, comparing to a fresh installation of Core Update 164.
>>>>
>>>> To avoid such a list of files agglomerating, persons responsible for a
>>>> Core Update should check whether an updated package contains deleted
>>>> files in its rootfile. If so, they should be deleted on existing systems
>>>> via update.sh as well.
>>>>
>>>> Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
>>>> ---
>>>> config/rootfiles/core/166/update.sh | 260 +++++++++++++++++++++++++++-
>>>> 1 file changed, 258 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/config/rootfiles/core/166/update.sh b/config/rootfiles/core/166/update.sh
>>>> index 1370555b0..b556986a5 100644
>>>> --- a/config/rootfiles/core/166/update.sh
>>>> +++ b/config/rootfiles/core/166/update.sh
>>>> @@ -32,13 +32,269 @@ for (( i=1; i<=$core; i++ )); do
>>>> done
>>>>
>>>> # Remove files
>>>> -rm -vf \
>>>> +rm -rvf \
>>>> +	/bin/setserial \
>>>> 	/etc/dracut.conf \
>>>> +	/etc/fonts/conf.d/30-urw-aliases.conf \
>>>> +	/etc/grub.d/README \
>>>> +	/etc/rc.d/init.d/networking/red.up/99-geoip-database \
>>>> +	/etc/udev/rules.d/99-fuse.rules \
>>>> +	/lib/firmware/amd-ucode/microcode_amd.bin.asc \
>>>> +	/lib/firmware/amd-ucode/microcode_amd_fam15h.bin.asc \
>>>> +	/lib/firmware/amd-ucode/microcode_amd_fam16h.bin.asc \
>>>> +	/lib/firmware/amd-ucode/microcode_amd_fam17h.bin.asc \
>>>> +	/lib/firmware/ath10k/QCA4019/hw1.0/notice_ath10k_firmware-5.txt \
>>>> +	/lib/firmware/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt \
>>>> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt \
>>>> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt \
>>>> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt \
>>>> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt \
>>>> +	/lib/firmware/ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt \
>>>> +	/lib/firmware/ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt \
>>>> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt \
>>>> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt \
>>>> +	/lib/firmware/ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt \
>>>> +	/lib/firmware/ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt \
>>>> +	/lib/firmware/atusb/ChangeLog \
>>>> +	/lib/firmware/check_whence.py \
>>>> +	/lib/firmware/cis/src \
>>>> +	/lib/firmware/copy-firmware.sh \
>>>> +	/lib/firmware/cxgb4/t4fw-1.20.8.0.bin \
>>>> +	/lib/firmware/cxgb4/t4fw-1.24.3.0.bin \
>>>> +	/lib/firmware/cxgb4/t5fw-1.20.8.0.bin \
>>>> +	/lib/firmware/cxgb4/t5fw-1.24.3.0.bin \
>>>> +	/lib/firmware/cxgb4/t6fw-1.20.8.0.bin \
>>>> +	/lib/firmware/cxgb4/t6fw-1.24.3.0.bin \
>>>> +	/lib/firmware/GPL-2 \
>>>> +	/lib/firmware/GPL-3 \
>>>> +	/lib/firmware/isci/README \
>>>> +	/lib/firmware/LICENCE.* \
>>>> +	/lib/firmware/Makefile \
>>>> +	/lib/firmware/qca/NOTICE.txt \
>>>> +	/lib/firmware/qcom/NOTICE.txt \
>>>> +	/lib/firmware/README \
>>>> +	/lib/firmware/WHENCE \
>>>> +	/lib/kbd/keymaps/i386/qwerty/fi-latin1.map.gz \
>>>> +	/lib/kbd/keymaps/i386/qwerty/fi-latin9.map.gz \
>>>> +	/lib/ld-2.29.so \
>>>> +	/lib/ld-2.31.so \
>>>> +	/lib/ld-2.32.so \
>>>
>>> These should have been gone before. Ideally by the filesystem cleanup script.
>>
>> To be honest, I never had a look at this script, and therefore do not have an idea
>> what it does and what it does not. I will investigate and get back to you, if necessary.
>>
>>>> +	/lib/libcap.so \
>>>> +	/lib/libhistory.so.5 \
>>>> +	/lib/libhistory.so.5.2 \
>>>> +	/lib/libip4tc.so.0 \
>>>> +	/lib/libip4tc.so.0.1.0 \
>>>> +	/lib/libip6tc.so.0 \
>>>> +	/lib/libip6tc.so.0.1.0 \
>>>> +	/lib/libiptc.so \
>>>> +	/lib/libiptc.so.0 \
>>>> +	/lib/libiptc.so.0.0.0 \
>>>> +	/lib/libnss_nis-2.31.so \
>>>> +	/lib/libnss_nisplus-2.31.so \
>>>> +	/lib/libnss_nisplus.so.2 \
>>>> +	/lib/libnss_nis.so.2 \
>>>> +	/lib/libproc-3.2.8.so \
>>>> +	/lib/libreadline.so.5 \
>>>> +	/lib/libreadline.so.5.2 \
>>>> +	/lib/libsysfs.so \
>>>> +	/lib/libsysfs.so.1 \
>>>> +	/lib/libsysfs.so.1.0.3 \
>>>> +	/lib/udev/bluetooth_serial \
>>>> +	/lib/udev/rules.d/24-bluetooth.rules \
>>>> +	/lib/xtables/libxt_IMQ.so \
>>>> 	/opt/pakfire/pakfire-2007.key \
>>>> +	/sbin/mount.fuse \
>>>> +	/sbin/raw \
>>>> +	/sbin/xfs_scrub \
>>>> +	/sbin/xfs_scrub_all \
>>>> +	/srv/web/ipfire/cgi-bin/bluetooth.cgi \
>>>> +	/usr/bin/ez-ipupdate \
>>>
>>> LOL
>>
>> ?
>>
>>>
>>>> +	/usr/bin/fusermount \
>>>> +	/usr/bin/gawk-5.1.0 \
>>>> +	/usr/bin/gcov-dump \
>>>> +	/usr/bin/getunimap \
>>>> 	/usr/bin/mkinitrd \
>>>> +	/usr/bin/mtools \
>>>> +	/usr/bin/pango-querymodules \
>>>> +	/usr/bin/perl5.30.0 \
>>>> +	/usr/bin/setlogcons \
>>>> +	/usr/bin/setvesablank \
>>>> +	/usr/bin/ulockmgr_server \
>>>> +	/usr/include/python2.7 \
>>>> +	/usr/lib/cairo \
>>>> 	/usr/lib/dracut \
>>>> +	/usr/lib/findutils/bigram \
>>>> +	/usr/lib/findutils/code \
>>>> +	/usr/lib/gawk/testext.so \
>>>> +	/usr/lib/itcl4.2.1 \
>>>> +	/usr/lib/libasan.so.5 \
>>>> +	/usr/lib/libasan.so.5.0.0 \
>>>> +	/usr/lib/libbfd-2.32.so \
>>>> +	/usr/lib/libbfd-2.34.so \
>>>> +	/usr/lib/libbfd-2.35.1.so \
>>>> +	/usr/lib/libbind9-9.16.22.so \
>>>> +	/usr/lib/libbind9.so.161 \
>>>> +	/usr/lib/libbind9.so.161.0.4 \
>>>> +	/usr/lib/libblkid.so \
>>>> +	/usr/lib/libdns-9.16.22.so \
>>>> +	/usr/lib/libdnssec.so.7 \
>>>> +	/usr/lib/libdnssec.so.7.0.0 \
>>>> +	/usr/lib/libdns.so.* \
>>>
>>> These should have been caught by the script as well. Any idea why that didn’t happen?
>>>
>>>> +	/usr/lib/libevent-2.1.so.6 \
>>>> +	/usr/lib/libevent-2.1.so.6.0.2 \
>>>> +	/usr/lib/libevent_core-2.1.so.6 \
>>>> +	/usr/lib/libevent_core-2.1.so.6.0.2 \
>>>> +	/usr/lib/libevent_extra-2.1.so.6 \
>>>> +	/usr/lib/libevent_extra-2.1.so.6.0.2 \
>>>> +	/usr/lib/libevent_openssl-2.1.so.6 \
>>>> +	/usr/lib/libevent_openssl-2.1.so.6.0.2 \
>>>> +	/usr/lib/libevent_openssl.so \
>>>> +	/usr/lib/libevent_pthreads-2.1.so.6 \
>>>> +	/usr/lib/libevent_pthreads-2.1.so.6.0.2 \
>>>> +	/usr/lib/libevent_pthreads.so \
>>>> +	/usr/lib/libexpat.so \
>>>> +	/usr/lib/libexslt.so \
>>>> +	/usr/lib/libffi.so.6 \
>>>> +	/usr/lib/libffi.so.6.0.4 \
>>>> +	/usr/lib/libffi.so.7 \
>>>> +	/usr/lib/libffi.so.7.1.0 \
>>>> +	/usr/lib/libfuse.so \
>>>> +	/usr/lib/libfuse.so.2 \
>>>> +	/usr/lib/libfuse.so.2.9.7 \
>>>> +	/usr/lib/libgdbm_compat.so \
>>>> +	/usr/lib/libgdbm_compat.so.3 \
>>>> +	/usr/lib/libgdbm_compat.so.3.0.0 \
>>>> +	/usr/lib/libgdbm.so \
>>>> +	/usr/lib/libgdbm.so.3 \
>>>> +	/usr/lib/libgdbm.so.3.0.0 \
>>>> +	/usr/lib/libgd.so \
>>>> +	/usr/lib/libgd.so.2 \
>>>> +	/usr/lib/libgd.so.2.0.0 \
>>>> +	/usr/lib/libgettextlib-0.19.8.1.so \
>>>> +	/usr/lib/libgettextsrc-0.19.8.1.so \
>>>> +	/usr/lib/libhistory.so.6 \
>>>> +	/usr/lib/libhistory.so.6.3 \
>>>> +	/usr/lib/libhogweed.so.5 \
>>>> +	/usr/lib/libhogweed.so.5.0 \
>>>> +	/usr/lib/libidn.so \
>>>> +	/usr/lib/libidn.so.11 \
>>>> +	/usr/lib/libidn.so.11.6.18 \
>>>> +	/usr/lib/libirs-9.16.22.so \
>>>> +	/usr/lib/libisc-9.16.22.so \
>>>> +	/usr/lib/libisccc-9.16.22.so \
>>>> +	/usr/lib/libisccc.so.161 \
>>>> +	/usr/lib/libisccc.so.161.0.1 \
>>>> +	/usr/lib/libisccfg-9.16.22.so \
>>>> +	/usr/lib/libisccfg.so.163 \
>>>> +	/usr/lib/libisccfg.so.163.0.8 \
>>>> +	/usr/lib/libisc.so.1100 \
>>>> +	/usr/lib/libisc.so.1100.3.2 \
>>>> +	/usr/lib/libisc.so.1104 \
>>>> +	/usr/lib/libisc.so.1104.0.0 \
>>>> +	/usr/lib/libisc.so.1105 \
>>>> +	/usr/lib/libisc.so.1105.1.1 \
>>>> +	/usr/lib/libisc.so.1107 \
>>>> +	/usr/lib/libisc.so.1107.0.5 \
>>>
>>> See above.
>>>
>>>> +	/usr/lib/libixml.so \
>>>> +	/usr/lib/libknot.so.10 \
>>>> +	/usr/lib/libknot.so.10.0.0 \
>>>> +	/usr/lib/libknot.so.11 \
>>>> +	/usr/lib/libknot.so.11.0.0 \
>>>> +	/usr/lib/libknot.so.9 \
>>>> +	/usr/lib/libknot.so.9.0.0 \
>>>> +	/usr/lib/liblber-2.3.so.0 \
>>>> +	/usr/lib/liblber-2.3.so.0.2.8 \
>>>> +	/usr/lib/libldap-2.3.so.0 \
>>>> +	/usr/lib/libldap-2.3.so.0.2.8 \
>>>> +	/usr/lib/libldap_r-2.3.so.0 \
>>>> +	/usr/lib/libldap_r-2.3.so.0.2.8 \
>>>> +	/usr/lib/libloc.so.0 \
>>>> +	/usr/lib/libloc.so.0.0.0 \
>>>> +	/usr/lib/liblua-5.3.so \
>>>> +	/usr/lib/liblua.so \
>>>> +	/usr/lib/liblwres.so.161 \
>>>> +	/usr/lib/liblwres.so.161.0.4 \
>>>> +	/usr/lib/libmpfr.so.4 \
>>>> +	/usr/lib/libmpfr.so.4.1.5 \
>>>> +	/usr/lib/libmpx.so.2 \
>>>> +	/usr/lib/libmpx.so.2.0.1 \
>>>> +	/usr/lib/libmpxwrappers.so.2 \
>>>> +	/usr/lib/libmpxwrappers.so.2.0.1 \
>>>> +	/usr/lib/libnettle.so.7 \
>>>> +	/usr/lib/libnettle.so.7.0 \
>>>> +	/usr/lib/libns-9.16.22.so \
>>>> +	/usr/lib/libopcodes-2.32.so \
>>>> +	/usr/lib/libopcodes-2.34.so \
>>>> +	/usr/lib/libopcodes-2.35.1.so \
>>>> +	/usr/lib/libpcre2-posix.so.2 \
>>>> +	/usr/lib/libpcre2-posix.so.2.0.3 \
>>>> +	/usr/lib/libpng12.so \
>>>> +	/usr/lib/libpng12.so.0 \
>>>> +	/usr/lib/libpng12.so.0.57.0 \
>>>> +	/usr/lib/libpng.so.3 \
>>>> +	/usr/lib/libpng.so.3.57.0 \
>>>> +	/usr/lib/libpoppler.so.100 \
>>>> +	/usr/lib/libpoppler.so.100.0.0 \
>>>> +	/usr/lib/libpoppler.so.110 \
>>>> +	/usr/lib/libpoppler.so.110.0.0 \
>>>> +	/usr/lib/libpoppler.so.111 \
>>>> +	/usr/lib/libpoppler.so.111.0.0 \
>>>> +	/usr/lib/libpoppler.so.66 \
>>>> +	/usr/lib/libpoppler.so.66.0.0 \
>>>> +	/usr/lib/libqpdf.so.17 \
>>>> +	/usr/lib/libqpdf.so.17.0.0 \
>>>> +	/usr/lib/libreadline.so.6 \
>>>> +	/usr/lib/libreadline.so.6.3 \
>>>> +	/usr/lib/libsensors.so.4 \
>>>> +	/usr/lib/libsensors.so.4.4.0 \
>>>> +	/usr/lib/libsqlite3.so \
>>>> +	/usr/lib/libthreadutil.so \
>>>> +	/usr/lib/libthreadutil.so.6 \
>>>> +	/usr/lib/libthreadutil.so.6.0.3 \
>>>> +	/usr/lib/libulockmgr.so \
>>>> +	/usr/lib/libulockmgr.so.1 \
>>>> +	/usr/lib/libulockmgr.so.1.0.1 \
>>>> +	/usr/lib/libupnp.so \
>>>> +	/usr/lib/libuuid.so \
>>>> +	/usr/lib/libxml2.so \
>>>> +	/usr/lib/libxslt.so \
>>>> +	/usr/lib/pango \
>>>> +	/usr/lib/perl5/site_perl/5.30.0 \
>>>> +	/usr/lib/perl5/site_perl/5.32.1/Net/IP.pm \
>>>> +	/usr/lib/python3.8/ensurepip/_bundled/pip-19.2.3-py2.py3-none-any.whl \
>>>> +	/usr/lib/python3.8/idlelib/Icons/idle.icns \
>>>> +	/usr/lib/python3.8/lib2to3/Grammar3.8.1.final.0.pickle \
>>>> +	/usr/lib/python3.8/lib2to3/PatternGrammar3.8.1.final.0.pickle \
>>>
>>> Why can we not delete /usr/lib/python3.8 as a whole? This should not be needed any more.
>>
>> Yes, good point. I was running the comparison based on Core Update 164, but with
>> Python being updated to 3.10.x in Core Update 165, this folder won't be necessary
>> anymore completely.
>>
>>>
>>>> +	/usr/lib/sqlite3.34.0 \
>>>> +	/usr/lib/squid/basic_nis_auth \
>>>> +	/usr/lib/squid/ext_time_quota_acl \
>>>> +	/usr/lib/tcl8/8.4/platform-1.0.14.tm \
>>>> +	/usr/lib/tcl8/8.4/platform-1.0.15.tm \
>>>> +	/usr/lib/tcl8/8.5/msgcat-1.6.0.tm \
>>>> +	/usr/lib/tcl8/8.5/tcltest-2.4.0.tm \
>>>> +	/usr/lib/tcl8/8.6/http-2.8.9.tm \
>>>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.0.4.tm \
>>>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm \
>>>
>>> Why do we even ship tcl? Is anything reliant on this?
>>
>> I don't know.
>>
>>>> +	/usr/lib/tdbc1.1.2 \
>>>> +	/usr/lib/tdbcmysql1.1.2 \
>>>> +	/usr/lib/tdbcodbc1.1.2 \
>>>> +	/usr/lib/tdbcpostgres1.1.2 \
>>>> +	/usr/lib/thread2.8.6 \
>>>> +	/usr/libexec/xtables-addons \
>>>> 	/usr/local/bin/ovpn-ccd-convert \
>>>> -	/usr/local/bin/rebuild-initrd
>>>> +	/usr/local/bin/rebuild-initrd \
>>>> +	/usr/local/bin/xt_geoip_build \
>>>> +	/usr/local/bin/xt_geoip_update \
>>>> +	/usr/sbin/batctl \
>>>> +	/usr/sbin/fbset \
>>>> +	/usr/sbin/update-usbids.sh \
>>>> +	/usr/sbin/uuidd \
>>>> +	/usr/share/doc/fireinfo \
>>>> +	/usr/share/GeoIP \
>>>> +	/usr/share/zoneinfo/posix/US/Pacific-New \
>>>> +	/usr/share/zoneinfo/right/US/Pacific-New \
>>>> +	/usr/share/zoneinfo/US/Pacific-New \
>>>> +	/var/lib/GeoIP
>>>
>>> What method did you use to identify all these files?
>>
>> On the IPFire installation in question, I ran
>>
>>> find bin/ etc/ lib/ opt/ run/ sbin/ srv/ usr/ var/ | sort > ~/ist
>>
>> and scp'ed that file onto my workstation. Then, I downloaded the ISO for Core Update 164
>> (because I wanted to have something stable, which is why I did not choose C165 for this),
>> installed it in a VM, rebooted it, mounted the root partition and executed the same find
>> command with a different file name.
> 
> Okay, so this is based on a random system. Not bad, but would be better if we could diff two filelists from two core updates, wouldn’t it?

I am not sure if I understood you here: The filelist above contains all leftovers that have
agglomerated since Core Update 110. Comparing two filelists would only cover a fraction of
it, since this comparison cannot skip any update.

However: Do you see a feasible way to obtain such lists, and perhaps scipt the generation of
such a list of orphaned files?

Thanks, and best regards,
Peter Müller

> 
>>
>> A
>>
>>> diff -Naur soll ist | less
>>
>> (sorry for the German) outputs a long list, which I vetted manually since some add-ons
>> were installed on the productive system, and I did not want to pipe the output into the
>> rm command blindly.
>>
>> Thanks, and best regards,
>> Peter Müller
>>
>>>
>>> -Michael
>>>
>>>>
>>>> # Delete old 2007 Pakfire key from GPG keyring
>>>> export GNUPGHOME="/opt/pakfire/etc/.gnupg"
>>>> -- 
>>>> 2.34.1
>
  
Michael Tremer March 21, 2022, 7:20 p.m. UTC | #6
Hello,

> On 21 Mar 2022, at 19:15, Peter Müller <peter.mueller@ipfire.org> wrote:
> 
> Hello Michael,
> 
> thanks for your reply.
> 
>> Hello,
>> 
>>> On 21 Mar 2022, at 16:03, Peter Müller <peter.mueller@ipfire.org> wrote:
>>> 
>>> Hello Michael,
>>> 
>>> thanks for your reply.
>>> 
>>>> Hello,
>>>> 
>>>> This is interesting.
>>> 
>>> That's a mild way of putting it, I think. :-)
>>> 
>>>> 
>>>>> On 21 Mar 2022, at 15:35, Peter Müller <peter.mueller@ipfire.org> wrote:
>>>>> 
>>>>> On an IPFire installation that has been around since Core Update 110
>>>>> (released April 28, 2017), these files have been identified as being
>>>>> orphaned, comparing to a fresh installation of Core Update 164.
>>>>> 
>>>>> To avoid such a list of files agglomerating, persons responsible for a
>>>>> Core Update should check whether an updated package contains deleted
>>>>> files in its rootfile. If so, they should be deleted on existing systems
>>>>> via update.sh as well.
>>>>> 
>>>>> Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
>>>>> ---
>>>>> config/rootfiles/core/166/update.sh | 260 +++++++++++++++++++++++++++-
>>>>> 1 file changed, 258 insertions(+), 2 deletions(-)
>>>>> 
>>>>> diff --git a/config/rootfiles/core/166/update.sh b/config/rootfiles/core/166/update.sh
>>>>> index 1370555b0..b556986a5 100644
>>>>> --- a/config/rootfiles/core/166/update.sh
>>>>> +++ b/config/rootfiles/core/166/update.sh
>>>>> @@ -32,13 +32,269 @@ for (( i=1; i<=$core; i++ )); do
>>>>> done
>>>>> 
>>>>> # Remove files
>>>>> -rm -vf \
>>>>> +rm -rvf \
>>>>> +	/bin/setserial \
>>>>> 	/etc/dracut.conf \
>>>>> +	/etc/fonts/conf.d/30-urw-aliases.conf \
>>>>> +	/etc/grub.d/README \
>>>>> +	/etc/rc.d/init.d/networking/red.up/99-geoip-database \
>>>>> +	/etc/udev/rules.d/99-fuse.rules \
>>>>> +	/lib/firmware/amd-ucode/microcode_amd.bin.asc \
>>>>> +	/lib/firmware/amd-ucode/microcode_amd_fam15h.bin.asc \
>>>>> +	/lib/firmware/amd-ucode/microcode_amd_fam16h.bin.asc \
>>>>> +	/lib/firmware/amd-ucode/microcode_amd_fam17h.bin.asc \
>>>>> +	/lib/firmware/ath10k/QCA4019/hw1.0/notice_ath10k_firmware-5.txt \
>>>>> +	/lib/firmware/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt \
>>>>> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt \
>>>>> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt \
>>>>> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt \
>>>>> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt \
>>>>> +	/lib/firmware/ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt \
>>>>> +	/lib/firmware/ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt \
>>>>> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt \
>>>>> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt \
>>>>> +	/lib/firmware/ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt \
>>>>> +	/lib/firmware/ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt \
>>>>> +	/lib/firmware/atusb/ChangeLog \
>>>>> +	/lib/firmware/check_whence.py \
>>>>> +	/lib/firmware/cis/src \
>>>>> +	/lib/firmware/copy-firmware.sh \
>>>>> +	/lib/firmware/cxgb4/t4fw-1.20.8.0.bin \
>>>>> +	/lib/firmware/cxgb4/t4fw-1.24.3.0.bin \
>>>>> +	/lib/firmware/cxgb4/t5fw-1.20.8.0.bin \
>>>>> +	/lib/firmware/cxgb4/t5fw-1.24.3.0.bin \
>>>>> +	/lib/firmware/cxgb4/t6fw-1.20.8.0.bin \
>>>>> +	/lib/firmware/cxgb4/t6fw-1.24.3.0.bin \
>>>>> +	/lib/firmware/GPL-2 \
>>>>> +	/lib/firmware/GPL-3 \
>>>>> +	/lib/firmware/isci/README \
>>>>> +	/lib/firmware/LICENCE.* \
>>>>> +	/lib/firmware/Makefile \
>>>>> +	/lib/firmware/qca/NOTICE.txt \
>>>>> +	/lib/firmware/qcom/NOTICE.txt \
>>>>> +	/lib/firmware/README \
>>>>> +	/lib/firmware/WHENCE \
>>>>> +	/lib/kbd/keymaps/i386/qwerty/fi-latin1.map.gz \
>>>>> +	/lib/kbd/keymaps/i386/qwerty/fi-latin9.map.gz \
>>>>> +	/lib/ld-2.29.so \
>>>>> +	/lib/ld-2.31.so \
>>>>> +	/lib/ld-2.32.so \
>>>> 
>>>> These should have been gone before. Ideally by the filesystem cleanup script.
>>> 
>>> To be honest, I never had a look at this script, and therefore do not have an idea
>>> what it does and what it does not. I will investigate and get back to you, if necessary.
>>> 
>>>>> +	/lib/libcap.so \
>>>>> +	/lib/libhistory.so.5 \
>>>>> +	/lib/libhistory.so.5.2 \
>>>>> +	/lib/libip4tc.so.0 \
>>>>> +	/lib/libip4tc.so.0.1.0 \
>>>>> +	/lib/libip6tc.so.0 \
>>>>> +	/lib/libip6tc.so.0.1.0 \
>>>>> +	/lib/libiptc.so \
>>>>> +	/lib/libiptc.so.0 \
>>>>> +	/lib/libiptc.so.0.0.0 \
>>>>> +	/lib/libnss_nis-2.31.so \
>>>>> +	/lib/libnss_nisplus-2.31.so \
>>>>> +	/lib/libnss_nisplus.so.2 \
>>>>> +	/lib/libnss_nis.so.2 \
>>>>> +	/lib/libproc-3.2.8.so \
>>>>> +	/lib/libreadline.so.5 \
>>>>> +	/lib/libreadline.so.5.2 \
>>>>> +	/lib/libsysfs.so \
>>>>> +	/lib/libsysfs.so.1 \
>>>>> +	/lib/libsysfs.so.1.0.3 \
>>>>> +	/lib/udev/bluetooth_serial \
>>>>> +	/lib/udev/rules.d/24-bluetooth.rules \
>>>>> +	/lib/xtables/libxt_IMQ.so \
>>>>> 	/opt/pakfire/pakfire-2007.key \
>>>>> +	/sbin/mount.fuse \
>>>>> +	/sbin/raw \
>>>>> +	/sbin/xfs_scrub \
>>>>> +	/sbin/xfs_scrub_all \
>>>>> +	/srv/web/ipfire/cgi-bin/bluetooth.cgi \
>>>>> +	/usr/bin/ez-ipupdate \
>>>> 
>>>> LOL
>>> 
>>> ?
>>> 
>>>> 
>>>>> +	/usr/bin/fusermount \
>>>>> +	/usr/bin/gawk-5.1.0 \
>>>>> +	/usr/bin/gcov-dump \
>>>>> +	/usr/bin/getunimap \
>>>>> 	/usr/bin/mkinitrd \
>>>>> +	/usr/bin/mtools \
>>>>> +	/usr/bin/pango-querymodules \
>>>>> +	/usr/bin/perl5.30.0 \
>>>>> +	/usr/bin/setlogcons \
>>>>> +	/usr/bin/setvesablank \
>>>>> +	/usr/bin/ulockmgr_server \
>>>>> +	/usr/include/python2.7 \
>>>>> +	/usr/lib/cairo \
>>>>> 	/usr/lib/dracut \
>>>>> +	/usr/lib/findutils/bigram \
>>>>> +	/usr/lib/findutils/code \
>>>>> +	/usr/lib/gawk/testext.so \
>>>>> +	/usr/lib/itcl4.2.1 \
>>>>> +	/usr/lib/libasan.so.5 \
>>>>> +	/usr/lib/libasan.so.5.0.0 \
>>>>> +	/usr/lib/libbfd-2.32.so \
>>>>> +	/usr/lib/libbfd-2.34.so \
>>>>> +	/usr/lib/libbfd-2.35.1.so \
>>>>> +	/usr/lib/libbind9-9.16.22.so \
>>>>> +	/usr/lib/libbind9.so.161 \
>>>>> +	/usr/lib/libbind9.so.161.0.4 \
>>>>> +	/usr/lib/libblkid.so \
>>>>> +	/usr/lib/libdns-9.16.22.so \
>>>>> +	/usr/lib/libdnssec.so.7 \
>>>>> +	/usr/lib/libdnssec.so.7.0.0 \
>>>>> +	/usr/lib/libdns.so.* \
>>>> 
>>>> These should have been caught by the script as well. Any idea why that didn’t happen?
>>>> 
>>>>> +	/usr/lib/libevent-2.1.so.6 \
>>>>> +	/usr/lib/libevent-2.1.so.6.0.2 \
>>>>> +	/usr/lib/libevent_core-2.1.so.6 \
>>>>> +	/usr/lib/libevent_core-2.1.so.6.0.2 \
>>>>> +	/usr/lib/libevent_extra-2.1.so.6 \
>>>>> +	/usr/lib/libevent_extra-2.1.so.6.0.2 \
>>>>> +	/usr/lib/libevent_openssl-2.1.so.6 \
>>>>> +	/usr/lib/libevent_openssl-2.1.so.6.0.2 \
>>>>> +	/usr/lib/libevent_openssl.so \
>>>>> +	/usr/lib/libevent_pthreads-2.1.so.6 \
>>>>> +	/usr/lib/libevent_pthreads-2.1.so.6.0.2 \
>>>>> +	/usr/lib/libevent_pthreads.so \
>>>>> +	/usr/lib/libexpat.so \
>>>>> +	/usr/lib/libexslt.so \
>>>>> +	/usr/lib/libffi.so.6 \
>>>>> +	/usr/lib/libffi.so.6.0.4 \
>>>>> +	/usr/lib/libffi.so.7 \
>>>>> +	/usr/lib/libffi.so.7.1.0 \
>>>>> +	/usr/lib/libfuse.so \
>>>>> +	/usr/lib/libfuse.so.2 \
>>>>> +	/usr/lib/libfuse.so.2.9.7 \
>>>>> +	/usr/lib/libgdbm_compat.so \
>>>>> +	/usr/lib/libgdbm_compat.so.3 \
>>>>> +	/usr/lib/libgdbm_compat.so.3.0.0 \
>>>>> +	/usr/lib/libgdbm.so \
>>>>> +	/usr/lib/libgdbm.so.3 \
>>>>> +	/usr/lib/libgdbm.so.3.0.0 \
>>>>> +	/usr/lib/libgd.so \
>>>>> +	/usr/lib/libgd.so.2 \
>>>>> +	/usr/lib/libgd.so.2.0.0 \
>>>>> +	/usr/lib/libgettextlib-0.19.8.1.so \
>>>>> +	/usr/lib/libgettextsrc-0.19.8.1.so \
>>>>> +	/usr/lib/libhistory.so.6 \
>>>>> +	/usr/lib/libhistory.so.6.3 \
>>>>> +	/usr/lib/libhogweed.so.5 \
>>>>> +	/usr/lib/libhogweed.so.5.0 \
>>>>> +	/usr/lib/libidn.so \
>>>>> +	/usr/lib/libidn.so.11 \
>>>>> +	/usr/lib/libidn.so.11.6.18 \
>>>>> +	/usr/lib/libirs-9.16.22.so \
>>>>> +	/usr/lib/libisc-9.16.22.so \
>>>>> +	/usr/lib/libisccc-9.16.22.so \
>>>>> +	/usr/lib/libisccc.so.161 \
>>>>> +	/usr/lib/libisccc.so.161.0.1 \
>>>>> +	/usr/lib/libisccfg-9.16.22.so \
>>>>> +	/usr/lib/libisccfg.so.163 \
>>>>> +	/usr/lib/libisccfg.so.163.0.8 \
>>>>> +	/usr/lib/libisc.so.1100 \
>>>>> +	/usr/lib/libisc.so.1100.3.2 \
>>>>> +	/usr/lib/libisc.so.1104 \
>>>>> +	/usr/lib/libisc.so.1104.0.0 \
>>>>> +	/usr/lib/libisc.so.1105 \
>>>>> +	/usr/lib/libisc.so.1105.1.1 \
>>>>> +	/usr/lib/libisc.so.1107 \
>>>>> +	/usr/lib/libisc.so.1107.0.5 \
>>>> 
>>>> See above.
>>>> 
>>>>> +	/usr/lib/libixml.so \
>>>>> +	/usr/lib/libknot.so.10 \
>>>>> +	/usr/lib/libknot.so.10.0.0 \
>>>>> +	/usr/lib/libknot.so.11 \
>>>>> +	/usr/lib/libknot.so.11.0.0 \
>>>>> +	/usr/lib/libknot.so.9 \
>>>>> +	/usr/lib/libknot.so.9.0.0 \
>>>>> +	/usr/lib/liblber-2.3.so.0 \
>>>>> +	/usr/lib/liblber-2.3.so.0.2.8 \
>>>>> +	/usr/lib/libldap-2.3.so.0 \
>>>>> +	/usr/lib/libldap-2.3.so.0.2.8 \
>>>>> +	/usr/lib/libldap_r-2.3.so.0 \
>>>>> +	/usr/lib/libldap_r-2.3.so.0.2.8 \
>>>>> +	/usr/lib/libloc.so.0 \
>>>>> +	/usr/lib/libloc.so.0.0.0 \
>>>>> +	/usr/lib/liblua-5.3.so \
>>>>> +	/usr/lib/liblua.so \
>>>>> +	/usr/lib/liblwres.so.161 \
>>>>> +	/usr/lib/liblwres.so.161.0.4 \
>>>>> +	/usr/lib/libmpfr.so.4 \
>>>>> +	/usr/lib/libmpfr.so.4.1.5 \
>>>>> +	/usr/lib/libmpx.so.2 \
>>>>> +	/usr/lib/libmpx.so.2.0.1 \
>>>>> +	/usr/lib/libmpxwrappers.so.2 \
>>>>> +	/usr/lib/libmpxwrappers.so.2.0.1 \
>>>>> +	/usr/lib/libnettle.so.7 \
>>>>> +	/usr/lib/libnettle.so.7.0 \
>>>>> +	/usr/lib/libns-9.16.22.so \
>>>>> +	/usr/lib/libopcodes-2.32.so \
>>>>> +	/usr/lib/libopcodes-2.34.so \
>>>>> +	/usr/lib/libopcodes-2.35.1.so \
>>>>> +	/usr/lib/libpcre2-posix.so.2 \
>>>>> +	/usr/lib/libpcre2-posix.so.2.0.3 \
>>>>> +	/usr/lib/libpng12.so \
>>>>> +	/usr/lib/libpng12.so.0 \
>>>>> +	/usr/lib/libpng12.so.0.57.0 \
>>>>> +	/usr/lib/libpng.so.3 \
>>>>> +	/usr/lib/libpng.so.3.57.0 \
>>>>> +	/usr/lib/libpoppler.so.100 \
>>>>> +	/usr/lib/libpoppler.so.100.0.0 \
>>>>> +	/usr/lib/libpoppler.so.110 \
>>>>> +	/usr/lib/libpoppler.so.110.0.0 \
>>>>> +	/usr/lib/libpoppler.so.111 \
>>>>> +	/usr/lib/libpoppler.so.111.0.0 \
>>>>> +	/usr/lib/libpoppler.so.66 \
>>>>> +	/usr/lib/libpoppler.so.66.0.0 \
>>>>> +	/usr/lib/libqpdf.so.17 \
>>>>> +	/usr/lib/libqpdf.so.17.0.0 \
>>>>> +	/usr/lib/libreadline.so.6 \
>>>>> +	/usr/lib/libreadline.so.6.3 \
>>>>> +	/usr/lib/libsensors.so.4 \
>>>>> +	/usr/lib/libsensors.so.4.4.0 \
>>>>> +	/usr/lib/libsqlite3.so \
>>>>> +	/usr/lib/libthreadutil.so \
>>>>> +	/usr/lib/libthreadutil.so.6 \
>>>>> +	/usr/lib/libthreadutil.so.6.0.3 \
>>>>> +	/usr/lib/libulockmgr.so \
>>>>> +	/usr/lib/libulockmgr.so.1 \
>>>>> +	/usr/lib/libulockmgr.so.1.0.1 \
>>>>> +	/usr/lib/libupnp.so \
>>>>> +	/usr/lib/libuuid.so \
>>>>> +	/usr/lib/libxml2.so \
>>>>> +	/usr/lib/libxslt.so \
>>>>> +	/usr/lib/pango \
>>>>> +	/usr/lib/perl5/site_perl/5.30.0 \
>>>>> +	/usr/lib/perl5/site_perl/5.32.1/Net/IP.pm \
>>>>> +	/usr/lib/python3.8/ensurepip/_bundled/pip-19.2.3-py2.py3-none-any.whl \
>>>>> +	/usr/lib/python3.8/idlelib/Icons/idle.icns \
>>>>> +	/usr/lib/python3.8/lib2to3/Grammar3.8.1.final.0.pickle \
>>>>> +	/usr/lib/python3.8/lib2to3/PatternGrammar3.8.1.final.0.pickle \
>>>> 
>>>> Why can we not delete /usr/lib/python3.8 as a whole? This should not be needed any more.
>>> 
>>> Yes, good point. I was running the comparison based on Core Update 164, but with
>>> Python being updated to 3.10.x in Core Update 165, this folder won't be necessary
>>> anymore completely.
>>> 
>>>> 
>>>>> +	/usr/lib/sqlite3.34.0 \
>>>>> +	/usr/lib/squid/basic_nis_auth \
>>>>> +	/usr/lib/squid/ext_time_quota_acl \
>>>>> +	/usr/lib/tcl8/8.4/platform-1.0.14.tm \
>>>>> +	/usr/lib/tcl8/8.4/platform-1.0.15.tm \
>>>>> +	/usr/lib/tcl8/8.5/msgcat-1.6.0.tm \
>>>>> +	/usr/lib/tcl8/8.5/tcltest-2.4.0.tm \
>>>>> +	/usr/lib/tcl8/8.6/http-2.8.9.tm \
>>>>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.0.4.tm \
>>>>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm \
>>>> 
>>>> Why do we even ship tcl? Is anything reliant on this?
>>> 
>>> I don't know.
>>> 
>>>>> +	/usr/lib/tdbc1.1.2 \
>>>>> +	/usr/lib/tdbcmysql1.1.2 \
>>>>> +	/usr/lib/tdbcodbc1.1.2 \
>>>>> +	/usr/lib/tdbcpostgres1.1.2 \
>>>>> +	/usr/lib/thread2.8.6 \
>>>>> +	/usr/libexec/xtables-addons \
>>>>> 	/usr/local/bin/ovpn-ccd-convert \
>>>>> -	/usr/local/bin/rebuild-initrd
>>>>> +	/usr/local/bin/rebuild-initrd \
>>>>> +	/usr/local/bin/xt_geoip_build \
>>>>> +	/usr/local/bin/xt_geoip_update \
>>>>> +	/usr/sbin/batctl \
>>>>> +	/usr/sbin/fbset \
>>>>> +	/usr/sbin/update-usbids.sh \
>>>>> +	/usr/sbin/uuidd \
>>>>> +	/usr/share/doc/fireinfo \
>>>>> +	/usr/share/GeoIP \
>>>>> +	/usr/share/zoneinfo/posix/US/Pacific-New \
>>>>> +	/usr/share/zoneinfo/right/US/Pacific-New \
>>>>> +	/usr/share/zoneinfo/US/Pacific-New \
>>>>> +	/var/lib/GeoIP
>>>> 
>>>> What method did you use to identify all these files?
>>> 
>>> On the IPFire installation in question, I ran
>>> 
>>>> find bin/ etc/ lib/ opt/ run/ sbin/ srv/ usr/ var/ | sort > ~/ist
>>> 
>>> and scp'ed that file onto my workstation. Then, I downloaded the ISO for Core Update 164
>>> (because I wanted to have something stable, which is why I did not choose C165 for this),
>>> installed it in a VM, rebooted it, mounted the root partition and executed the same find
>>> command with a different file name.
>> 
>> Okay, so this is based on a random system. Not bad, but would be better if we could diff two filelists from two core updates, wouldn’t it?
> 
> I am not sure if I understood you here: The filelist above contains all leftovers that have
> agglomerated since Core Update 110. Comparing two filelists would only cover a fraction of
> it, since this comparison cannot skip any update.
> 
> However: Do you see a feasible way to obtain such lists, and perhaps scipt the generation of
> such a list of orphaned files?

Yes, we could use “git archive” to create a tarball from any branch, so in this case a core update from the past.

We could then only extract (or directly send to stdout) all files in config/rootfiles/command, sort the output and compare it to what is currently in config/rootfiles/common. Stretch goal is doing this for all architectures :)

Here is the command for the main file list:

  git archive origin/core160 | tar --extract --to-stdout config/rootfiles/common | grep -v "^#" | sort -u

This could be integrated into make.sh :)

-Michael

> 
> Thanks, and best regards,
> Peter Müller
> 
>> 
>>> 
>>> A
>>> 
>>>> diff -Naur soll ist | less
>>> 
>>> (sorry for the German) outputs a long list, which I vetted manually since some add-ons
>>> were installed on the productive system, and I did not want to pipe the output into the
>>> rm command blindly.
>>> 
>>> Thanks, and best regards,
>>> Peter Müller
>>> 
>>>> 
>>>> -Michael
>>>> 
>>>>> 
>>>>> # Delete old 2007 Pakfire key from GPG keyring
>>>>> export GNUPGHOME="/opt/pakfire/etc/.gnupg"
>>>>> -- 
>>>>> 2.34.1
  
Peter Müller March 22, 2022, 2:59 p.m. UTC | #7
Hello Michael,

thanks for your reply and the information.

How should we proceed with this patch then?

Thanks, and best regards,
Peter Müller

> Hello,
> 
>> On 21 Mar 2022, at 19:15, Peter Müller <peter.mueller@ipfire.org> wrote:
>>
>> Hello Michael,
>>
>> thanks for your reply.
>>
>>> Hello,
>>>
>>>> On 21 Mar 2022, at 16:03, Peter Müller <peter.mueller@ipfire.org> wrote:
>>>>
>>>> Hello Michael,
>>>>
>>>> thanks for your reply.
>>>>
>>>>> Hello,
>>>>>
>>>>> This is interesting.
>>>>
>>>> That's a mild way of putting it, I think. :-)
>>>>
>>>>>
>>>>>> On 21 Mar 2022, at 15:35, Peter Müller <peter.mueller@ipfire.org> wrote:
>>>>>>
>>>>>> On an IPFire installation that has been around since Core Update 110
>>>>>> (released April 28, 2017), these files have been identified as being
>>>>>> orphaned, comparing to a fresh installation of Core Update 164.
>>>>>>
>>>>>> To avoid such a list of files agglomerating, persons responsible for a
>>>>>> Core Update should check whether an updated package contains deleted
>>>>>> files in its rootfile. If so, they should be deleted on existing systems
>>>>>> via update.sh as well.
>>>>>>
>>>>>> Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
>>>>>> ---
>>>>>> config/rootfiles/core/166/update.sh | 260 +++++++++++++++++++++++++++-
>>>>>> 1 file changed, 258 insertions(+), 2 deletions(-)
>>>>>>
>>>>>> diff --git a/config/rootfiles/core/166/update.sh b/config/rootfiles/core/166/update.sh
>>>>>> index 1370555b0..b556986a5 100644
>>>>>> --- a/config/rootfiles/core/166/update.sh
>>>>>> +++ b/config/rootfiles/core/166/update.sh
>>>>>> @@ -32,13 +32,269 @@ for (( i=1; i<=$core; i++ )); do
>>>>>> done
>>>>>>
>>>>>> # Remove files
>>>>>> -rm -vf \
>>>>>> +rm -rvf \
>>>>>> +	/bin/setserial \
>>>>>> 	/etc/dracut.conf \
>>>>>> +	/etc/fonts/conf.d/30-urw-aliases.conf \
>>>>>> +	/etc/grub.d/README \
>>>>>> +	/etc/rc.d/init.d/networking/red.up/99-geoip-database \
>>>>>> +	/etc/udev/rules.d/99-fuse.rules \
>>>>>> +	/lib/firmware/amd-ucode/microcode_amd.bin.asc \
>>>>>> +	/lib/firmware/amd-ucode/microcode_amd_fam15h.bin.asc \
>>>>>> +	/lib/firmware/amd-ucode/microcode_amd_fam16h.bin.asc \
>>>>>> +	/lib/firmware/amd-ucode/microcode_amd_fam17h.bin.asc \
>>>>>> +	/lib/firmware/ath10k/QCA4019/hw1.0/notice_ath10k_firmware-5.txt \
>>>>>> +	/lib/firmware/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt \
>>>>>> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt \
>>>>>> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt \
>>>>>> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt \
>>>>>> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt \
>>>>>> +	/lib/firmware/ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt \
>>>>>> +	/lib/firmware/ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt \
>>>>>> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt \
>>>>>> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt \
>>>>>> +	/lib/firmware/ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt \
>>>>>> +	/lib/firmware/ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt \
>>>>>> +	/lib/firmware/atusb/ChangeLog \
>>>>>> +	/lib/firmware/check_whence.py \
>>>>>> +	/lib/firmware/cis/src \
>>>>>> +	/lib/firmware/copy-firmware.sh \
>>>>>> +	/lib/firmware/cxgb4/t4fw-1.20.8.0.bin \
>>>>>> +	/lib/firmware/cxgb4/t4fw-1.24.3.0.bin \
>>>>>> +	/lib/firmware/cxgb4/t5fw-1.20.8.0.bin \
>>>>>> +	/lib/firmware/cxgb4/t5fw-1.24.3.0.bin \
>>>>>> +	/lib/firmware/cxgb4/t6fw-1.20.8.0.bin \
>>>>>> +	/lib/firmware/cxgb4/t6fw-1.24.3.0.bin \
>>>>>> +	/lib/firmware/GPL-2 \
>>>>>> +	/lib/firmware/GPL-3 \
>>>>>> +	/lib/firmware/isci/README \
>>>>>> +	/lib/firmware/LICENCE.* \
>>>>>> +	/lib/firmware/Makefile \
>>>>>> +	/lib/firmware/qca/NOTICE.txt \
>>>>>> +	/lib/firmware/qcom/NOTICE.txt \
>>>>>> +	/lib/firmware/README \
>>>>>> +	/lib/firmware/WHENCE \
>>>>>> +	/lib/kbd/keymaps/i386/qwerty/fi-latin1.map.gz \
>>>>>> +	/lib/kbd/keymaps/i386/qwerty/fi-latin9.map.gz \
>>>>>> +	/lib/ld-2.29.so \
>>>>>> +	/lib/ld-2.31.so \
>>>>>> +	/lib/ld-2.32.so \
>>>>>
>>>>> These should have been gone before. Ideally by the filesystem cleanup script.
>>>>
>>>> To be honest, I never had a look at this script, and therefore do not have an idea
>>>> what it does and what it does not. I will investigate and get back to you, if necessary.
>>>>
>>>>>> +	/lib/libcap.so \
>>>>>> +	/lib/libhistory.so.5 \
>>>>>> +	/lib/libhistory.so.5.2 \
>>>>>> +	/lib/libip4tc.so.0 \
>>>>>> +	/lib/libip4tc.so.0.1.0 \
>>>>>> +	/lib/libip6tc.so.0 \
>>>>>> +	/lib/libip6tc.so.0.1.0 \
>>>>>> +	/lib/libiptc.so \
>>>>>> +	/lib/libiptc.so.0 \
>>>>>> +	/lib/libiptc.so.0.0.0 \
>>>>>> +	/lib/libnss_nis-2.31.so \
>>>>>> +	/lib/libnss_nisplus-2.31.so \
>>>>>> +	/lib/libnss_nisplus.so.2 \
>>>>>> +	/lib/libnss_nis.so.2 \
>>>>>> +	/lib/libproc-3.2.8.so \
>>>>>> +	/lib/libreadline.so.5 \
>>>>>> +	/lib/libreadline.so.5.2 \
>>>>>> +	/lib/libsysfs.so \
>>>>>> +	/lib/libsysfs.so.1 \
>>>>>> +	/lib/libsysfs.so.1.0.3 \
>>>>>> +	/lib/udev/bluetooth_serial \
>>>>>> +	/lib/udev/rules.d/24-bluetooth.rules \
>>>>>> +	/lib/xtables/libxt_IMQ.so \
>>>>>> 	/opt/pakfire/pakfire-2007.key \
>>>>>> +	/sbin/mount.fuse \
>>>>>> +	/sbin/raw \
>>>>>> +	/sbin/xfs_scrub \
>>>>>> +	/sbin/xfs_scrub_all \
>>>>>> +	/srv/web/ipfire/cgi-bin/bluetooth.cgi \
>>>>>> +	/usr/bin/ez-ipupdate \
>>>>>
>>>>> LOL
>>>>
>>>> ?
>>>>
>>>>>
>>>>>> +	/usr/bin/fusermount \
>>>>>> +	/usr/bin/gawk-5.1.0 \
>>>>>> +	/usr/bin/gcov-dump \
>>>>>> +	/usr/bin/getunimap \
>>>>>> 	/usr/bin/mkinitrd \
>>>>>> +	/usr/bin/mtools \
>>>>>> +	/usr/bin/pango-querymodules \
>>>>>> +	/usr/bin/perl5.30.0 \
>>>>>> +	/usr/bin/setlogcons \
>>>>>> +	/usr/bin/setvesablank \
>>>>>> +	/usr/bin/ulockmgr_server \
>>>>>> +	/usr/include/python2.7 \
>>>>>> +	/usr/lib/cairo \
>>>>>> 	/usr/lib/dracut \
>>>>>> +	/usr/lib/findutils/bigram \
>>>>>> +	/usr/lib/findutils/code \
>>>>>> +	/usr/lib/gawk/testext.so \
>>>>>> +	/usr/lib/itcl4.2.1 \
>>>>>> +	/usr/lib/libasan.so.5 \
>>>>>> +	/usr/lib/libasan.so.5.0.0 \
>>>>>> +	/usr/lib/libbfd-2.32.so \
>>>>>> +	/usr/lib/libbfd-2.34.so \
>>>>>> +	/usr/lib/libbfd-2.35.1.so \
>>>>>> +	/usr/lib/libbind9-9.16.22.so \
>>>>>> +	/usr/lib/libbind9.so.161 \
>>>>>> +	/usr/lib/libbind9.so.161.0.4 \
>>>>>> +	/usr/lib/libblkid.so \
>>>>>> +	/usr/lib/libdns-9.16.22.so \
>>>>>> +	/usr/lib/libdnssec.so.7 \
>>>>>> +	/usr/lib/libdnssec.so.7.0.0 \
>>>>>> +	/usr/lib/libdns.so.* \
>>>>>
>>>>> These should have been caught by the script as well. Any idea why that didn’t happen?
>>>>>
>>>>>> +	/usr/lib/libevent-2.1.so.6 \
>>>>>> +	/usr/lib/libevent-2.1.so.6.0.2 \
>>>>>> +	/usr/lib/libevent_core-2.1.so.6 \
>>>>>> +	/usr/lib/libevent_core-2.1.so.6.0.2 \
>>>>>> +	/usr/lib/libevent_extra-2.1.so.6 \
>>>>>> +	/usr/lib/libevent_extra-2.1.so.6.0.2 \
>>>>>> +	/usr/lib/libevent_openssl-2.1.so.6 \
>>>>>> +	/usr/lib/libevent_openssl-2.1.so.6.0.2 \
>>>>>> +	/usr/lib/libevent_openssl.so \
>>>>>> +	/usr/lib/libevent_pthreads-2.1.so.6 \
>>>>>> +	/usr/lib/libevent_pthreads-2.1.so.6.0.2 \
>>>>>> +	/usr/lib/libevent_pthreads.so \
>>>>>> +	/usr/lib/libexpat.so \
>>>>>> +	/usr/lib/libexslt.so \
>>>>>> +	/usr/lib/libffi.so.6 \
>>>>>> +	/usr/lib/libffi.so.6.0.4 \
>>>>>> +	/usr/lib/libffi.so.7 \
>>>>>> +	/usr/lib/libffi.so.7.1.0 \
>>>>>> +	/usr/lib/libfuse.so \
>>>>>> +	/usr/lib/libfuse.so.2 \
>>>>>> +	/usr/lib/libfuse.so.2.9.7 \
>>>>>> +	/usr/lib/libgdbm_compat.so \
>>>>>> +	/usr/lib/libgdbm_compat.so.3 \
>>>>>> +	/usr/lib/libgdbm_compat.so.3.0.0 \
>>>>>> +	/usr/lib/libgdbm.so \
>>>>>> +	/usr/lib/libgdbm.so.3 \
>>>>>> +	/usr/lib/libgdbm.so.3.0.0 \
>>>>>> +	/usr/lib/libgd.so \
>>>>>> +	/usr/lib/libgd.so.2 \
>>>>>> +	/usr/lib/libgd.so.2.0.0 \
>>>>>> +	/usr/lib/libgettextlib-0.19.8.1.so \
>>>>>> +	/usr/lib/libgettextsrc-0.19.8.1.so \
>>>>>> +	/usr/lib/libhistory.so.6 \
>>>>>> +	/usr/lib/libhistory.so.6.3 \
>>>>>> +	/usr/lib/libhogweed.so.5 \
>>>>>> +	/usr/lib/libhogweed.so.5.0 \
>>>>>> +	/usr/lib/libidn.so \
>>>>>> +	/usr/lib/libidn.so.11 \
>>>>>> +	/usr/lib/libidn.so.11.6.18 \
>>>>>> +	/usr/lib/libirs-9.16.22.so \
>>>>>> +	/usr/lib/libisc-9.16.22.so \
>>>>>> +	/usr/lib/libisccc-9.16.22.so \
>>>>>> +	/usr/lib/libisccc.so.161 \
>>>>>> +	/usr/lib/libisccc.so.161.0.1 \
>>>>>> +	/usr/lib/libisccfg-9.16.22.so \
>>>>>> +	/usr/lib/libisccfg.so.163 \
>>>>>> +	/usr/lib/libisccfg.so.163.0.8 \
>>>>>> +	/usr/lib/libisc.so.1100 \
>>>>>> +	/usr/lib/libisc.so.1100.3.2 \
>>>>>> +	/usr/lib/libisc.so.1104 \
>>>>>> +	/usr/lib/libisc.so.1104.0.0 \
>>>>>> +	/usr/lib/libisc.so.1105 \
>>>>>> +	/usr/lib/libisc.so.1105.1.1 \
>>>>>> +	/usr/lib/libisc.so.1107 \
>>>>>> +	/usr/lib/libisc.so.1107.0.5 \
>>>>>
>>>>> See above.
>>>>>
>>>>>> +	/usr/lib/libixml.so \
>>>>>> +	/usr/lib/libknot.so.10 \
>>>>>> +	/usr/lib/libknot.so.10.0.0 \
>>>>>> +	/usr/lib/libknot.so.11 \
>>>>>> +	/usr/lib/libknot.so.11.0.0 \
>>>>>> +	/usr/lib/libknot.so.9 \
>>>>>> +	/usr/lib/libknot.so.9.0.0 \
>>>>>> +	/usr/lib/liblber-2.3.so.0 \
>>>>>> +	/usr/lib/liblber-2.3.so.0.2.8 \
>>>>>> +	/usr/lib/libldap-2.3.so.0 \
>>>>>> +	/usr/lib/libldap-2.3.so.0.2.8 \
>>>>>> +	/usr/lib/libldap_r-2.3.so.0 \
>>>>>> +	/usr/lib/libldap_r-2.3.so.0.2.8 \
>>>>>> +	/usr/lib/libloc.so.0 \
>>>>>> +	/usr/lib/libloc.so.0.0.0 \
>>>>>> +	/usr/lib/liblua-5.3.so \
>>>>>> +	/usr/lib/liblua.so \
>>>>>> +	/usr/lib/liblwres.so.161 \
>>>>>> +	/usr/lib/liblwres.so.161.0.4 \
>>>>>> +	/usr/lib/libmpfr.so.4 \
>>>>>> +	/usr/lib/libmpfr.so.4.1.5 \
>>>>>> +	/usr/lib/libmpx.so.2 \
>>>>>> +	/usr/lib/libmpx.so.2.0.1 \
>>>>>> +	/usr/lib/libmpxwrappers.so.2 \
>>>>>> +	/usr/lib/libmpxwrappers.so.2.0.1 \
>>>>>> +	/usr/lib/libnettle.so.7 \
>>>>>> +	/usr/lib/libnettle.so.7.0 \
>>>>>> +	/usr/lib/libns-9.16.22.so \
>>>>>> +	/usr/lib/libopcodes-2.32.so \
>>>>>> +	/usr/lib/libopcodes-2.34.so \
>>>>>> +	/usr/lib/libopcodes-2.35.1.so \
>>>>>> +	/usr/lib/libpcre2-posix.so.2 \
>>>>>> +	/usr/lib/libpcre2-posix.so.2.0.3 \
>>>>>> +	/usr/lib/libpng12.so \
>>>>>> +	/usr/lib/libpng12.so.0 \
>>>>>> +	/usr/lib/libpng12.so.0.57.0 \
>>>>>> +	/usr/lib/libpng.so.3 \
>>>>>> +	/usr/lib/libpng.so.3.57.0 \
>>>>>> +	/usr/lib/libpoppler.so.100 \
>>>>>> +	/usr/lib/libpoppler.so.100.0.0 \
>>>>>> +	/usr/lib/libpoppler.so.110 \
>>>>>> +	/usr/lib/libpoppler.so.110.0.0 \
>>>>>> +	/usr/lib/libpoppler.so.111 \
>>>>>> +	/usr/lib/libpoppler.so.111.0.0 \
>>>>>> +	/usr/lib/libpoppler.so.66 \
>>>>>> +	/usr/lib/libpoppler.so.66.0.0 \
>>>>>> +	/usr/lib/libqpdf.so.17 \
>>>>>> +	/usr/lib/libqpdf.so.17.0.0 \
>>>>>> +	/usr/lib/libreadline.so.6 \
>>>>>> +	/usr/lib/libreadline.so.6.3 \
>>>>>> +	/usr/lib/libsensors.so.4 \
>>>>>> +	/usr/lib/libsensors.so.4.4.0 \
>>>>>> +	/usr/lib/libsqlite3.so \
>>>>>> +	/usr/lib/libthreadutil.so \
>>>>>> +	/usr/lib/libthreadutil.so.6 \
>>>>>> +	/usr/lib/libthreadutil.so.6.0.3 \
>>>>>> +	/usr/lib/libulockmgr.so \
>>>>>> +	/usr/lib/libulockmgr.so.1 \
>>>>>> +	/usr/lib/libulockmgr.so.1.0.1 \
>>>>>> +	/usr/lib/libupnp.so \
>>>>>> +	/usr/lib/libuuid.so \
>>>>>> +	/usr/lib/libxml2.so \
>>>>>> +	/usr/lib/libxslt.so \
>>>>>> +	/usr/lib/pango \
>>>>>> +	/usr/lib/perl5/site_perl/5.30.0 \
>>>>>> +	/usr/lib/perl5/site_perl/5.32.1/Net/IP.pm \
>>>>>> +	/usr/lib/python3.8/ensurepip/_bundled/pip-19.2.3-py2.py3-none-any.whl \
>>>>>> +	/usr/lib/python3.8/idlelib/Icons/idle.icns \
>>>>>> +	/usr/lib/python3.8/lib2to3/Grammar3.8.1.final.0.pickle \
>>>>>> +	/usr/lib/python3.8/lib2to3/PatternGrammar3.8.1.final.0.pickle \
>>>>>
>>>>> Why can we not delete /usr/lib/python3.8 as a whole? This should not be needed any more.
>>>>
>>>> Yes, good point. I was running the comparison based on Core Update 164, but with
>>>> Python being updated to 3.10.x in Core Update 165, this folder won't be necessary
>>>> anymore completely.
>>>>
>>>>>
>>>>>> +	/usr/lib/sqlite3.34.0 \
>>>>>> +	/usr/lib/squid/basic_nis_auth \
>>>>>> +	/usr/lib/squid/ext_time_quota_acl \
>>>>>> +	/usr/lib/tcl8/8.4/platform-1.0.14.tm \
>>>>>> +	/usr/lib/tcl8/8.4/platform-1.0.15.tm \
>>>>>> +	/usr/lib/tcl8/8.5/msgcat-1.6.0.tm \
>>>>>> +	/usr/lib/tcl8/8.5/tcltest-2.4.0.tm \
>>>>>> +	/usr/lib/tcl8/8.6/http-2.8.9.tm \
>>>>>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.0.4.tm \
>>>>>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm \
>>>>>
>>>>> Why do we even ship tcl? Is anything reliant on this?
>>>>
>>>> I don't know.
>>>>
>>>>>> +	/usr/lib/tdbc1.1.2 \
>>>>>> +	/usr/lib/tdbcmysql1.1.2 \
>>>>>> +	/usr/lib/tdbcodbc1.1.2 \
>>>>>> +	/usr/lib/tdbcpostgres1.1.2 \
>>>>>> +	/usr/lib/thread2.8.6 \
>>>>>> +	/usr/libexec/xtables-addons \
>>>>>> 	/usr/local/bin/ovpn-ccd-convert \
>>>>>> -	/usr/local/bin/rebuild-initrd
>>>>>> +	/usr/local/bin/rebuild-initrd \
>>>>>> +	/usr/local/bin/xt_geoip_build \
>>>>>> +	/usr/local/bin/xt_geoip_update \
>>>>>> +	/usr/sbin/batctl \
>>>>>> +	/usr/sbin/fbset \
>>>>>> +	/usr/sbin/update-usbids.sh \
>>>>>> +	/usr/sbin/uuidd \
>>>>>> +	/usr/share/doc/fireinfo \
>>>>>> +	/usr/share/GeoIP \
>>>>>> +	/usr/share/zoneinfo/posix/US/Pacific-New \
>>>>>> +	/usr/share/zoneinfo/right/US/Pacific-New \
>>>>>> +	/usr/share/zoneinfo/US/Pacific-New \
>>>>>> +	/var/lib/GeoIP
>>>>>
>>>>> What method did you use to identify all these files?
>>>>
>>>> On the IPFire installation in question, I ran
>>>>
>>>>> find bin/ etc/ lib/ opt/ run/ sbin/ srv/ usr/ var/ | sort > ~/ist
>>>>
>>>> and scp'ed that file onto my workstation. Then, I downloaded the ISO for Core Update 164
>>>> (because I wanted to have something stable, which is why I did not choose C165 for this),
>>>> installed it in a VM, rebooted it, mounted the root partition and executed the same find
>>>> command with a different file name.
>>>
>>> Okay, so this is based on a random system. Not bad, but would be better if we could diff two filelists from two core updates, wouldn’t it?
>>
>> I am not sure if I understood you here: The filelist above contains all leftovers that have
>> agglomerated since Core Update 110. Comparing two filelists would only cover a fraction of
>> it, since this comparison cannot skip any update.
>>
>> However: Do you see a feasible way to obtain such lists, and perhaps scipt the generation of
>> such a list of orphaned files?
> 
> Yes, we could use “git archive” to create a tarball from any branch, so in this case a core update from the past.
> 
> We could then only extract (or directly send to stdout) all files in config/rootfiles/command, sort the output and compare it to what is currently in config/rootfiles/common. Stretch goal is doing this for all architectures :)
> 
> Here is the command for the main file list:
> 
>   git archive origin/core160 | tar --extract --to-stdout config/rootfiles/common | grep -v "^#" | sort -u
> 
> This could be integrated into make.sh :)
> 
> -Michael
> 
>>
>> Thanks, and best regards,
>> Peter Müller
>>
>>>
>>>>
>>>> A
>>>>
>>>>> diff -Naur soll ist | less
>>>>
>>>> (sorry for the German) outputs a long list, which I vetted manually since some add-ons
>>>> were installed on the productive system, and I did not want to pipe the output into the
>>>> rm command blindly.
>>>>
>>>> Thanks, and best regards,
>>>> Peter Müller
>>>>
>>>>>
>>>>> -Michael
>>>>>
>>>>>>
>>>>>> # Delete old 2007 Pakfire key from GPG keyring
>>>>>> export GNUPGHOME="/opt/pakfire/etc/.gnupg"
>>>>>> -- 
>>>>>> 2.34.1
>
  
Michael Tremer March 22, 2022, 3:03 p.m. UTC | #8
I would vote to merge it. There is nothing wrong with it except that it might not be 100% complete, but it is at least doing something.

I would still like you to implement an automatic check for the future as I outlined in my last email. :)

> On 22 Mar 2022, at 14:59, Peter Müller <peter.mueller@ipfire.org> wrote:
> 
> Hello Michael,
> 
> thanks for your reply and the information.
> 
> How should we proceed with this patch then?
> 
> Thanks, and best regards,
> Peter Müller
> 
>> Hello,
>> 
>>> On 21 Mar 2022, at 19:15, Peter Müller <peter.mueller@ipfire.org> wrote:
>>> 
>>> Hello Michael,
>>> 
>>> thanks for your reply.
>>> 
>>>> Hello,
>>>> 
>>>>> On 21 Mar 2022, at 16:03, Peter Müller <peter.mueller@ipfire.org> wrote:
>>>>> 
>>>>> Hello Michael,
>>>>> 
>>>>> thanks for your reply.
>>>>> 
>>>>>> Hello,
>>>>>> 
>>>>>> This is interesting.
>>>>> 
>>>>> That's a mild way of putting it, I think. :-)
>>>>> 
>>>>>> 
>>>>>>> On 21 Mar 2022, at 15:35, Peter Müller <peter.mueller@ipfire.org> wrote:
>>>>>>> 
>>>>>>> On an IPFire installation that has been around since Core Update 110
>>>>>>> (released April 28, 2017), these files have been identified as being
>>>>>>> orphaned, comparing to a fresh installation of Core Update 164.
>>>>>>> 
>>>>>>> To avoid such a list of files agglomerating, persons responsible for a
>>>>>>> Core Update should check whether an updated package contains deleted
>>>>>>> files in its rootfile. If so, they should be deleted on existing systems
>>>>>>> via update.sh as well.
>>>>>>> 
>>>>>>> Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
>>>>>>> ---
>>>>>>> config/rootfiles/core/166/update.sh | 260 +++++++++++++++++++++++++++-
>>>>>>> 1 file changed, 258 insertions(+), 2 deletions(-)
>>>>>>> 
>>>>>>> diff --git a/config/rootfiles/core/166/update.sh b/config/rootfiles/core/166/update.sh
>>>>>>> index 1370555b0..b556986a5 100644
>>>>>>> --- a/config/rootfiles/core/166/update.sh
>>>>>>> +++ b/config/rootfiles/core/166/update.sh
>>>>>>> @@ -32,13 +32,269 @@ for (( i=1; i<=$core; i++ )); do
>>>>>>> done
>>>>>>> 
>>>>>>> # Remove files
>>>>>>> -rm -vf \
>>>>>>> +rm -rvf \
>>>>>>> +	/bin/setserial \
>>>>>>> 	/etc/dracut.conf \
>>>>>>> +	/etc/fonts/conf.d/30-urw-aliases.conf \
>>>>>>> +	/etc/grub.d/README \
>>>>>>> +	/etc/rc.d/init.d/networking/red.up/99-geoip-database \
>>>>>>> +	/etc/udev/rules.d/99-fuse.rules \
>>>>>>> +	/lib/firmware/amd-ucode/microcode_amd.bin.asc \
>>>>>>> +	/lib/firmware/amd-ucode/microcode_amd_fam15h.bin.asc \
>>>>>>> +	/lib/firmware/amd-ucode/microcode_amd_fam16h.bin.asc \
>>>>>>> +	/lib/firmware/amd-ucode/microcode_amd_fam17h.bin.asc \
>>>>>>> +	/lib/firmware/ath10k/QCA4019/hw1.0/notice_ath10k_firmware-5.txt \
>>>>>>> +	/lib/firmware/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt \
>>>>>>> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt \
>>>>>>> +	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt \
>>>>>>> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt \
>>>>>>> +	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt \
>>>>>>> +	/lib/firmware/ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt \
>>>>>>> +	/lib/firmware/ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt \
>>>>>>> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt \
>>>>>>> +	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt \
>>>>>>> +	/lib/firmware/ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt \
>>>>>>> +	/lib/firmware/ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt \
>>>>>>> +	/lib/firmware/atusb/ChangeLog \
>>>>>>> +	/lib/firmware/check_whence.py \
>>>>>>> +	/lib/firmware/cis/src \
>>>>>>> +	/lib/firmware/copy-firmware.sh \
>>>>>>> +	/lib/firmware/cxgb4/t4fw-1.20.8.0.bin \
>>>>>>> +	/lib/firmware/cxgb4/t4fw-1.24.3.0.bin \
>>>>>>> +	/lib/firmware/cxgb4/t5fw-1.20.8.0.bin \
>>>>>>> +	/lib/firmware/cxgb4/t5fw-1.24.3.0.bin \
>>>>>>> +	/lib/firmware/cxgb4/t6fw-1.20.8.0.bin \
>>>>>>> +	/lib/firmware/cxgb4/t6fw-1.24.3.0.bin \
>>>>>>> +	/lib/firmware/GPL-2 \
>>>>>>> +	/lib/firmware/GPL-3 \
>>>>>>> +	/lib/firmware/isci/README \
>>>>>>> +	/lib/firmware/LICENCE.* \
>>>>>>> +	/lib/firmware/Makefile \
>>>>>>> +	/lib/firmware/qca/NOTICE.txt \
>>>>>>> +	/lib/firmware/qcom/NOTICE.txt \
>>>>>>> +	/lib/firmware/README \
>>>>>>> +	/lib/firmware/WHENCE \
>>>>>>> +	/lib/kbd/keymaps/i386/qwerty/fi-latin1.map.gz \
>>>>>>> +	/lib/kbd/keymaps/i386/qwerty/fi-latin9.map.gz \
>>>>>>> +	/lib/ld-2.29.so \
>>>>>>> +	/lib/ld-2.31.so \
>>>>>>> +	/lib/ld-2.32.so \
>>>>>> 
>>>>>> These should have been gone before. Ideally by the filesystem cleanup script.
>>>>> 
>>>>> To be honest, I never had a look at this script, and therefore do not have an idea
>>>>> what it does and what it does not. I will investigate and get back to you, if necessary.
>>>>> 
>>>>>>> +	/lib/libcap.so \
>>>>>>> +	/lib/libhistory.so.5 \
>>>>>>> +	/lib/libhistory.so.5.2 \
>>>>>>> +	/lib/libip4tc.so.0 \
>>>>>>> +	/lib/libip4tc.so.0.1.0 \
>>>>>>> +	/lib/libip6tc.so.0 \
>>>>>>> +	/lib/libip6tc.so.0.1.0 \
>>>>>>> +	/lib/libiptc.so \
>>>>>>> +	/lib/libiptc.so.0 \
>>>>>>> +	/lib/libiptc.so.0.0.0 \
>>>>>>> +	/lib/libnss_nis-2.31.so \
>>>>>>> +	/lib/libnss_nisplus-2.31.so \
>>>>>>> +	/lib/libnss_nisplus.so.2 \
>>>>>>> +	/lib/libnss_nis.so.2 \
>>>>>>> +	/lib/libproc-3.2.8.so \
>>>>>>> +	/lib/libreadline.so.5 \
>>>>>>> +	/lib/libreadline.so.5.2 \
>>>>>>> +	/lib/libsysfs.so \
>>>>>>> +	/lib/libsysfs.so.1 \
>>>>>>> +	/lib/libsysfs.so.1.0.3 \
>>>>>>> +	/lib/udev/bluetooth_serial \
>>>>>>> +	/lib/udev/rules.d/24-bluetooth.rules \
>>>>>>> +	/lib/xtables/libxt_IMQ.so \
>>>>>>> 	/opt/pakfire/pakfire-2007.key \
>>>>>>> +	/sbin/mount.fuse \
>>>>>>> +	/sbin/raw \
>>>>>>> +	/sbin/xfs_scrub \
>>>>>>> +	/sbin/xfs_scrub_all \
>>>>>>> +	/srv/web/ipfire/cgi-bin/bluetooth.cgi \
>>>>>>> +	/usr/bin/ez-ipupdate \
>>>>>> 
>>>>>> LOL
>>>>> 
>>>>> ?
>>>>> 
>>>>>> 
>>>>>>> +	/usr/bin/fusermount \
>>>>>>> +	/usr/bin/gawk-5.1.0 \
>>>>>>> +	/usr/bin/gcov-dump \
>>>>>>> +	/usr/bin/getunimap \
>>>>>>> 	/usr/bin/mkinitrd \
>>>>>>> +	/usr/bin/mtools \
>>>>>>> +	/usr/bin/pango-querymodules \
>>>>>>> +	/usr/bin/perl5.30.0 \
>>>>>>> +	/usr/bin/setlogcons \
>>>>>>> +	/usr/bin/setvesablank \
>>>>>>> +	/usr/bin/ulockmgr_server \
>>>>>>> +	/usr/include/python2.7 \
>>>>>>> +	/usr/lib/cairo \
>>>>>>> 	/usr/lib/dracut \
>>>>>>> +	/usr/lib/findutils/bigram \
>>>>>>> +	/usr/lib/findutils/code \
>>>>>>> +	/usr/lib/gawk/testext.so \
>>>>>>> +	/usr/lib/itcl4.2.1 \
>>>>>>> +	/usr/lib/libasan.so.5 \
>>>>>>> +	/usr/lib/libasan.so.5.0.0 \
>>>>>>> +	/usr/lib/libbfd-2.32.so \
>>>>>>> +	/usr/lib/libbfd-2.34.so \
>>>>>>> +	/usr/lib/libbfd-2.35.1.so \
>>>>>>> +	/usr/lib/libbind9-9.16.22.so \
>>>>>>> +	/usr/lib/libbind9.so.161 \
>>>>>>> +	/usr/lib/libbind9.so.161.0.4 \
>>>>>>> +	/usr/lib/libblkid.so \
>>>>>>> +	/usr/lib/libdns-9.16.22.so \
>>>>>>> +	/usr/lib/libdnssec.so.7 \
>>>>>>> +	/usr/lib/libdnssec.so.7.0.0 \
>>>>>>> +	/usr/lib/libdns.so.* \
>>>>>> 
>>>>>> These should have been caught by the script as well. Any idea why that didn’t happen?
>>>>>> 
>>>>>>> +	/usr/lib/libevent-2.1.so.6 \
>>>>>>> +	/usr/lib/libevent-2.1.so.6.0.2 \
>>>>>>> +	/usr/lib/libevent_core-2.1.so.6 \
>>>>>>> +	/usr/lib/libevent_core-2.1.so.6.0.2 \
>>>>>>> +	/usr/lib/libevent_extra-2.1.so.6 \
>>>>>>> +	/usr/lib/libevent_extra-2.1.so.6.0.2 \
>>>>>>> +	/usr/lib/libevent_openssl-2.1.so.6 \
>>>>>>> +	/usr/lib/libevent_openssl-2.1.so.6.0.2 \
>>>>>>> +	/usr/lib/libevent_openssl.so \
>>>>>>> +	/usr/lib/libevent_pthreads-2.1.so.6 \
>>>>>>> +	/usr/lib/libevent_pthreads-2.1.so.6.0.2 \
>>>>>>> +	/usr/lib/libevent_pthreads.so \
>>>>>>> +	/usr/lib/libexpat.so \
>>>>>>> +	/usr/lib/libexslt.so \
>>>>>>> +	/usr/lib/libffi.so.6 \
>>>>>>> +	/usr/lib/libffi.so.6.0.4 \
>>>>>>> +	/usr/lib/libffi.so.7 \
>>>>>>> +	/usr/lib/libffi.so.7.1.0 \
>>>>>>> +	/usr/lib/libfuse.so \
>>>>>>> +	/usr/lib/libfuse.so.2 \
>>>>>>> +	/usr/lib/libfuse.so.2.9.7 \
>>>>>>> +	/usr/lib/libgdbm_compat.so \
>>>>>>> +	/usr/lib/libgdbm_compat.so.3 \
>>>>>>> +	/usr/lib/libgdbm_compat.so.3.0.0 \
>>>>>>> +	/usr/lib/libgdbm.so \
>>>>>>> +	/usr/lib/libgdbm.so.3 \
>>>>>>> +	/usr/lib/libgdbm.so.3.0.0 \
>>>>>>> +	/usr/lib/libgd.so \
>>>>>>> +	/usr/lib/libgd.so.2 \
>>>>>>> +	/usr/lib/libgd.so.2.0.0 \
>>>>>>> +	/usr/lib/libgettextlib-0.19.8.1.so \
>>>>>>> +	/usr/lib/libgettextsrc-0.19.8.1.so \
>>>>>>> +	/usr/lib/libhistory.so.6 \
>>>>>>> +	/usr/lib/libhistory.so.6.3 \
>>>>>>> +	/usr/lib/libhogweed.so.5 \
>>>>>>> +	/usr/lib/libhogweed.so.5.0 \
>>>>>>> +	/usr/lib/libidn.so \
>>>>>>> +	/usr/lib/libidn.so.11 \
>>>>>>> +	/usr/lib/libidn.so.11.6.18 \
>>>>>>> +	/usr/lib/libirs-9.16.22.so \
>>>>>>> +	/usr/lib/libisc-9.16.22.so \
>>>>>>> +	/usr/lib/libisccc-9.16.22.so \
>>>>>>> +	/usr/lib/libisccc.so.161 \
>>>>>>> +	/usr/lib/libisccc.so.161.0.1 \
>>>>>>> +	/usr/lib/libisccfg-9.16.22.so \
>>>>>>> +	/usr/lib/libisccfg.so.163 \
>>>>>>> +	/usr/lib/libisccfg.so.163.0.8 \
>>>>>>> +	/usr/lib/libisc.so.1100 \
>>>>>>> +	/usr/lib/libisc.so.1100.3.2 \
>>>>>>> +	/usr/lib/libisc.so.1104 \
>>>>>>> +	/usr/lib/libisc.so.1104.0.0 \
>>>>>>> +	/usr/lib/libisc.so.1105 \
>>>>>>> +	/usr/lib/libisc.so.1105.1.1 \
>>>>>>> +	/usr/lib/libisc.so.1107 \
>>>>>>> +	/usr/lib/libisc.so.1107.0.5 \
>>>>>> 
>>>>>> See above.
>>>>>> 
>>>>>>> +	/usr/lib/libixml.so \
>>>>>>> +	/usr/lib/libknot.so.10 \
>>>>>>> +	/usr/lib/libknot.so.10.0.0 \
>>>>>>> +	/usr/lib/libknot.so.11 \
>>>>>>> +	/usr/lib/libknot.so.11.0.0 \
>>>>>>> +	/usr/lib/libknot.so.9 \
>>>>>>> +	/usr/lib/libknot.so.9.0.0 \
>>>>>>> +	/usr/lib/liblber-2.3.so.0 \
>>>>>>> +	/usr/lib/liblber-2.3.so.0.2.8 \
>>>>>>> +	/usr/lib/libldap-2.3.so.0 \
>>>>>>> +	/usr/lib/libldap-2.3.so.0.2.8 \
>>>>>>> +	/usr/lib/libldap_r-2.3.so.0 \
>>>>>>> +	/usr/lib/libldap_r-2.3.so.0.2.8 \
>>>>>>> +	/usr/lib/libloc.so.0 \
>>>>>>> +	/usr/lib/libloc.so.0.0.0 \
>>>>>>> +	/usr/lib/liblua-5.3.so \
>>>>>>> +	/usr/lib/liblua.so \
>>>>>>> +	/usr/lib/liblwres.so.161 \
>>>>>>> +	/usr/lib/liblwres.so.161.0.4 \
>>>>>>> +	/usr/lib/libmpfr.so.4 \
>>>>>>> +	/usr/lib/libmpfr.so.4.1.5 \
>>>>>>> +	/usr/lib/libmpx.so.2 \
>>>>>>> +	/usr/lib/libmpx.so.2.0.1 \
>>>>>>> +	/usr/lib/libmpxwrappers.so.2 \
>>>>>>> +	/usr/lib/libmpxwrappers.so.2.0.1 \
>>>>>>> +	/usr/lib/libnettle.so.7 \
>>>>>>> +	/usr/lib/libnettle.so.7.0 \
>>>>>>> +	/usr/lib/libns-9.16.22.so \
>>>>>>> +	/usr/lib/libopcodes-2.32.so \
>>>>>>> +	/usr/lib/libopcodes-2.34.so \
>>>>>>> +	/usr/lib/libopcodes-2.35.1.so \
>>>>>>> +	/usr/lib/libpcre2-posix.so.2 \
>>>>>>> +	/usr/lib/libpcre2-posix.so.2.0.3 \
>>>>>>> +	/usr/lib/libpng12.so \
>>>>>>> +	/usr/lib/libpng12.so.0 \
>>>>>>> +	/usr/lib/libpng12.so.0.57.0 \
>>>>>>> +	/usr/lib/libpng.so.3 \
>>>>>>> +	/usr/lib/libpng.so.3.57.0 \
>>>>>>> +	/usr/lib/libpoppler.so.100 \
>>>>>>> +	/usr/lib/libpoppler.so.100.0.0 \
>>>>>>> +	/usr/lib/libpoppler.so.110 \
>>>>>>> +	/usr/lib/libpoppler.so.110.0.0 \
>>>>>>> +	/usr/lib/libpoppler.so.111 \
>>>>>>> +	/usr/lib/libpoppler.so.111.0.0 \
>>>>>>> +	/usr/lib/libpoppler.so.66 \
>>>>>>> +	/usr/lib/libpoppler.so.66.0.0 \
>>>>>>> +	/usr/lib/libqpdf.so.17 \
>>>>>>> +	/usr/lib/libqpdf.so.17.0.0 \
>>>>>>> +	/usr/lib/libreadline.so.6 \
>>>>>>> +	/usr/lib/libreadline.so.6.3 \
>>>>>>> +	/usr/lib/libsensors.so.4 \
>>>>>>> +	/usr/lib/libsensors.so.4.4.0 \
>>>>>>> +	/usr/lib/libsqlite3.so \
>>>>>>> +	/usr/lib/libthreadutil.so \
>>>>>>> +	/usr/lib/libthreadutil.so.6 \
>>>>>>> +	/usr/lib/libthreadutil.so.6.0.3 \
>>>>>>> +	/usr/lib/libulockmgr.so \
>>>>>>> +	/usr/lib/libulockmgr.so.1 \
>>>>>>> +	/usr/lib/libulockmgr.so.1.0.1 \
>>>>>>> +	/usr/lib/libupnp.so \
>>>>>>> +	/usr/lib/libuuid.so \
>>>>>>> +	/usr/lib/libxml2.so \
>>>>>>> +	/usr/lib/libxslt.so \
>>>>>>> +	/usr/lib/pango \
>>>>>>> +	/usr/lib/perl5/site_perl/5.30.0 \
>>>>>>> +	/usr/lib/perl5/site_perl/5.32.1/Net/IP.pm \
>>>>>>> +	/usr/lib/python3.8/ensurepip/_bundled/pip-19.2.3-py2.py3-none-any.whl \
>>>>>>> +	/usr/lib/python3.8/idlelib/Icons/idle.icns \
>>>>>>> +	/usr/lib/python3.8/lib2to3/Grammar3.8.1.final.0.pickle \
>>>>>>> +	/usr/lib/python3.8/lib2to3/PatternGrammar3.8.1.final.0.pickle \
>>>>>> 
>>>>>> Why can we not delete /usr/lib/python3.8 as a whole? This should not be needed any more.
>>>>> 
>>>>> Yes, good point. I was running the comparison based on Core Update 164, but with
>>>>> Python being updated to 3.10.x in Core Update 165, this folder won't be necessary
>>>>> anymore completely.
>>>>> 
>>>>>> 
>>>>>>> +	/usr/lib/sqlite3.34.0 \
>>>>>>> +	/usr/lib/squid/basic_nis_auth \
>>>>>>> +	/usr/lib/squid/ext_time_quota_acl \
>>>>>>> +	/usr/lib/tcl8/8.4/platform-1.0.14.tm \
>>>>>>> +	/usr/lib/tcl8/8.4/platform-1.0.15.tm \
>>>>>>> +	/usr/lib/tcl8/8.5/msgcat-1.6.0.tm \
>>>>>>> +	/usr/lib/tcl8/8.5/tcltest-2.4.0.tm \
>>>>>>> +	/usr/lib/tcl8/8.6/http-2.8.9.tm \
>>>>>>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.0.4.tm \
>>>>>>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm \
>>>>>> 
>>>>>> Why do we even ship tcl? Is anything reliant on this?
>>>>> 
>>>>> I don't know.
>>>>> 
>>>>>>> +	/usr/lib/tdbc1.1.2 \
>>>>>>> +	/usr/lib/tdbcmysql1.1.2 \
>>>>>>> +	/usr/lib/tdbcodbc1.1.2 \
>>>>>>> +	/usr/lib/tdbcpostgres1.1.2 \
>>>>>>> +	/usr/lib/thread2.8.6 \
>>>>>>> +	/usr/libexec/xtables-addons \
>>>>>>> 	/usr/local/bin/ovpn-ccd-convert \
>>>>>>> -	/usr/local/bin/rebuild-initrd
>>>>>>> +	/usr/local/bin/rebuild-initrd \
>>>>>>> +	/usr/local/bin/xt_geoip_build \
>>>>>>> +	/usr/local/bin/xt_geoip_update \
>>>>>>> +	/usr/sbin/batctl \
>>>>>>> +	/usr/sbin/fbset \
>>>>>>> +	/usr/sbin/update-usbids.sh \
>>>>>>> +	/usr/sbin/uuidd \
>>>>>>> +	/usr/share/doc/fireinfo \
>>>>>>> +	/usr/share/GeoIP \
>>>>>>> +	/usr/share/zoneinfo/posix/US/Pacific-New \
>>>>>>> +	/usr/share/zoneinfo/right/US/Pacific-New \
>>>>>>> +	/usr/share/zoneinfo/US/Pacific-New \
>>>>>>> +	/var/lib/GeoIP
>>>>>> 
>>>>>> What method did you use to identify all these files?
>>>>> 
>>>>> On the IPFire installation in question, I ran
>>>>> 
>>>>>> find bin/ etc/ lib/ opt/ run/ sbin/ srv/ usr/ var/ | sort > ~/ist
>>>>> 
>>>>> and scp'ed that file onto my workstation. Then, I downloaded the ISO for Core Update 164
>>>>> (because I wanted to have something stable, which is why I did not choose C165 for this),
>>>>> installed it in a VM, rebooted it, mounted the root partition and executed the same find
>>>>> command with a different file name.
>>>> 
>>>> Okay, so this is based on a random system. Not bad, but would be better if we could diff two filelists from two core updates, wouldn’t it?
>>> 
>>> I am not sure if I understood you here: The filelist above contains all leftovers that have
>>> agglomerated since Core Update 110. Comparing two filelists would only cover a fraction of
>>> it, since this comparison cannot skip any update.
>>> 
>>> However: Do you see a feasible way to obtain such lists, and perhaps scipt the generation of
>>> such a list of orphaned files?
>> 
>> Yes, we could use “git archive” to create a tarball from any branch, so in this case a core update from the past.
>> 
>> We could then only extract (or directly send to stdout) all files in config/rootfiles/command, sort the output and compare it to what is currently in config/rootfiles/common. Stretch goal is doing this for all architectures :)
>> 
>> Here is the command for the main file list:
>> 
>>  git archive origin/core160 | tar --extract --to-stdout config/rootfiles/common | grep -v "^#" | sort -u
>> 
>> This could be integrated into make.sh :)
>> 
>> -Michael
>> 
>>> 
>>> Thanks, and best regards,
>>> Peter Müller
>>> 
>>>> 
>>>>> 
>>>>> A
>>>>> 
>>>>>> diff -Naur soll ist | less
>>>>> 
>>>>> (sorry for the German) outputs a long list, which I vetted manually since some add-ons
>>>>> were installed on the productive system, and I did not want to pipe the output into the
>>>>> rm command blindly.
>>>>> 
>>>>> Thanks, and best regards,
>>>>> Peter Müller
>>>>> 
>>>>>> 
>>>>>> -Michael
>>>>>> 
>>>>>>> 
>>>>>>> # Delete old 2007 Pakfire key from GPG keyring
>>>>>>> export GNUPGHOME="/opt/pakfire/etc/.gnupg"
>>>>>>> -- 
>>>>>>> 2.34.1
>>
  
Peter Müller April 3, 2022, 2:49 p.m. UTC | #9
Hello Michael,
hello *,

looking at

>> +	/usr/lib/tcl8/8.4/platform-1.0.14.tm \
>> +	/usr/lib/tcl8/8.4/platform-1.0.15.tm \
>> +	/usr/lib/tcl8/8.5/msgcat-1.6.0.tm \
>> +	/usr/lib/tcl8/8.5/tcltest-2.4.0.tm \
>> +	/usr/lib/tcl8/8.6/http-2.8.9.tm \
>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.0.4.tm \
>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm \
> 
> Why do we even ship tcl? Is anything reliant on this?

in particular and the tcl rootfile in general, I would like to bring your question up again.

This is especially because the current tcl rootfile ships file I definitely expect in the
sqlite territory, not here:

> #usr/lib/sqlite3.36.0
> usr/lib/sqlite3.36.0/libsqlite3.36.0.so
> usr/lib/sqlite3.36.0/pkgIndex.tcl

To my understanding, this makes it hard to understand if the sqlite version carried out
via tcl takes precedence, or if the _actual_ sqlite version is effective.

Unless anybody has an idea why we actually need to ship tcl, I would like to try out what
happens if we don't. :-)

Thanks, and best regards,
Peter Müller
  
Michael Tremer April 4, 2022, 8:49 a.m. UTC | #10
Hello,

> On 3 Apr 2022, at 15:49, Peter Müller <peter.mueller@ipfire.org> wrote:
> 
> Hello Michael,
> hello *,
> 
> looking at
> 
>>> +	/usr/lib/tcl8/8.4/platform-1.0.14.tm \
>>> +	/usr/lib/tcl8/8.4/platform-1.0.15.tm \
>>> +	/usr/lib/tcl8/8.5/msgcat-1.6.0.tm \
>>> +	/usr/lib/tcl8/8.5/tcltest-2.4.0.tm \
>>> +	/usr/lib/tcl8/8.6/http-2.8.9.tm \
>>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.0.4.tm \
>>> +	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm \
>> 
>> Why do we even ship tcl? Is anything reliant on this?
> 
> in particular and the tcl rootfile in general, I would like to bring your question up again.

TCL is required at build time for various packages. However, at runtime there is one:

root@michael:/build/ipfire-2.x# grep -r "^#\!.*tcl" build
build/usr/sbin/usb_modeswitch_dispatcher:#!/usr/bin/tclsh
grep: build/usr/share/misc/magic.mgc: binary file matches

That means we will need to ship tcl.

> This is especially because the current tcl rootfile ships file I definitely expect in the
> sqlite territory, not here:
> 
>> #usr/lib/sqlite3.36.0
>> usr/lib/sqlite3.36.0/libsqlite3.36.0.so
>> usr/lib/sqlite3.36.0/pkgIndex.tcl

Since that script is not using sqlite, you can disable building both modules.

> To my understanding, this makes it hard to understand if the sqlite version carried out
> via tcl takes precedence, or if the _actual_ sqlite version is effective.

They serve different purposes.

> Unless anybody has an idea why we actually need to ship tcl, I would like to try out what
> happens if we don't. :-)

See above.

> Thanks, and best regards,
> Peter Müller

-Michael
  

Patch

diff --git a/config/rootfiles/core/166/update.sh b/config/rootfiles/core/166/update.sh
index 1370555b0..b556986a5 100644
--- a/config/rootfiles/core/166/update.sh
+++ b/config/rootfiles/core/166/update.sh
@@ -32,13 +32,269 @@  for (( i=1; i<=$core; i++ )); do
 done
 
 # Remove files
-rm -vf \
+rm -rvf \
+	/bin/setserial \
 	/etc/dracut.conf \
+	/etc/fonts/conf.d/30-urw-aliases.conf \
+	/etc/grub.d/README \
+	/etc/rc.d/init.d/networking/red.up/99-geoip-database \
+	/etc/udev/rules.d/99-fuse.rules \
+	/lib/firmware/amd-ucode/microcode_amd.bin.asc \
+	/lib/firmware/amd-ucode/microcode_amd_fam15h.bin.asc \
+	/lib/firmware/amd-ucode/microcode_amd_fam16h.bin.asc \
+	/lib/firmware/amd-ucode/microcode_amd_fam17h.bin.asc \
+	/lib/firmware/ath10k/QCA4019/hw1.0/notice_ath10k_firmware-5.txt \
+	/lib/firmware/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt \
+	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt \
+	/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt \
+	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt \
+	/lib/firmware/ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt \
+	/lib/firmware/ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt \
+	/lib/firmware/ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt \
+	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt \
+	/lib/firmware/ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt \
+	/lib/firmware/ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt \
+	/lib/firmware/ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt \
+	/lib/firmware/atusb/ChangeLog \
+	/lib/firmware/check_whence.py \
+	/lib/firmware/cis/src \
+	/lib/firmware/copy-firmware.sh \
+	/lib/firmware/cxgb4/t4fw-1.20.8.0.bin \
+	/lib/firmware/cxgb4/t4fw-1.24.3.0.bin \
+	/lib/firmware/cxgb4/t5fw-1.20.8.0.bin \
+	/lib/firmware/cxgb4/t5fw-1.24.3.0.bin \
+	/lib/firmware/cxgb4/t6fw-1.20.8.0.bin \
+	/lib/firmware/cxgb4/t6fw-1.24.3.0.bin \
+	/lib/firmware/GPL-2 \
+	/lib/firmware/GPL-3 \
+	/lib/firmware/isci/README \
+	/lib/firmware/LICENCE.* \
+	/lib/firmware/Makefile \
+	/lib/firmware/qca/NOTICE.txt \
+	/lib/firmware/qcom/NOTICE.txt \
+	/lib/firmware/README \
+	/lib/firmware/WHENCE \
+	/lib/kbd/keymaps/i386/qwerty/fi-latin1.map.gz \
+	/lib/kbd/keymaps/i386/qwerty/fi-latin9.map.gz \
+	/lib/ld-2.29.so \
+	/lib/ld-2.31.so \
+	/lib/ld-2.32.so \
+	/lib/libcap.so \
+	/lib/libhistory.so.5 \
+	/lib/libhistory.so.5.2 \
+	/lib/libip4tc.so.0 \
+	/lib/libip4tc.so.0.1.0 \
+	/lib/libip6tc.so.0 \
+	/lib/libip6tc.so.0.1.0 \
+	/lib/libiptc.so \
+	/lib/libiptc.so.0 \
+	/lib/libiptc.so.0.0.0 \
+	/lib/libnss_nis-2.31.so \
+	/lib/libnss_nisplus-2.31.so \
+	/lib/libnss_nisplus.so.2 \
+	/lib/libnss_nis.so.2 \
+	/lib/libproc-3.2.8.so \
+	/lib/libreadline.so.5 \
+	/lib/libreadline.so.5.2 \
+	/lib/libsysfs.so \
+	/lib/libsysfs.so.1 \
+	/lib/libsysfs.so.1.0.3 \
+	/lib/udev/bluetooth_serial \
+	/lib/udev/rules.d/24-bluetooth.rules \
+	/lib/xtables/libxt_IMQ.so \
 	/opt/pakfire/pakfire-2007.key \
+	/sbin/mount.fuse \
+	/sbin/raw \
+	/sbin/xfs_scrub \
+	/sbin/xfs_scrub_all \
+	/srv/web/ipfire/cgi-bin/bluetooth.cgi \
+	/usr/bin/ez-ipupdate \
+	/usr/bin/fusermount \
+	/usr/bin/gawk-5.1.0 \
+	/usr/bin/gcov-dump \
+	/usr/bin/getunimap \
 	/usr/bin/mkinitrd \
+	/usr/bin/mtools \
+	/usr/bin/pango-querymodules \
+	/usr/bin/perl5.30.0 \
+	/usr/bin/setlogcons \
+	/usr/bin/setvesablank \
+	/usr/bin/ulockmgr_server \
+	/usr/include/python2.7 \
+	/usr/lib/cairo \
 	/usr/lib/dracut \
+	/usr/lib/findutils/bigram \
+	/usr/lib/findutils/code \
+	/usr/lib/gawk/testext.so \
+	/usr/lib/itcl4.2.1 \
+	/usr/lib/libasan.so.5 \
+	/usr/lib/libasan.so.5.0.0 \
+	/usr/lib/libbfd-2.32.so \
+	/usr/lib/libbfd-2.34.so \
+	/usr/lib/libbfd-2.35.1.so \
+	/usr/lib/libbind9-9.16.22.so \
+	/usr/lib/libbind9.so.161 \
+	/usr/lib/libbind9.so.161.0.4 \
+	/usr/lib/libblkid.so \
+	/usr/lib/libdns-9.16.22.so \
+	/usr/lib/libdnssec.so.7 \
+	/usr/lib/libdnssec.so.7.0.0 \
+	/usr/lib/libdns.so.* \
+	/usr/lib/libevent-2.1.so.6 \
+	/usr/lib/libevent-2.1.so.6.0.2 \
+	/usr/lib/libevent_core-2.1.so.6 \
+	/usr/lib/libevent_core-2.1.so.6.0.2 \
+	/usr/lib/libevent_extra-2.1.so.6 \
+	/usr/lib/libevent_extra-2.1.so.6.0.2 \
+	/usr/lib/libevent_openssl-2.1.so.6 \
+	/usr/lib/libevent_openssl-2.1.so.6.0.2 \
+	/usr/lib/libevent_openssl.so \
+	/usr/lib/libevent_pthreads-2.1.so.6 \
+	/usr/lib/libevent_pthreads-2.1.so.6.0.2 \
+	/usr/lib/libevent_pthreads.so \
+	/usr/lib/libexpat.so \
+	/usr/lib/libexslt.so \
+	/usr/lib/libffi.so.6 \
+	/usr/lib/libffi.so.6.0.4 \
+	/usr/lib/libffi.so.7 \
+	/usr/lib/libffi.so.7.1.0 \
+	/usr/lib/libfuse.so \
+	/usr/lib/libfuse.so.2 \
+	/usr/lib/libfuse.so.2.9.7 \
+	/usr/lib/libgdbm_compat.so \
+	/usr/lib/libgdbm_compat.so.3 \
+	/usr/lib/libgdbm_compat.so.3.0.0 \
+	/usr/lib/libgdbm.so \
+	/usr/lib/libgdbm.so.3 \
+	/usr/lib/libgdbm.so.3.0.0 \
+	/usr/lib/libgd.so \
+	/usr/lib/libgd.so.2 \
+	/usr/lib/libgd.so.2.0.0 \
+	/usr/lib/libgettextlib-0.19.8.1.so \
+	/usr/lib/libgettextsrc-0.19.8.1.so \
+	/usr/lib/libhistory.so.6 \
+	/usr/lib/libhistory.so.6.3 \
+	/usr/lib/libhogweed.so.5 \
+	/usr/lib/libhogweed.so.5.0 \
+	/usr/lib/libidn.so \
+	/usr/lib/libidn.so.11 \
+	/usr/lib/libidn.so.11.6.18 \
+	/usr/lib/libirs-9.16.22.so \
+	/usr/lib/libisc-9.16.22.so \
+	/usr/lib/libisccc-9.16.22.so \
+	/usr/lib/libisccc.so.161 \
+	/usr/lib/libisccc.so.161.0.1 \
+	/usr/lib/libisccfg-9.16.22.so \
+	/usr/lib/libisccfg.so.163 \
+	/usr/lib/libisccfg.so.163.0.8 \
+	/usr/lib/libisc.so.1100 \
+	/usr/lib/libisc.so.1100.3.2 \
+	/usr/lib/libisc.so.1104 \
+	/usr/lib/libisc.so.1104.0.0 \
+	/usr/lib/libisc.so.1105 \
+	/usr/lib/libisc.so.1105.1.1 \
+	/usr/lib/libisc.so.1107 \
+	/usr/lib/libisc.so.1107.0.5 \
+	/usr/lib/libixml.so \
+	/usr/lib/libknot.so.10 \
+	/usr/lib/libknot.so.10.0.0 \
+	/usr/lib/libknot.so.11 \
+	/usr/lib/libknot.so.11.0.0 \
+	/usr/lib/libknot.so.9 \
+	/usr/lib/libknot.so.9.0.0 \
+	/usr/lib/liblber-2.3.so.0 \
+	/usr/lib/liblber-2.3.so.0.2.8 \
+	/usr/lib/libldap-2.3.so.0 \
+	/usr/lib/libldap-2.3.so.0.2.8 \
+	/usr/lib/libldap_r-2.3.so.0 \
+	/usr/lib/libldap_r-2.3.so.0.2.8 \
+	/usr/lib/libloc.so.0 \
+	/usr/lib/libloc.so.0.0.0 \
+	/usr/lib/liblua-5.3.so \
+	/usr/lib/liblua.so \
+	/usr/lib/liblwres.so.161 \
+	/usr/lib/liblwres.so.161.0.4 \
+	/usr/lib/libmpfr.so.4 \
+	/usr/lib/libmpfr.so.4.1.5 \
+	/usr/lib/libmpx.so.2 \
+	/usr/lib/libmpx.so.2.0.1 \
+	/usr/lib/libmpxwrappers.so.2 \
+	/usr/lib/libmpxwrappers.so.2.0.1 \
+	/usr/lib/libnettle.so.7 \
+	/usr/lib/libnettle.so.7.0 \
+	/usr/lib/libns-9.16.22.so \
+	/usr/lib/libopcodes-2.32.so \
+	/usr/lib/libopcodes-2.34.so \
+	/usr/lib/libopcodes-2.35.1.so \
+	/usr/lib/libpcre2-posix.so.2 \
+	/usr/lib/libpcre2-posix.so.2.0.3 \
+	/usr/lib/libpng12.so \
+	/usr/lib/libpng12.so.0 \
+	/usr/lib/libpng12.so.0.57.0 \
+	/usr/lib/libpng.so.3 \
+	/usr/lib/libpng.so.3.57.0 \
+	/usr/lib/libpoppler.so.100 \
+	/usr/lib/libpoppler.so.100.0.0 \
+	/usr/lib/libpoppler.so.110 \
+	/usr/lib/libpoppler.so.110.0.0 \
+	/usr/lib/libpoppler.so.111 \
+	/usr/lib/libpoppler.so.111.0.0 \
+	/usr/lib/libpoppler.so.66 \
+	/usr/lib/libpoppler.so.66.0.0 \
+	/usr/lib/libqpdf.so.17 \
+	/usr/lib/libqpdf.so.17.0.0 \
+	/usr/lib/libreadline.so.6 \
+	/usr/lib/libreadline.so.6.3 \
+	/usr/lib/libsensors.so.4 \
+	/usr/lib/libsensors.so.4.4.0 \
+	/usr/lib/libsqlite3.so \
+	/usr/lib/libthreadutil.so \
+	/usr/lib/libthreadutil.so.6 \
+	/usr/lib/libthreadutil.so.6.0.3 \
+	/usr/lib/libulockmgr.so \
+	/usr/lib/libulockmgr.so.1 \
+	/usr/lib/libulockmgr.so.1.0.1 \
+	/usr/lib/libupnp.so \
+	/usr/lib/libuuid.so \
+	/usr/lib/libxml2.so \
+	/usr/lib/libxslt.so \
+	/usr/lib/pango \
+	/usr/lib/perl5/site_perl/5.30.0 \
+	/usr/lib/perl5/site_perl/5.32.1/Net/IP.pm \
+	/usr/lib/python3.8/ensurepip/_bundled/pip-19.2.3-py2.py3-none-any.whl \
+	/usr/lib/python3.8/idlelib/Icons/idle.icns \
+	/usr/lib/python3.8/lib2to3/Grammar3.8.1.final.0.pickle \
+	/usr/lib/python3.8/lib2to3/PatternGrammar3.8.1.final.0.pickle \
+	/usr/lib/sqlite3.34.0 \
+	/usr/lib/squid/basic_nis_auth \
+	/usr/lib/squid/ext_time_quota_acl \
+	/usr/lib/tcl8/8.4/platform-1.0.14.tm \
+	/usr/lib/tcl8/8.4/platform-1.0.15.tm \
+	/usr/lib/tcl8/8.5/msgcat-1.6.0.tm \
+	/usr/lib/tcl8/8.5/tcltest-2.4.0.tm \
+	/usr/lib/tcl8/8.6/http-2.8.9.tm \
+	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.0.4.tm \
+	/usr/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm \
+	/usr/lib/tdbc1.1.2 \
+	/usr/lib/tdbcmysql1.1.2 \
+	/usr/lib/tdbcodbc1.1.2 \
+	/usr/lib/tdbcpostgres1.1.2 \
+	/usr/lib/thread2.8.6 \
+	/usr/libexec/xtables-addons \
 	/usr/local/bin/ovpn-ccd-convert \
-	/usr/local/bin/rebuild-initrd
+	/usr/local/bin/rebuild-initrd \
+	/usr/local/bin/xt_geoip_build \
+	/usr/local/bin/xt_geoip_update \
+	/usr/sbin/batctl \
+	/usr/sbin/fbset \
+	/usr/sbin/update-usbids.sh \
+	/usr/sbin/uuidd \
+	/usr/share/doc/fireinfo \
+	/usr/share/GeoIP \
+	/usr/share/zoneinfo/posix/US/Pacific-New \
+	/usr/share/zoneinfo/right/US/Pacific-New \
+	/usr/share/zoneinfo/US/Pacific-New \
+	/var/lib/GeoIP
 
 # Delete old 2007 Pakfire key from GPG keyring
 export GNUPGHOME="/opt/pakfire/etc/.gnupg"