Change / Choose install path for a .deb

I would like to know if it is possible to choose where a .deb file will be installed, or if it is possible to move it after the installation to another directory without troubles for the app.

I am asking that because I am running Ubuntu on a 32Go's SSD, and I would like to install some games from Humble Bundle on my other HDD.


There is a similar Q&A at superuser.com dealing with that question. A more specific question was asked also here at askubuntu.com.

Your choices are:

  • Use symlinks. Open the *.deb package with the archive manager. This tells you where the files go. Move those directories to your external harddisc and put a symlink at the origin. Be careful to move only directories from your games and not shared libraries or so!

  • Mount your external hardrive or some of its folders (a second time) at the game's path. E.g. /usr/share/games might be good candidate for your external harddisc. You can use the bind option, e.g.:

    sudo mount --bind /media/external-hardisc/usr-share-games /usr/share/games

  • Don't use a *.deb package, but install directly from source to a directory of your choice.

  • Use the dpkg parameter --root to change the install location. The man page says:

    --root=dir Changing root changes instdir to dir and admindir to dir/var/lib/dpkg.

    There is no guarantee that this will work. The program might not be able to deal with the different location.

(This list of solutions is not exhaustive.)


As I know extracted files like libraries and executables must be extracted into fixed directories that use these files during program execution. Also I think this debs contains large resources and lightweight files separately. For example many games unpack their resources to /opt directory. You can mount your HDD as /opt that store resources there:

Here is example:

sudo mv /opt /media/your_hdd/opt
sudo mkdir /opt

And check mount:

sudo mount --bind /media/your_hdd/opt /opt

if this works add mount --bind /media/your_hdd/opt /opt to /etc/rc.local before exit 0 to auto mount after each system boot.