How can I install a package without root access?
I have no root access on this machine.
I would like to know if there is a way I can download Ubuntu packages and install them as non-root?
Probably in my
~/usr/shareor something like that? Would that work?
You could use portable apps for linux: no installing , no root necessary. Find it at http://appimage.org/. Even Linus Torvalds likes it. That's odd, cause Linus never likes anything.
A combination of `dpk -x` and `mv` worked for me. Or, if even `dpk` is not available, `ar` and piping/combining with `tar` worked for me on very restricted systems, see here
Apt doesn't support it directly, but there are ways to do it.
One is to use
schrootto create a non-root chroot. This is a somewhat involved process, but one you should be able find community help for as many developers set up chroot environments for compiling code.
The second way I know of is to install from a .deb package. You may be able to download this from a web site or if it's in the Ubuntu repositories you can download with.
apt-get download package
packagewith the name of the package
Once you have your deb file call
dpkgdirectly from the command line. The following example will install package.deb into your home directory.
dpkg -i package.deb --force-not-root --root=$HOME
The disadvantage to using dpkg like this is that error messages are likely to be cryptic; dpkg doesn't automatically resolve dependencies or create the directory structure it expects.
Finally, you could use the
apt-get sourcecommand to fetch the source of the package and configure it to install locally. Usually this looks something like:
apt-get source package cd package ./configure --prefix=$HOME make make install
The disadvantage to this approach is that you need the development environment available for this approach to work at all, and you might find yourself compiling dozens of packages in order to resolve all the dependencies.
dpkg -idoesn't work (see comments), I suggest this alternative:
dpkg -x package.deb dir
This will extract the .deb package to dir. Then you can export the PATH where the binary is. As long as all dependencies of the binary are installed, it should run as normal.
If you have root access but just don't want to install a particular package globally, you could use `sudo apt-get build-dep package` to install everything required to *build* a package (after getting its source with `apt-get source`).
the instructions to create a chroot seem to require root privileges ... Is there a way to use chroot without needing such privileges ?
You could also build a deb package that installs somewhere beside the usual system directories, but that would be extremely eccentric. Though occasionally done, usually by corporate entities like Google.
This answer was written back in 2010. Have there been any changes to how this is done since then?
I just tried using method 2 (dpkg -i) and I'm getting the following error. Any ideas? dpkg: error: unable to access dpkg status area: No such file or directory
Even with --force-not-root, I get "dpkg: error: requested operation requires superuser privilege"
Folks, `--force-not-root --root=$HOME`, or variations thereof will not work. Debian binary packages are not designed to be installed in the home directory, period. Or, to put this another way,. "The following example will install package.deb into your home directory.". No, it won't.
@krasnaya, there are a few files/directories you'll need to create within your intended install dir: `touch status`, `mkdir updates`, and there may be one or two more. Use the error messages that appear to guide you.
mkdir /tmp/jedit && cd /tmp/jedit-- Makes a new diretory in
tmpand changes into it.
wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb-- Download package
ar x jedit_4.3.1.dfsg-0ubuntu1_all.debor, easy to type,
ar x *.deb-- this extracts the file contents
tar xvzf data.tar.gz-- the file
data.tar.gzhas all the stuff which you need for executing the software
usr/bin/jeditopens the editor
- done :-)
You can move the files to some point in your home directory and execute them from there.
Note that pre- and post-install scripts don't get run; also you'll need to resolve any dependencies or paths yourself. But on a default install this is sufficient for a lot of desktop applications.
you can also download the package without searching for it, just do apt-get download (see other answer)
I wrote a program called JuJu which basically allows to have a really tiny linux distribution (containing just the package manager) inside your $HOME/.juju directory.
It allows to have your custom system inside the home directory accessible via proot and, therefore, you can install any packages without root privileges. It will run properly to all the major linux distributions, the only limitation is that JuJu can run on linux kernel with minimum recommended version 2.6.32.
For instance, after installed JuJu to install jedit:
$>juju -f (juju)$> pacman -S jedit (juju)> jedit
Yes, if the linux kernel version of ubuntu is greater or equal to 2.6.32 it will work.
At first I thought you were talking about this. The second capitalized j makes the difference.