Fabien Cazenave: "pip install" & "gem install" without sudo |
Following yesterday’s post about using “npm install -g
” without root privileges, here are the Python and Ruby counterparts for your beloved OSX or Linux box.
By default, pip install
and gem install
try to install stuff in /usr/
, which requires root privileges. Hence, most users will “naturally” do a sudo to perform the install — which is, in my opinion at least, a very bad idea (do you really want to give root privileges to packages that haven’t been reviewed?). Fortunately, there’s more than the default setting.
pip install --user
With Python 2.6 and later you can avoid “sudoing” your pip install
by using the --user
argument (thanks @cmdevienne for the tip!). Let’s test this with html-linter:
$ pip install --user html-linter
By default on Linux and OSX (non-framework builds) this will install your package into ~/.local
, which is just fine for me. All executables are in ~/.local/bin/
, which is included in my $PATH
, and all Python libraries are in ~/.local/lib/python2.7/
. The world couldn’t be any better.
You can specify a custom destination by setting the PYTHONUSERBASE
environment variable:
$ export PYTHONUSERBASE=/myappenv $ pip install --user html-linter
Of course, you’ll have to add that to your $PATH
to make it work. You can add the following lines to your ~/.profile
like that:
export PYTHONUSERBASE=/myappenv PATH="$PYTHONUSERBASE/bin:${PATH}"
The only downside (compared to npm) is that you’ll have to remember to use the --user
argument when installing Python packages. If there’s a way to make it the default mode, please let me know.
EDIT: a good workaround is to define a custom pip
function in your ~/.bash_aliases
(or bashrc, zshrc, whatever), as suggested in comment #1.
gem install --user-install
gem
’s --user-install
argument is quite similar. One good thing is that you can easily make it the default mode:
$ echo "gem: --user-install" >> ~/.gemrc
Now let’s try that with the most valuable gem I know:
$ gem install vimgolf Fetching: vimgolf-0.4.6.gem (100%) WARNING: You don't have /home/kaze/.gem/ruby/1.8/bin in your PATH, gem executables will not run.
As you can see, gem
installs everything in ~/.gem
by default; unfortunately, the file structure does not allow to put executables in the same ~/.local/bin/
directory. Never mind, we’ll add those ~/.gem/ruby/*/bin/
directories to the $PATH
manually by adding these lines to the ~/.profile
:
for dir in $HOME/.gem/ruby/*; do [ -d "$dir/bin" ] && PATH="${dir}/bin:${PATH}" done
Source your ~/.profile
, you’re done.
http://kazhack.org/?post/2014/12/12/pip-gem-install-without-sudo
Комментировать | « Пред. запись — К дневнику — След. запись » | Страницы: [1] [Новые] |