5.0.0 06-08-2021 (in development) Updated for Buster to Bullseye upgrade. Removed the redundant python, tmp and vbox functions. Replaced the -z option with -m to open README in text editor instead of zenity. Added more extensive cleanup of redundant configuration files, debconf preseding, handling minissdpd (which still isn't fixed...) and predistupgrading systemd. Changed reading PTS to use parted instead of udevadm. Changed ~/obsolete.txt to hold both unavailable and orphaned packages. Changed rerun functionality, using Stage functions, variables and files instead of -r option. Changed the code to switch off any screenlocker to use xset. Added a partial fix for the UEFI distribution subdirectory mess. Added python3.9 to PreDistUpgrade to prevent losing half the system. 4.2.0 27-08-2017 (not released) Changed option letter to specify configuration file from s to c. Added keys and sources functionality (ArgKeys/ArgSources). Added ArgPython to remove the python alternative. This made no sense, as 'python' will never be python3 - see https://www.python.org/dev/peps/pep-0394/ and also the thread at https://lists.debian.org/debian-devel/2017/08/msg00048.html, in particular msg00074.html and msg00093.html. 4.1.0 18-07-2017 (uploaded and set in DNS) Added code to permanently remove /etc/apt/trusted.gpg without losing any keys. 4.0.0 17-07-2017 (uploaded and set in DNS) Upgraded for Jessie to Stretch upgrade. Removed several functions that are no longer useable (left the extensive GRUB check in - with minor modifications). Added (not all from main upgrade scripts and not necessarily in this order): optional apt clean blocking different old state/new state checks option to specify old release for rerun (needed if info file already updated) ArgUpgrade blocking of PostDMORemoval, because that package is from Stretch VBox switch (no more packages in Debian) default removal of all extra repos from main sources.list killing screenlockers unholding held packages removal of /usr/sbin/policy-rc.d deleting several diversion originals that came back too soon attempt at apt --fix-broken after failed upgrade actions removing no longer supported packages upgrading system-adjustments (both 8->9 and 9->10) configuration updates running adjust.py from solydxk-system (no time to incorporate functionality) check for unavailable packages debug option to Prompt, to emable optional halt/abort after every major action immediate return on empty $1 and report arguments to Process suggestion for taller terminal (at least 40 lines) because of (final) messages optional reboot README and -z option to display with zenity through LMD Split off SetOptYes from CheckDE. Removed tee logging for several apt-get actions (just look at apt's logs). Lots of other small changes... Abandoned upgrading dpkg and apt separately/early. Was suggested as THE thing to do on debian-user. Caused a complete mess. Added creating/removing dummy update-grub in case GRUB is not installed, to avoid problems with maintainer scripts calling update-grub. Added changing permissions of /etc/apt/trusted.gpg to 0644 because of _apt. Added code to remove old diversions that were somehow left in when system-adjustments-8 was replaced by -9. 3.0.1 07-01-2017 (not released) Modified CheckDE to get rid of unnecessary use of $1/$2. Changed Sources (removed GetMirrorsList, added SourceLine) because the python-apt file is kept up to date again. Removed sourcing upgrade.ini in the upgrade function (not useful - was never documented anyway). Changed ShowExecs to ShowRootExecs because that's what it does. Added replace-conf to Process function. 3.0.0 04-08-2016 (uploaded and set in DNS) Removed the batch function keyword. Batch is now automatic for the functions that support it. Enabled batch update with specified actions (particularly useful for keeping the ISOs up-to-date with just 'update upgrade'). Changed use of no/exc action keyword to -e option. Fixed missing check for existence of LocalhostRepo variables before actually using them... Reference ISO check for just one file (which doesn't seem to change much anyway) is a bit over the top. Not just skip if variable is empty, but also if ISO is missing. Enabled switchting -y on after starting a batch without it, using -p. Only useable if the update function's upgrade action is involved. Uses the /var/lib/dpkg/lock file's datestamp to confirm the first of the batch's upgrade actions was executed and offers to abort if it wasn't. This will cause unwanted interruptions if there really was nothing to upgrade. Implemented the 'link related' changes from /usr/lib/solydxk/system/adjust.py. Added OffLine var (set in iso.ini) for a more general way of specifying the offline packages. The changes with regard to GRUB's boot image are questionable and need to be examined. Removed separate package management log. Changed CheckPackages to comply with changes to another set of scripts (ra - repository actions). Added ScriptPackageArchive. Added updatemanagertray.desktop and the de, fr, it and pt welcome.html files to the overwrites and updated the ca, en and nl ones. Replaced UDISKS_PARTITION_TABLE_SCHEME with ID_PART_TABLE_TYPE in the code determining the PTS, because the former doesn't exist if the disk isn't mounted through udisks. This makes PTS dos or gpt instead of mbr or gpt. So be it. Improved suppressing of sources.list's backports line (in Sources() function). Necessary because some firmware packages were taken from backports (and failed because of dependencies). Currently linked to BuildMirror variable being non-empty (needs a better way). Added check for existence of $ISOPath/sources.list to build sequence. Added -t option to include SolydXK repo's testing component in sources.list. Same provision as for backports line suppression. Added '-flat' to the relevant line in the LightDM Greeter section in iso-update and modified the Plymouth Theme selection to conform to the (new) Constructor's. Also added new splash.png and plymouthd.conf files to the overwrites. Added code to abort a running batch in a clean way, after the current action. Removed --force-yes from various apt-get option strings. Changed ISO checksum files to SHA256. Removed the checksum files from the live boot directory. Made CheckPackages write a mismatch's diff to the main logfile. Changed setting up of the main configuration file so ~/.config is checked first. Enabled replacing an existing setup in a root owned directory. ================================================================================ Moved all ISO related functions to a separate script set called imt (ISO management tools). Major change, so version 2.2.0 becomes 3.0.0. ================================================================================ Moved the shell functions to a sourced file 'functions' which is built from a function library (called with 'solydfixes -Dmf'), so maintaining the same functions across several applications doesn't become (more of) a nightmare... Changed the extension of the configuration file to conf. This file is no longer necessary, so the example file is no longer supplied either. Changed the replacer so it no longer handles an old setup which isn't installed in a separate directory. Also added a warning about the ISO related changes. Moved the library files to a (/usr/local/)lib subdirectory, the GetScript function to the function library and the replacer script to the function library set. Removed the -Dmf option as building the functions file is now done with the admin script. Moved logfile(s) out of separate subdirectory to /var/log. Changed the InfoSet function to report 'not set' for every variable that might be unset. Restored --force-yes functionality because omitting it WILL cause problems (with downgrading in particular). Modified CheckDE to set AptForce with the correct options (--force-yes or --allow-downgrades, --allow-remove-essential and --allow-change-held-packages). Moved/split OptYes setting to allow it to pick up AptForce. Changed force/allow selection to check for apt version 1.1, which was the first one that deprecated --force-yes. Replaced messy editor construction with check for kde-open. Changed 'replacer' to 'install' and made GetScript try harder to find it. Also added installing anew instead of upgrading and a remove function, using a 'remove' script. 2.1.0 29-09-2015 (uploaded and set in DNS) Another massive update (half a year's worth), mainly to do with support for the Enthusiast's Editions and batch processing. This would allow something like 'solydfixes iso batch -y k32 x32 ke32 ke64 xe32 xe64 update build upload' (not actually used that yet, but it *is* possible...). Build structure specifiers can now be entered without spaces, i.e. k e 32 and ke32 are identical. Batch actually *requires* them to be entered without spaces. While the script's iso functions are still compatible with the Constructor's in theory, in practice I would advise against using them together. Added listing of available build structures (iso list). Changed logging so apt-get and dpkg 'tee' into package-management.log. Added checking of relevant packages, both as a separate function (iso packages, also sourcing iso.ini) and as part of iso update. Enabled selective updating by making almost every section of iso update optional. Added Hold functionality, using a local repo, to avoid problems with packages in Testing becoming incompatible (live-boot, initially). Enabled the local repo for other uses as well, like speeding up upgrading and providing special packages. Restoring sources.list is done in iso build. Added NotUnavailable (iso.ini) like NotOrphaned, to prevent packages from disappearing simply because they were (temporarily) removed from Testing. Changed the code that specifies the ISO (e.g. in the menus) to include the Debian release number. Added automatic mounting (in /media) using udisksctl of external drives, provided their partitions are properly labelled. Added -s option for using a settings file other than solydfixes.ini. Brought on by needing to run iso update from a 32-bit VM occasionally, because virtualbox-guest-dkms refuses to build 32-bit modules in a chroot on a 64-bit host, even if the right the kernel *is* available (I fsckin' HATE junk that only looks at uname!). Changed automatic mounting to use mount (in /mnt) if the iso structure's partition is on the same device (udisksctl doesn't work then). Split Removals into UpdateRemovals (used in iso update) and BuildRemovals (iso build), as it isn't necessary (and sometimes not even desirable) to remove things like logs at every update. Also moved use of SyslinuxBinaries and checking trackers and webseeds (back) to iso build. Renamed iso-update.ini to iso.ini, which is sourced for both functions. Got rid of (most of) the 'device node not found' errors by replacing update-grub by a dummy script during iso update's dist-upgrade (does no harm as the iso's root grub.cfg is removed during building anyway). Added rotating the logs. Added optional sourcing of a file called debug in the script's directory, mainly for use with the get function. Removed the version number option for that function. Added signature checking and selectively sourcing bits of the main script. Removed the simple text download option from the website. Moved sourcing iso.ini to immediately before sourcing solydfixes.ini (for all iso functions), so the latter can use variables set in the former. First attempt at making the scripts useable for other ISOs than K(EE) and X(EE). Unpacking works. Everything else seems to need work (or perhaps the ISO used just wasn't good enough - it did have items that weren't related to the installed desktop environment...) 2.0.0 15-03-2015 (uploaded but not set in DNS) Implemented a large number of changes, to do with adding iso unpack and build functionality. Moved all update/upgrade/cleanup related code that is part of the Constructor's build function to iso update. Added options (undocumented - mainly for testing/debugging) to download a new version of the script (using 'get') from the local server and specifying a version number. Added Tika's instructions to the package, modified for the new iso functions, keeping the old version (in the same file) as 'section II'. Renamed the file 'building-an-iso'. 1.9.1 23-02-2015 (uploaded and set in DNS) Moved all remaining templates to 'overwrites' and added FillIn functionality from ra (don't ask... ;-] ) to handle modifying them during iso update. Added latest changes mentioned in the 'Nightly builds' thread. Preparations for iso unpack action (no hook yet, so not yet tested). 1.9.0 22-02-2015 (uploaded but not set in DNS) Added more items to the cleanup lists. Worked around KDE not properly handling xdg-open with a text file once the script has switched to root (even though the xdg-open call is done as the user) by directly calling the binary of the user's preferred editor. This requires an extra internal option (--editor) and code to prevent the user from starting the script as root. Implemented full chrooting. Completed new download functionality (xz tarball) with optional symlinking. Added downloading the offline packages and building the EFI modules, using Colin Watson's scripts (slightly modified) from the debian-installer source tarball. 1.8.8 11-02-2015 (not uploaded and not set in DNS) Added functionality to the cmp-isos argument for comparing the ISOs' /etc structures (-e option) and the diff-isos argument (with -o option) for comparing individual items (needs work...). Also added CheckBuildsPath function: checks the builds path and mounts an external disk (if that's where the builds path points to) if necessary. Updated solydfixes.templates with the result of the cmp-isos -e comparison and the other changes mentioned in the 'Nightly builds' forum thread. 1.8.7 31-01-2015 (uploaded and set in DNS) Installing/checking lightdm added for non-Wheezy KDE installs. Quotes around check for $C in Process where $C can be 'install --reinstall'. 1.8.6 31-01-2015 (uploaded and set in DNS) Forgot the updating of updatemanager.hist... 1.8.5 30-01-2015 (uploaded and set in DNS) Removed the downgrade action from Process. This was only used once in 1.7.0 and I'm not sure the translation to install --reinstall was correct all the time. Added -W option to main upgrade function for upgrading a BE install to Wheezy instead of Jessie. Several relatively small changes throughout the code to make this possible. Modified Process so adding extra items depending on a control variable can also use package names directly rather than held in a variable. Variable still works (needs to have a $ prepended). Also added checking for the absence of the control variable, using a !. Other actions than install can also use this functionality, but not with more than one package as argument. Purging/removing items can have an asterisk as last character. This skips the IsInstalled check. Synchronised the pre and post upgrade variables with the forum threads. 1.8.4 29-01-2015 (uploaded and set in DNS) Corrected the text in the first comment (no idea how that got messed up...). Added a gksu action to change /etc/xdg/autostart/xhost-plus.desktop, so root can access the user's X server. Needs more work (optional command tail). Added a few small debug functions: rootapps which displays .desktop files that use gksu(do) or similar and cfgs to show some system files where text containing SolydXK might/should show up. Changed the upgrade function to be more in line with the new instructions in the 'BE to Jessie upgrade' forum thread. Went back to using readlink instead of realpath to determine the directory the script is running in, because realpath appears to be missing from the BEs. Changed the solydfixes.templates version check so it isn't necessary to replace the templates whenever the script's version number changes. 1.8.3 24-01-2015 (uploaded and set in DNS) Added some more checks to the Software Manager menu entry fix. Cleaned up the code, also for the 'browser bookmark' function. Split off FixFile function. More changes to the script download code. 1.8.2 22-01-2015 (uploaded but not set in DNS) Fix for script not running with ./solydfixes (sudo $0 won't work after cd to /tmp/solydfixes.d...). 1.8.1 21-01-2015 (uploaded but not set in DNS) Added more ISO build related functionality. Uses a solydfixes.templates file (which will be downloaded if not available) and requires solydfixes.ini (ditto). Also needs lftp if things are to be uploaded. Uploading requires an extra hack to the root call, passing an 'internal option' --remotepass, because gkeyring refuses to work for the user once the script has switched to root. Some changes to the script download code in preparation for downloads that consist of a tar.xz tarball instead of a single file. 1.8.0 11-01-2015 (uploaded but not set in DNS) Almost complete rewrite. Removed all the code to do with kdenext downgrade and added functionality to upgrade the Home and Business Editions to Debian Jessie. Added logging, a reconfigure action for the Process function, status information, installing/selecting the new icon theme, fixes for browser bookmarks showing up in the Kickoff search box and some menu issues with the Software Manager, comparing packages installed in ISO builds and various other small improvements. 1.7.0 09-10-2014 (uploaded but not set in DNS) Added a downgrade action to the Progress function and a check for the foreign architecture being set when the 'end colon' is used in an action. Also a somewhat unsuccessful attempt to provide a fix for a broken dbus security update, which failed because of an unsatisfiable systemd dependency. On an amd64 install, it would break more than it fixed. 1.6.0 22-07-2014 Improved DMO removal by adding installing libavcodec-extra-55 after removal. Included optionally adding the dpkg purge options from 1.5.2 to other Process actions by preceding them with a colon. Added a script version check using a DNS query for solydfixes-app.duinsoft.nl and an option (-n) to download the current version. Added a debug switch (-D) for testing. Also used to get confirmation when downloading an older version of the script (-nDD). 1.5.2 15-07-2014 Added some more packages to the pre downgrade purge. Changed the Process function so purge includes dpkg's --force-depends and --force-remove-reinstreq options. 1.5.1 15-07-2014 Improved the DMO removal code so it won't choke on packages that are installed twice (i.e. i386 and amd64). 1.5.0 09-07-2014 The -y switch now also sets the necessary options and variables to make dpkg, debconf and apt-listchanges run without requiring any user input. Enabled adding/changing the main variables using a sourced solydfixes.ini file. Added pre and post dist-upgrade purge/upgrade/install actions. Moved apt-get actions to Process function and split off several other functionalities to separate functions. Also added the -m option to un-DMO an install. 1.4.1 07-07-2014 Rewrote the package scan section, so it uses the list of installed packages (from dpkg-query -l) instead of apt-cache dump. Significant speed increase and simpler code. 1.4.0 05-07-2014 Changed the name to solydfixes. Added the -v option to remove VirtualBox Guest Addition modules if it isn't running in a Virtual Machine. This uses the command dmidecode -s bios-version. Included a fix for incorrect linkage of /tmp to /var/tmp (-t option). The -k option is now required to get a downgrade list, i.e. -kduyf for the whole run. Because of this, the -c option is no longer useful/available. It will sudo itself if it detects it isn't running as root. Now has purge as a function. Several other internal changes. 1.3.0 04-07-2014 Added checking whether a package is installed before it is upgraded or purged. The purge can be limited to packages of the foreign architecture (i.e. i386 on an amd64 install). Also changed the urls for the kdenext package lists and added .d to the name of the temporary directory, so the script itself can be in /tmp when it runs. Finally, added the -f and -y options to tell apt-get to use the --force-yes and --assume-yes options. Whole run is now with the -duyf options. 1.2.0 04-07-2014 Added an install and purge step before the downgrade, installing and removing some packages that needed to be handled separately (solydk-system-adjustments, hal). Uses two extra variables with a space separated list of packages. 1.1.2 03-07-2014 Added the same option to the dist-upgrade. 1.1.1 03-07-2014 Added the option -o Dpkg::Options::="--force-overwrite" to the apt-get install for the downgrade, to handle some files moving to other packages in different versions. 1.1.0 02-07-2014 First released version, named un-kdenext, as removing the kdenext repository and packages was the main objective. It would create a list of packages to downgrade and/or remove, perform the downgrade and removal and then do the dist-upgrade. Only the first action was implied, the rest was optional (with options -dru it did the whole thing in one go). Each step could be done separately, skipping the non-optional part with the -c option if necessary. Includes an option (-s) to simulate the apt-get actions. 1.0.0 Unreleased experimental version(s).