clean Linux install while keeping the same packages installed as before
I'm more familiar with Fedora where I do something like this. It should be possible to do the same in Ubuntu with the appropriate apt-get commands. 1. List all packages with their names only (no versions) on both the old system and newly installed system, assuming the new system is booted and the old system is mounted at /mnt/oldroot. Alternatively, do the first command (without the --root parameter) when booted to the old version and save the file somewhere: rpm -qa --qf='%{name}\n' --root=/mnt/oldroot | sort -u > old-pkglist.txt rpm -qa --qf='%{name}\n' | sort -u > new-pkglist.txt 2. Compare the files and save that output: diff -b -U0 {old,new}-pkglist.txt > old-new-diff.txt grep ^- old-new-diff.txt | cut -c2- > missing-from-new.txt grep ^+ old-new-diff.txt | cut -c2- > only-in-new.txt 3. Now go through the list and install what you want. I usually do this step manually rather than using some automated script, since there are many changes I don't necessarily want, such as shared libraries. All I really care about is applications/commands/utilities. I go through the lists, reading the diff in one window and installing stuff I want in another: dnf install a b c d ... and/or this which installs a package and all of its subpackages except development and debug subpackages. This is great when a package has a bunch of plugins I want: dnf --exclude='*devel*' --exclude='*debug*' install foo-\* ... Or you could curate the list, e.g. edit missing-from-new.txt keeping only the lines you care about, then automatically install everything that is in the curated list: cat missing-from-new-curated.txt | xargs dnf -y install
On Thu, Jan 13, 2022 at 3:47 PM gmcaplan--- via WLUG <wlug@lists.wlug.org> wrote:
I was hoping to attend, but it looks like I will not be able to. I hope it will be recorded because I, too, would like to learn about emacs. Also, I have two questions: 1. I am running Ubuntu 18.04 LTS. When I update to ver. 20 or 22, I would prefer to do a "clean" re-install, but I have a question. Does that mean I must get a list of all my installed software and re-install them one at a time after I upgrade the OS? If so, is there an easy way for me to get the list?
I'm hoping it'll get easier to back up and upgrade OS installs with the advances in containerized runtimes like flatpak and podman/distrobox, and immutable distros like Silverblue. For example, I can back up application installs from: /var/lib/flatpak Optionally I can store just the list of names and re-install them later: $ flatpak list --system --app --columns=application --ostree-verbose > apps.txt $ cat apps.txt com.bitwig.BitwigStudio com.discordapp.Discord com.github.k4zmu2a.spacecadetpinball com.github.tchx84.Flatseal com.github.wwmm.easyeffects com.mojang.Minecraft com.obsproject.Studio com.spotify.Client io.mgba.mGBA md.obsidian.Obsidian org.chromium.Chromium org.gimp.GIMP .. .. org.kde.krita org.keepassxc.KeePassXC org.libreoffice.LibreOffice org.mozilla.firefox org.signal.Signal org.videolan.VLC org.x.Warpinator us.zoom.Zoom And -- more importantly -- user data can be backed up from: ~/.var/app Silverblue also seems to handle updates/upgrades very well as none of the updates apply to the running system. It also makes a clear distinction between OS and application by relying on flatpaks and toolbox as the primary means of application management. This is definitely a significant change from the familiar package model, but it's one that I think has merit. I'm excited to see these technologies mature and become more integral to modern Linux distros! - Josh On Fri, Jan 14, 2022 at 9:08 AM Chuck Anderson via WLUG <wlug@lists.wlug.org> wrote:
I'm more familiar with Fedora where I do something like this. It should be possible to do the same in Ubuntu with the appropriate apt-get commands.
1. List all packages with their names only (no versions) on both the old system and newly installed system, assuming the new system is booted and the old system is mounted at /mnt/oldroot. Alternatively, do the first command (without the --root parameter) when booted to the old version and save the file somewhere:
rpm -qa --qf='%{name}\n' --root=/mnt/oldroot | sort -u > old-pkglist.txt rpm -qa --qf='%{name}\n' | sort -u > new-pkglist.txt
2. Compare the files and save that output:
diff -b -U0 {old,new}-pkglist.txt > old-new-diff.txt grep ^- old-new-diff.txt | cut -c2- > missing-from-new.txt grep ^+ old-new-diff.txt | cut -c2- > only-in-new.txt
3. Now go through the list and install what you want. I usually do this step manually rather than using some automated script, since there are many changes I don't necessarily want, such as shared libraries. All I really care about is applications/commands/utilities. I go through the lists, reading the diff in one window and installing stuff I want in another:
dnf install a b c d ...
and/or this which installs a package and all of its subpackages except development and debug subpackages. This is great when a package has a bunch of plugins I want:
dnf --exclude='*devel*' --exclude='*debug*' install foo-\* ...
Or you could curate the list, e.g. edit missing-from-new.txt keeping only the lines you care about, then automatically install everything that is in the curated list:
cat missing-from-new-curated.txt | xargs dnf -y install
On Thu, Jan 13, 2022 at 3:47 PM gmcaplan--- via WLUG <wlug@lists.wlug.org> wrote:
I was hoping to attend, but it looks like I will not be able to. I hope it will be recorded because I, too, would like to learn about emacs. Also, I have two questions: 1. I am running Ubuntu 18.04 LTS. When I update to ver. 20 or 22, I would prefer to do a "clean" re-install, but I have a question. Does that mean I must get a list of all my installed software and re-install them one at a time after I upgrade the OS? If so, is there an easy way for me to get the list?
WLUG mailing list -- wlug@lists.wlug.org To unsubscribe send an email to wlug-leave@lists.wlug.org Create Account: https://wlug.mailman3.com/accounts/signup/ Change Settings: https://wlug.mailman3.com/postorius/lists/wlug.lists.wlug.org/ Web Forum/Archive: https://wlug.mailman3.com/hyperkitty/list/wlug@lists.wlug.org/message/Z5ONMQ...
For debian-based systems, you can use 'dpkg --get-selections' and 'dpkg --set-selections' to reproduce a set of installed packages. You can expect to run into errors if you are using this to go to the next release, because some packages will be missing or replaced with a different named package. On 1/14/22, Chuck Anderson via WLUG <wlug@lists.wlug.org> wrote:
I'm more familiar with Fedora where I do something like this. It should be possible to do the same in Ubuntu with the appropriate apt-get commands.
1. List all packages with their names only (no versions) on both the old system and newly installed system, assuming the new system is booted and the old system is mounted at /mnt/oldroot. Alternatively, do the first command (without the --root parameter) when booted to the old version and save the file somewhere:
rpm -qa --qf='%{name}\n' --root=/mnt/oldroot | sort -u > old-pkglist.txt rpm -qa --qf='%{name}\n' | sort -u > new-pkglist.txt
2. Compare the files and save that output:
diff -b -U0 {old,new}-pkglist.txt > old-new-diff.txt grep ^- old-new-diff.txt | cut -c2- > missing-from-new.txt grep ^+ old-new-diff.txt | cut -c2- > only-in-new.txt
3. Now go through the list and install what you want. I usually do this step manually rather than using some automated script, since there are many changes I don't necessarily want, such as shared libraries. All I really care about is applications/commands/utilities. I go through the lists, reading the diff in one window and installing stuff I want in another:
dnf install a b c d ...
and/or this which installs a package and all of its subpackages except development and debug subpackages. This is great when a package has a bunch of plugins I want:
dnf --exclude='*devel*' --exclude='*debug*' install foo-\* ...
Or you could curate the list, e.g. edit missing-from-new.txt keeping only the lines you care about, then automatically install everything that is in the curated list:
cat missing-from-new-curated.txt | xargs dnf -y install
On Thu, Jan 13, 2022 at 3:47 PM gmcaplan--- via WLUG <wlug@lists.wlug.org> wrote:
I was hoping to attend, but it looks like I will not be able to. I hope it will be recorded because I, too, would like to learn about emacs. Also, I have two questions: 1. I am running Ubuntu 18.04 LTS. When I update to ver. 20 or 22, I would prefer to do a "clean" re-install, but I have a question. Does that mean I must get a list of all my installed software and re-install them one at a time after I upgrade the OS? If so, is there an easy way for me to get the list?
WLUG mailing list -- wlug@lists.wlug.org To unsubscribe send an email to wlug-leave@lists.wlug.org Create Account: https://wlug.mailman3.com/accounts/signup/ Change Settings: https://wlug.mailman3.com/postorius/lists/wlug.lists.wlug.org/ Web Forum/Archive: https://wlug.mailman3.com/hyperkitty/list/wlug@lists.wlug.org/message/Z5ONMQ...
participants (3)
-
Chuck Anderson
-
Gregory Avedissian
-
Joshua Stone