this post was submitted on 29 Jul 2025
36 points (97.4% liked)

Linux

56892 readers
692 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 6 years ago
MODERATORS
 

20+ years ago, Lindows had a great app store that let you create an "aisle" of your favorite apps so if/when you'd reinstall your OS, instead of searching and installing all your apps one-by-one, you'd just go to your aisle, click "install all" and boom.

Is there anything that exists like that today?

top 46 comments
sorted by: hot top controversial new old
[–] Mordikan@kbin.earth 18 points 3 days ago (2 children)

For Arch you run pacman -Qe which lists all installed packages that were not installed as a dependency. I output that to a location via golang script which is monitored by the pCloud client for automatic backup along with a lot of other configs from $HOME/.config. I then have a systemd service that fires the script and a timer to kick off that service periodically.

[–] FauxLiving@lemmy.world 8 points 3 days ago (2 children)

Just to add a bit more to this for the newbies who are using Arch (god help you).

pacman -Qe | awk '{print $1}' > packages.txt

Will write this list to a file, run without the '> packages.txt' if you just want to see the output and;

sudo pacman -S --needed - < packages.txt

Will install all of the needed (i.e. not installed) packages from that list.

[–] voytrekk@sopuli.xyz 6 points 3 days ago* (last edited 3 days ago) (1 children)

If you use -Qeq, you should be able to skip the ask part of the command.

[–] FauxLiving@lemmy.world 3 points 3 days ago* (last edited 3 days ago)

If you use -Qeq, you should be able to skip the awk part of the command.

TIL

Looks like I gave up on RTFM and turned to awk too early.

[–] seralth@lemmy.world 4 points 3 days ago (1 children)

This is incredibly useful, sucks that I'll forget this is a thing by the time I need it.

[–] meekah@lemmy.world 2 points 3 days ago (1 children)

Just remember that you can easily generate a list of all explicitly installed packages. You'll figure out how exactly when you end up needing it.

[–] FauxLiving@lemmy.world 2 points 3 days ago* (last edited 3 days ago)

This is how I do it. I'll see something and think 'hmm, interesting' and completely forget any of the details but I'll remember vaguely that something exists then I can search for it.

Language models are pretty good at solving the 'I think I remember something that does this specific thing but don't know where to look' kinds of problems (don't just blindly run LLM generated commands kids). Then once you have a lead, traditional searching is much easier.

[–] appropriateghost@lemmy.ml 1 points 3 days ago (1 children)

This is the way.

On a related note, would you recommend restoring an entire home directory (including the dot files and all the dot directories) once I reinstall all the packages after a fresh install? Would it basically replicate my restored setup or would there be random issues that emerge? I'm thinking particular system settings related to kde/gnome settings, but others I might not be aware of.

[–] Mordikan@kbin.earth 3 points 3 days ago (1 children)

For me, I tend to focus on specific directories I know I'd need data from (or that will just be a hassle to rewrite config for). I have a scripts folder that gets backed up, Books, .mozilla, etc. A lot of things I just know I won't need like .cache. That folder is 7GB and mostly just the cache from yay needing to be cleared out.

I don't backup my entire home directory because I'm worried ACLs may change or other little issues that will take more time than its worth to correct. That said, you could. You worried about something like that, you could pull the existing ACLs: find ~/ -type f -exec getfacl --absolute-names {} + > home_acls_backup.txt and then restore them: setfacl --restore=home_acls_backup.txt

I haven't really used KDE much, but I know it has a theme data in .local/share that you'd want (and probably the .cache folder as well). GNOME keeps theme data in .themes, .icons, .fonts. They might just be defaults, but if you have anything custom, you'd want those folders too.

[–] appropriateghost@lemmy.ml 2 points 3 days ago (1 children)

Thank you for your reply, this is helpful to know.

That's what I currently do as well, I just backup particular .config subfolders and other directories. I'll probably continue to avoid just raw transferring an entire home directory on a new install.

[–] Mordikan@kbin.earth 2 points 3 days ago

One other thing I didn't mention is it depends on the backup tool you use. Not all of them are filesystem aware. What that means is if you have hardlinks present those will not be preserved.

That can be important to remember as it will bork things down the road with the restoring. If you aren't familiar with linking: Hard links point to actual data (think of it like a pointer in C). Soft links (symbolic) point to file path.

[–] cpo@beehaw.org 2 points 2 days ago

Assuming you are using an apt/dpkg distro:

Save the list of packages on your reference system:

dpkg --get-selections > packages.lst

Then install packages based on that list on your target system, after updating the list of available packages:

dpkg --merge-avail <(apt-cache dumpavail)
dpkg --clear-selections
dpkg --set-selections < packages.lst
apt-get dselect-upgrade
[–] Diplomjodler3@lemmy.world 20 points 3 days ago (2 children)

You can install all apps through the command line. Just write a shellscript with all the commands and run it when you're doing your reinstall.

[–] Shareni@programming.dev 8 points 3 days ago (1 children)

And just update it with every package install and uninstall, on every device, forever.

[–] gonzo-rand19@moist.catsweat.com 17 points 3 days ago (1 children)

dpkg --get-selections > package_list.txt

Or just generate a list before you reinstall. Other distros have similar commands.

[–] clb92@feddit.dk 2 points 3 days ago (2 children)

Does that get you a list of only the manually installed packages, or also include things that were automatically installed as part of something else?

[–] utopiah@lemmy.ml 2 points 3 days ago

It does it if you do it right after the OS installation then whenever you plan to move on and diff the two.

[–] gonzo-rand19@moist.catsweat.com 3 points 3 days ago (2 children)

As far as I know, it includes all installed packages, so the latter.

[–] FauxLiving@lemmy.world 5 points 3 days ago
apt-mark showmanual

Should only show you the packages that you've explicitly installed (i.e. were not installed as dependencies).

If you installed meta packages (say, KDE Plasma) then it'll mark each component of that install as manually installed.

apt-mark minimize-manual

Will mark the meta packages as auto instead of manual.

[–] IsoKiero@sopuli.xyz 2 points 3 days ago

You're correct. All packages installed via dpkg/apt are on that list. What isn't included are appimages, flatpacks, snaps and other non-dpkg software if you happen to have any.

[–] eta@feddit.org 1 points 3 days ago (1 children)

Is there a nice way to check if something is already installed or do you just install it again and that just skips already installed stuff?

[–] Diplomjodler3@lemmy.world 5 points 3 days ago

It skips already installed stuff.

[–] BCsven@lemmy.ca 11 points 3 days ago

NixOS has a config file, you backup that file, you can duplicate your system with it.

OpenSUSE has an AutoYast system where you can build a config for the next install.

OpenSUSE microOS has ignition and combustion files to replicate a system from scratch. For those that don't like hand typing a config file there is this web based tool to write out a file based on selections https://opensuse.github.io/fuel-ignition/

[–] Uriel_Copy@lemmy.world 8 points 3 days ago

Surprised nobody said this yet, but I use ansible. I also use it to have the same install on multiple machines independently (something that doesn't work by just having a dedicated home partition).

But it's a bit of maintenance to keep modifying my dotfiles, certainly not as easy as your old apps aisle.

[–] Shareni@programming.dev 11 points 3 days ago (2 children)

For me that's the main benefit of using home-manager on nixos and other distros. You basically just make a list of packages, and install/update them through home-manager.

[–] paper_moon@lemmy.world 7 points 3 days ago* (last edited 3 days ago) (2 children)

I mean, i feel obvious for saying this, but maybe others dont know: If we're just talking about apps, this is also a 1-liner in most package managers that you can even automate in a shell script

sudo apt-get install firefox vlc thunderbird etc...

if we're talking more complex environments like a dev environment, mix of python packages, libraries, docker containers, etc obviously thats a lot of attention to manually save all of those details for later and something else should probably be used

[–] Shareni@programming.dev 5 points 3 days ago (1 children)

Sure, but then you need to maintain it. I don't know about you, but I never had the discipline to update it with every package install and uninstall. It's especially annoying when you have multiple devices.

Declarative package management doesn't have that issue since you're managing the packages by editing the list.

Besides that, the home-manager approach works on any distro (and os?), you get bleeding edge packages, you get a built in rollback system, and you can handle configs as well (but I mainly just symlink them anyways).

[–] Auth@lemmy.world 5 points 3 days ago (1 children)

You can write a script to periodically check the installed packages and update the 1st script. Its basically the output of "dnf list installed"

[–] Shareni@programming.dev 4 points 3 days ago

/facepalm moment for not thinking of that at the time

But it's lacking organisation and modularity. For example let's say you need programming packages on one device, gaming ones on another, and general ones on both. It's pretty easy to set it up with hm, and you can disable specific modules when you don't need them (for example you rarely need to use a certain language and supporting packages).

[–] Dariusmiles2123@sh.itjust.works 4 points 3 days ago (3 children)

I guess most people would not only want to easily reinstall all their apps, but also the settings related to them.

Sadly that’s the difficult part.

When I see how much time it takes me to have all my calendar and settings in Thunderbird.

Luckily for Thunderbird you can save your profile if everything takes less than 2gb, but it’s still a hassle to find a way to backup every program.

[–] paper_moon@lemmy.world 3 points 3 days ago* (last edited 3 days ago)

Aren't most app configurations and settings saved in the user's .config folder? Again you have to know to look for this, but that should be most of your settings right?

/home/[username]/.config/

That's not really different than Windows. If you do a clean reinstall, all your application data is gone unless you have a backup.

This is why I have my home folder on a separate drive; all of my application data is there and not on my system drive, so a reinstall basically just requires generating a text file of my installed packages, installing the OS, and then installing the packages from the text file.

[–] Shareni@programming.dev 1 points 3 days ago

For me the config management aspect of home-manager is mostly useless. It takes a lot more work to set it up, looks far uglier, and you need to maintain it because parameters change over time. Saving dotfiles in a repo, and symlinking them on install is simply easier.

The only two scenarios where it's actually useful is when you have slightly different configs for different devices, and when the program doesn't support dotfiles. A pretty cool example I've seen for the second one is managing Firefox customisations (settings, plugins, additional CSS), but I'm only disabling horizontal tabs so it's not worth it for me.

[–] azron@lemmy.ml 2 points 3 days ago (1 children)

How long does it take to get home-manager set up?

[–] Shareni@programming.dev 2 points 3 days ago

It's pretty fast, especially if you don't get into flakes right away. You basically just install nix with a one liner -> install home-manager through nix -> start adding packages to list.

Here's a comment I made when I was starting out with basic instructions. Do note I'm now using this command for updates instead (updates hm, package definitions, and the packages themselves)

cd ~/dotfiles/nix/ && nix flake update && nix-channel --update && home-manager switch --flake ~/dotfiles/nix/
[–] JTskulk@lemmy.world 9 points 3 days ago (2 children)

If you can't remember what to reinstall, was it really that important? Packages are so quick and easy to install that I just install them the first time I try to use them and find them missing.

[–] golden_zealot@lemmy.ml 3 points 2 days ago

I think you are right when it comes to re-installation of the packages themselves. What's more annoying for me is re-applying all of the little tweaks and configurations for all of the ones that I actually do want or need.

[–] hexagonwin@lemmy.sdf.org 8 points 3 days ago

use your distros method of listing every installed package and modify it to be a install command

[–] OatPotato@hexbear.net 8 points 3 days ago

If you use Flatpak, someone made a "Save Desktop" application: https://flathub.org/apps/io.github.vikdevelop.SaveDesktop

[–] ikidd@lemmy.world 3 points 3 days ago (1 children)

I think a sync method or a way to dump settings and apps would be cool.

[–] utopiah@lemmy.ml 1 points 3 days ago

I'd argue ~ on a dedicated partition pretty much does that already.

[–] sfera@beehaw.org 1 points 3 days ago (1 children)

I'm not advocating for anything, but if I remember correctly, flatpaks are typically installed in user home directory. If that's the case, then it's just a matter of copying a directory and installing flatpak. I might be wrong though.

[–] data1701d@startrek.website 1 points 3 days ago

I think that's true, but permissions might come into play and really cause pain; it's probably best to just reinstall.

[–] utopiah@lemmy.ml -1 points 3 days ago

instead of searching and installing all your apps one-by-one

And... that takes what, a good all 5 minutes?

Honestly unless you either re-install an OS frequently (which is a weird thing to do on a day-to-day system) or plan to go offline for a long period of time I bet you'd spend more time finding a "solution" then not doing so manually.

I'm not you but when I install a fresh OS (maybe once every couple of years, at most!) on my desktop (not counting other devices, handheld, servers, etc) I install

  • Firefox (if it's not already by default, if it's ESR then I might get a different update mechanism)

...well honestly that's it!

Then yes as I start to work I add KDEnlive, OBS, Blender, Cura, OpenSCAD, etc.

My point being that I can't imagine a moment when, as you start the OS you actually need all the other software at the same time. You usually need one, then another, e.g. Inkscape to edit a PDF document you just received, then you pass the extract image to e.g. LibreOffice Writer.

So... not having everything from the start is IMHO a good moment to consider what you actually need, keep things lean.

TL;DR: there are technical solutions but on a desktop connected to the Internet it's not worth it.

PS: I do personally keep my bash history or my ~/bin/ and ~/Apps/~ directories across installations (because I do keep ~` on a dedicated partition) with some AppImages in but honestly I don't rely on these.

[–] luthis@lemmy.nz -5 points 3 days ago

Just use appimages. Works for a lot of things that don't require full integration.