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

Re: How can I find packages manually installed using "dpkg -i"?



Oops.  The 'grep -v -F' should be 'grep -v -f'.  Well, 'grep -v -F -f'
would probably be appropriate as well.

mrc

On Tue, Oct 3, 2023 at 7:58 PM Mike Castle <dalgoda+debian@gmail.com> wrote:
>
> Some tools I've been using lately are apt-mark and "dpkg-query --show".
>
> The following UNTESTED commands (ran as a normal user):
>
> (apt-mark showauto ; apt-mark showmanual) > apt-thinks-you-installed.txt
> dpkg-query --show --showformat='${Package}\n' | grep -v -F
> apt-thinks-you-installed.txt > rest.txt
>
> The file "rest.txt" should have a list of packages installed that were
> NOT installed via apt.  With any luck, it is small enough to examine
> manually.
>
> You could do something like "apt list" to get a list of all packages
> known by apt and see if you'd prefer to use just use the Debian
> instead of Mint versions.  And anything not in that list *probably*
> came from other manual sources and you can do what you will with that
> information.
>
> You could poke around in /var/lib/apt/lists/ and see if the files from
> the mint repos you used in the past are still there (I don't know if
> they get cleaned up or not, might get lucky).
>
>
> Regarding the comment in the thread about packages that the installer
> added that show up as manual, you can do something like the following
> to at least make apt think they were auto:
>
> dpkg-query --show --showformat='${Package} ${Priority}\n' | awk '$2 ==
> required {print $1}' > required.txt
> sudo apt-mark auto $(apt-mark showmanual | grep -F required.txt)  #
> apt-mark will prompt, so you don't want to use xargs
>
> Again, the above is untested, so verify first!
>
> You might do the same for other priorities, like  standard or
> important.  If for no other reason than breaking the list of packages
> into smaller, digestible chunks that you can focus on.  For example,
> on my machine:
> $ dpkg-query --show --showformat='${Priority}\n' | sort | uniq -c | sort -n
>       5 extra
>      29 important
>      29 standard
>      33 required
>    1472 optional
>
> I could probably handle going through those smaller collections to
> identify where they came from fairly easily.  But that big optional
> collection, not so much.  For something like that, I might add
> ${Section} to the --showformat option, and divide them up that way.
>
> Also, as a future project, you might consider creating metapackages to
> help organize your installation.  Again, for my machine:
> $ apt-mark showmanual | wc -l
> 1
> $ apt-mark showauto | wc -l
> 1563
>
> I have a handful of debian control files that I use (base, desktop,
> dev, serviceX, serviceY, machine1, machine2,...).  The machine ones
> depends on the services they host (NFS, LDAP, VMs), and whether they
> need a GUI (desktop), whether I build on them (dev), or play games,
> etc.  Then each machine, after a base install I do something like:
>
> apt-mark auto $(apt-mark showmanual)
> apt install machineN
> apt autoremove --purge
>
> Of course, I monitor that autoremove to make sure it doesn't do
> anything silly, and if it tries to remove a package I missed, I go add
> it to the appropriate control file.  My simple little way of doing
> this is:
>
> $ cat doit.sh
> #!/bin/bash
>
> for v in *.control; do
>   equivs-build $v > $v.log &
> done
>
> echo 'Waiting....'
> wait
> echo 'Done waiting'
>
> OUTPUT=/srv/deb/packages
> rm -rf $OUTPUT
> mkdir -p $OUTPUT
> cp *.deb $OUTPUT
> cd $OUTPUT
>
> dpkg-scanpackages . > Packages
> $ cat /etc/apt/sources.list.d/mrc-home.list
> deb [trusted=yes] file:/srv/deb/packages ./
>
> And yes, I should do better than the [trusted=yes].
>
> Good luck on your upgrade!
> mrc


Reply to: