How can I install programs on an external hard drive on Fedora?

Hi People,
I’m new to Linux and Fedora is my first linux system, also this is my first post on the forum so if I’m doing/writing something wrong, please let me know.
I installed Fedora on a SSD in my laptop, but it isn’t that big and I want to install program on the other hard disk, I already made here a partition with GParted with the “ext4” format.
On this partition I’m able to create folders and files without using the terminal.
My main question is, how can I install RPM files and programs through the terminal directly on the hard disk?
Let me know :smile:

Quick search gave me this - [Feature Request] Install Flatpak apps on custom locations (eg external disk drive) · Issue #1224 · flatpak/flatpak · GitHub
Make sure that Path=/run/media/mwleeds/ext4_4tb/flatpak/ points to the actual dir where your external drive is mounted.

Disclaimer - I haven’t tried that myself.

P.S.: there is a typo in the comment:


should be changed to Path=/data/flatpak/

Hi Andrea, this isn’t how Linux works generally.

Linux programs are usually installed using a package manager (like dnf for Fedora, apt for Ubuntu). Packages follow a filesystem hierarchy: program binaries go in /usr/bin, libraries go in /usr/lib or /usr/lib64, etc.

Programs aren’t installed to their own self-contained directories like on Windows.

Let’s say you have 2 programs, foo and bar with a number of files each. On Windows it might look like this:

C:\Program Files\foo\foo.exe
C:\Program Files\foo\settings.ini
C:\Program Files\foo\README.txt

C:\Program Files\bar\bar.exe
C:\Program Files\bar\bar.dll
C:\Program Files\bar\README.txt

It would be easy to move C:\Program Files\bar to somewhere else, like D:\bar.

On Linux however, it might look like this:


As you can see, the files from different programs are mixed together. You can’t easily install one program in a different location, at least with traditional package managers.

With ~3000 packages installed, including some games and music/multimedia production packages, my /usr is only ~18GB.

$ dnf -qC rq --installed | wc -l

$ sudo btrfs filesystem du -s /usr
     Total   Exclusive  Set shared  Filename
  17.75GiB    17.75GiB   372.00KiB  /usr

This doesn’t include Steam games, which are installed in my home directory.

What is the capacity of your SSD? Even 64GB is plenty for Linux.

It’s usually your own files (documents, photos, music, videos) that end up taking a lot more space. For that I use bind mounts to put certain folders on a different drive seamlessly.


@jn64 Thank you so much for your answer and for your time!
I now understand why, it’s just a different logic, well my SSD is 160GB and 130GB are free at the moment, I was able to get Photoshop and Illustrator on the hard disk (since they were .SH) and also steam, but not from flatpak since I saw on another forum this problem How can I install steam games to an external drives/mount points with Ubuntu 18.04? (solution found) - Ask Ubuntu which basically was a pain for me since I’m new to linux and I preferred to install it with the standard sudo dnf install.
So since you said that I can go safe installing apps on my internal SSD, I’ll install there all my apps and files+games on the other hard disk.
Thanks again for your time, and thanks also to @arturasb

1 Like

No worries! If you can install another drive to your laptop internally (e.g., using CD/DVD ROM caddy), and if you trust your drives and if you make backups, you can also explore the possibility of creating LVM volume on all of your drives and then your LVM volume would be available as a single block device (“disk”) to proceed with (re)installation of OS onto the volume ignoring physical disks from installation perspective.
Another method is to store whole /home mount onto bigger disk and focus on flatpak SW, which is normally installed to user’s home dir.

All of these methods have pros&cons, but it helps expand storage capacity.

1 Like

An even easier install of steam would have been using dnf. as shown here

Once installed steam puts the runtimes under the users home directory when installed that way. Since the user can have /home anywhere they choose it is easy to do that on a separate drive from the operating system.