Can zypper install into User directory

Is there a way to get zypper (or yast software management) to install an app from repos into a User directory and have it be owned by User; not root. There are some large apps I wish to install and run as User to save space in / partition. I have 100 gigabytes in / and 2 terabytes of User space and I’d like to put the apps there. Else, I need to download and/or compile the apps to run from User.

Any info on this idea? thanks, tom kosvic

I doubt you can fool zypper into ding this (maybe by running in a chrooted environment).

I also doubt very much it is wise to do. The RPM packages that are going to be installed expect a complete tree of system directories (/bin/, /usr, /sbin, /etc and what all) waiting for them and part of them will even check if ownership and or permission are set correctly.

I was only planning to do this on standalone apps, e.g., from science repo. Yes, i understand the problems that could arise from apps with many dependencies. I guess this sounds not like a good idea and I will punt on this one.

tom kosvic

BTW 100 GB in the / file system (specially if this does not include /home) seems more then enough to me. Even if you add more specialistic software. I e.g. have a 20GB / file system of which ~12GB is used.

Hi
If the apps in question want to store lots of info in the $HOME directory then just create a symlink off to your separate storage. For example with vagrant I use the likes of;


.vagrant.d -> /stuff/vagrantd
.minecraft -> /data/minecraft/optifine/minecraft
..etc...

Binaries from outside the package management system (rpm,zypper,yast), such as those from mozilla.org, can be placed in /usr/local/ directories, and thus on a separate filesystem if desired:

> pwd
/usr/local
> df -h .
Filesystem      Size  Used Avail Use% Mounted on
/dev/md1        3.9G  2.4G  1.5G  64% /usr/local
> ls -Gg
total 88
drwxr-xr-x  2  1024 Apr 19 18:56 bin
drwxrwxrwx  2  3072 Oct  7  2020 dfsee
drwxr-xr-x  3  1024 Feb 28  2017 etc
drwxrwxrwx 13  1024 Dec 12  2013 ff2
drwxrwxrwx 13  3072 Dec  6  2019 ff3
lrwxrwxrwx  1     5 Oct 11  2017 ffcur -> ffe52
drwxrwxrwx 10  3072 Dec 28  2015 ffe10
drwxrwxrwx 11  3072 Feb 14  2017 ffe17
drwxrwxrwx  9  1024 May  4  2016 ffe38
drwxrwxrwx  8  1024 Oct 11  2017 ffe45
drwxrwxrwx 10  3072 Jun 21 11:47 ffe52
drwxrwxrwx 10  5120 Jul 29  2020 ffe60
drwxrwxrwx  8  4096 Nov 23  2020 ffe68
drwxrwxrwx  8  3072 Jun 16 15:00 ffe78
drwxrwxrwx  9  3072 Mar 13  2020 ffnext
drwxrwxrwx  2  3072 Jul  4  2020 fftest
drwxrwxrwx  8  3072 Oct  9  2019 ffx
drwxr-xr-x  2  1024 Apr 19 18:56 include
drwxr-xr-x  3  1024 Apr 19 18:56 lib
drwxr-xr-x  2  1024 Apr 19 18:56 lib64
drwxr-xr-x  2  1024 Apr 19 18:56 libexec
drwx------  2 12288 Aug 28  2018 lost+found
drwxr-xr-x 12  1024 Apr 19 18:56 man
drwxrwxrwx  7  1024 Feb 15 10:58 pmoon
drwxr-xr-x  2  1024 Apr 19 18:56 sbin
drwxr-xr-x  6  1024 Apr 19 18:56 share
drwxrwxrwx 12  3072 Mar 31  2010 sm11
drwxrwxrwx 11  3072 Oct 17  2016 sm240
drwxrwxrwx 11  3072 Oct 17  2016 sm242
drwxrwxrwx 10  3072 May 31  2017 sm246
drwxrwxrwx 13  3072 Jun 21 01:41 smcur
drwxrwxrwx  2  1024 Dec 16  2016 smcur-32
drwxrwxrwx 10  3072 Jun  7 16:26 smnext
drwxrwxrwx  2  1024 Dec 16  2016 smnext-32
drwxrwxrwx 11  3072 Jan 18 15:37 smtest
drwxrwxrwx  2  1024 Dec 16  2016 smtest-32
drwxr-xr-x  2  1024 Apr 19 18:56 src
drwxrwxrwx  2  1024 Jun 13  2017 tmp
drwxrwxrwx  9  1024 Apr 18  2018 wfx

Changing the path to your software is a very bad idea. There are basically two options for changing the physical location of installed software:

  1. the software has a configurable installation directory
  2. the administrator uses links from other storage to the root filesystem.

Sample install:

**3400G:~ #** ln -sf  /home/karl/google /opt/google         
**3400G:~ #** ll /opt/google 
lrwxrwxrwx 1 root root 17 Jun 22 15:34 /opt/google -> **/home/karl/google**
**3400G:~ #** zypper in google-chrome-stable                
Loading repository data... 
Reading installed packages... 
Resolving package dependencies... 

The following NEW package is going to be installed:
  google-chrome-stable 

1 new package to install. 
Overall download size: 79.3 MiB. Already cached: 0 B. After the operation, additional 254.0 MiB will be used. 
**Continue? [y/n/v/...? shows all options] (y): **
Retrieving package google-chrome-stable-91.0.4472.114-1.x86_64                                                                                                                                         (1/1),  79.3 MiB (254.0 MiB unpacked) 
Retrieving: google-chrome-stable-91.0.4472.114-1.x86_64.rpm ............................................................................................................................................................[done (898.4 KiB/s)] 

Checking for file conflicts: .........................................................................................................................................................................................................[done] 
(1/1) Installing: google-chrome-stable-91.0.4472.114-1.x86_64 ........................................................................................................................................................................[done] 
Additional rpm output:
update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/google-chrome (google-chrome) in auto mode                                                                                                                     


**3400G:~ #**

No.
[HR][/HR]If you want to install applications on a per-user basis – with the system environment needed for a particular application’s version – use Flatpak.
[HR][/HR]If the application is written in Java then, it should be relatively easy to drop the Java code and directories into a sub-directory of the user’s ‘~/bin/’ directory …

  • I use a Java application – Home Banking – which is installed system-wide into ‘/opt/’ but, with one plug-in which only one user requires – that user installs the plug-in into their instance of the application …