[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Return a Debian system to a pristine state



On 30.05.20 05:00, David Wright wrote:
On Fri 29 May 2020 at 22:23:23 (+0200), Marco Möller wrote:
On 29.05.20 21:48, David Wright wrote:
On Fri 29 May 2020 at 21:57:06 (+0700), Victor Sudakov wrote:
(...)
"apt has a bug, cannot believe it!"
https://lists.debian.org/debian-user/2020/05/msg00567.html

Well, I must admit, I can sympathize with this person's frustration. He
just got confused among those AutoRemove* advanced options.

I think it's much more than that. The OP appeared to regard the
--no-install-recommends option as a *property* that is applied to each
package installed under that recommendation regime, and that
that property would be preserved for all time. But as the "-install-"
in --no-install-recommends shows, it's just an option for the install
command itself.
(...)

Here the OP of that thread. Exactly this, David.
I would really wish that the "--no-install-recommends" option would
act as a "--no-recommends-wished" option!

(...)

Yes, a bigger work load on apt itself, but I really think it
would be worth it. Just consider how many of us are forced to set up
sophisticated backup strategies, or applying for this file system
snapshot tools to act as a "time machine", while an enhanced apt could
target this need in an easy an elegant fashion for the user (not
speaking about the user's data and about the configuration of the
packages, but speaking about the installation state of software
packages)!

You seem to be suggesting a one-dimensional install/undo facility,
but an installation is a multi-dimensional graph of packages and
dependencies. It's rare that one would want to just backtrack through
a de-installation in the exact reverse order of installation.
I also think it would be difficult to support, as it would give
people unrealistic expectations of what's possible.

In the sense of my wish, any removal or purge of a package would do the following (illustrating the idea and being aware that for sure some more in depth thoughts will have to be spent on it):


(0) allow the user to store in some config file a list of time stamps which then could be respected as an option in the below outlined algorithm; the config file could look like this and for instance a leading integer number could later on be used for addressing a certain time stamp:
  1; timestamp; essential OS after the initial installation
  2; timestamp; added all my packages for a personalized CLI experience
  3; timestamp; my minimum graphical DE is installed
  4; timestamp; my full workstation, pristine, nice fall back state
  5; timestamp; enhancements, quite good achievements
  6; timestamp; testing
  7; timestamp; arbitrary user comment
  default=4
The first entry "1" could be stored automatically by the Debian installer after the OS install and first reboot finished successfully; the default could initially be set to 1; the user could edit this file (and then of course also change the default value to another integer value like 4 in the above example; invalid default values are always treated as if the youngest timestamp would have been defined, value 7 in my above example); An enhanced apt-cache database would have to register for each installed package the installation date and if (not which) recommends and if (not which) suggests have been wished to install; for the drawn in recommends and suggest a list of the packages which explicitly wished their installation has to be maintained in the database by storing this information in the entry of each installed package; With this information there would not arise a limitation for at any time defining time stamps in the config files, because the "wished" tree besides the "dependency" tree could be reconstructed for any time;

(1a) if 'apt remove' or 'apt purge' are called with a timestamp option and not specifying a specific package name, for instance 'apt remove --keeptimestamp 3' then remove or purge all packages installed AFTER the time stamp (for example, regarding my config file in (0), by the option value '3' in '--keeptimestap 3', the minimum graphical DE installation would remain but everything installed afterwards would be removed; the below mentioned steps (1b), (2) and (3) are not to be executed no more;

(1b) if a specific package name is mentioned, then read for this specific by 'apt remove' or 'apt purge' targeted package IF recommends and suggests have been wished by this package; IF NOT, then simply remove or purge the specific package, considering also the dependencies as usual, and continue at step (4); IF recommends or suggests have been wished then continue at step (2);

(2) if NO time stamp option was given then use the default timestamp; check if any of the recommended and suggested packages have themselves registered in their database entry in the "wished by" list that they would be wished by any other installed package, considering all packages which have been installed before the time stamp to be wished packages, and if for a package from the recommends and suggests list it now results that it is not wished any more, then besides removing or purging only the specified package do additionally also remove or purge the no more wished recommended and suggested package(s); (3) iteratively follow the logic of step (2) for the additionally found packages which meanwhile became marked for removal or purge and work also on their list of recommends and suggests;

(4) in interactive mode show the list of for removal or purge marked packages and offer to the user the question, if ALL these found no more wished packages shall now be processed, or if for each package it should be asked individually once more; (5) if in (4) the manual, step wise approval was requested, then ask by priority first for the packages found in the first iteration, then for the ones found in the next iteration, and so on. (6) iterate steps (4) to (6) until a final selection is reached which should be processed


Any simple 'apt remove package' or 'apt purge package' would no more let unwished packages remain in the system, and any 'apt remove --keeptimestamp N' or 'apt purge --keeptimestamp N' would set the installation of packages back to a pristine state. At least the package state right after the initial, successful OS installation is always being defined as a pristine state, and alternative pristine stamps could any time be defined by the user for any time. Combination of the options would be possible, like in: 'apt remove --keeptimestamp 3 packagename'; The latter case would protect to remove the package "packagename" if this would break the state of time stamp 3.
Splendid!

From the view of a user, it does not sound so complicated ;-) . I guess, and this will be fair, that I am now asked to program it, it's open source and I should contribute. But unfortunately I can only contribute ideas, I am not a programmer. :-(


Reply to: