Table of Contents
由于工作需要经常会使用多种语言, 比如 python, golang, lua, javascript等, 各种语言都有自己的包管理器,像python的包管理器pip, lua的包管理器luarocks。。。
每个包管理器安装package的方式,位置都不相同,对于一个有洁癖的人来说,
ls ~/ -al
后各种各样的.something
简直是场灾难, 所以保持一个干净的系统是非常必要的, 比如把相关语言的package都放到一个目录(我选择放到$HOME/repo/{language}
)下
请不要使用root用户,或者sudo来安装非必要的软件包
python
我的python环境是pip+virtualenv+virtualenvwrapper
, pip可以有多种使用方式:
- sudo
sudo安装的package放到
/usr/lib64/python-{verison}
目录下, 这可能会与系统的包管理器所安装的python package冲突, 比如docker可以使用sudo pacman -S docker
也可以使用
sudo pip install docker
但更新系统包时可能有冲突导致无法更新
- *--user*(-U)
使用本地安装,不需要sudo权限, 安装的package会放到
$HOME/.local
目录下 - virtualenv
python的各种依赖包环境分离靠的就是virtualenv, 它会把安装的package放到
$WORKON_HOME
这个环境变量下, 我平时也主要使用这个,但一些常用的package, 像http,docker-compose,pelican等, 我不想在使用时还得workon {virtualenv name}
然后才能使用, 太麻烦
最有效的方法是搭配--user
和virtualenv
- 设置
--user
的安装目录export PYTHONUSERBASE=$HOME/repo/python
- 设置
virtualenv
的安装目录export WORKON_HOME=$HOME/repo/python/virtualenv source $HOME/repo/python/bin/virtualenvwrapper.sh
- 设置
PATH
变量export PATH=$PATH:$HOME/repo/python/bin
然后无论是pip install package --user
还是mkvirtualenv后pip install package
, 所安装的package都会放到$HOME/repo/python
目录下
golang
与python同理
- 设置
GOPATH
变量export GOPATH=$HOME/repo/golang
- 设置
PATH
变量export PATH=$PATH:$HOME/repo/python/bin:$HOME/repo/golang/bin
lua
- 设置luarocks安装默认参数
alias luarocks='luarocks --tree=$HOME/repo/lua'
- 设置
LUA_PATH
与LUA_CPATH
变量export LUA_PATH="$HOME/repo/lua/share/lua/5.3/?.lua;$HOME/repo/lua/share/lua/5.3/?/init.lua;$LUA_PATH;" export LUA_CPATH="$HOME/repo/lua/lib/lua/5.3/?.so;$LUA_CPATH;"
- 设置
PATH
变量export PATH=$PATH:$HOME/repo/python/bin:$HOME/repo/golang/bin:$HOME/repo/lua/bin
javascript
- 修改
npmrc
配置npm config set prefix $HOME/repo/npm npm config set cache $HOME/repo/npm
- 设置
NODE_PATH
变量export NODE_PATH="$HOME/repo/npm/lib/node_modules:$NODE_PATH"
- 设置
PATH
变量export PATH=$PATH:$HOME/repo/python/bin:$HOME/repo/golang/bin:$HOME/repo/lua/bin:$HOME/repo/npm/bin
- 测试
npm install -g js-beautify # 将会安装到$HOME/repo/npm目录 npm install js-beautify # 将会安装到当前目录下
最后, 把相关代码放到$HOME/.bashrc
中, 就可以享受一个相对干净的系统了