Anaconda3的目录移植
由于我的系统盘满了, 进行了查杀, 但是始终在/var, /cache, /tmp 等目录下都没找到一个大容量的文件, 最后在/opt目录下发现了Anaconda3, 占用了大概有7GB左右的空间, 这对我只有50GB的寸土寸金的系统盘来说是天大的压力.
但是我有一个64T的盘, 挂在到了/home目录下, 最终, 我下定了决心, 打算把这个庞大怪物Anaconda3从/opt目录移植到/home目录来减轻我系统盘的压力. 区区7GB的占用对我64TB的数据盘来说是屁都不是
于是我们开始了折腾之路 ( 彩蛋在最后 ):
首先要把这个(base)给ko! , 让它从我们的视野里消失:
conda deactivate其次, 移动目录:
mv /opt/anaconda3 /home/移植完毕了, 我的系统盘一下子多出了11GB的空间, 哇, 服务器和我终于松了一口气,
接下来的工作就是: 如何让Anaconda重新活过来, 任何地方随叫随到!!!
为了实现我们的目标我们得修改N个文件, 分别是 ~/.bashrc, conda.sh, conda.csh 和 conda
第一步, 是修改~/.bashrc:
~/.bashrc文件 是在我们当前用户的主目录下, 其修改的是当前用户的一些环境变量配置等等.
比如root用户的话就是在/root/.basrc
比如test-user用户的在, /home/test-user/.bashrc, 这样其中test-user是用户名.
# .bashrc
# User specific aliases and functions
alias rm='rm -i'alias cp='cp -i'alias mv='mv -i'
# Source global definitionsif [ -f /etc/bashrc ]; then . /etc/bashrcfi
# >>> conda initialize >>># !! Contents within this block are managed by 'conda init' !!__conda_setup="$('/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"if [ $? -eq 0 ]; then eval "$__conda_setup"else if [ -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then . "/opt/anaconda3/etc/profile.d/conda.sh" else export PATH="/opt/anaconda3/bin:$PATH" fifiunset __conda_setup# <<< conda initialize <<<我们只需要 在该文件中的所有 /opt/anaconda3 改成新的地址即可
比如, 我的就是`/home/anaconda3`
.conda.sh 和 conda.csh 都在anaconda3目录下的../etc/profile.d/ 目录下
比如我的就是:
/home/anaconda3/etc/profile.d/conda.sh
/home/anaconda3/etc/profile.d/conda.csh
这两个文件也都一样, 两个都, 同样的把文件中的所有 /opt/anaconda3 改成新的地址即可
比如, 我的就是`/home/anaconda3`.
走到这一步, 我真的着急了, 就记者想召唤它, 结果......:
[root@hm-195 ~]# conda-bash: /home/anaconda3/bin/conda: /opt/anaconda3/bin/python: 坏的解释器: 没有那个文件或目录[root@hm-195 ~]# conda --version-bash: /home/anaconda3/bin/conda: /opt/anaconda3/bin/python: 坏的解释器: 没有那个文件或目录[root@hm-195 ~]# /home/anaconda3/bin/conda --version-bash: /home/anaconda3/bin/conda: /opt/anaconda3/bin/python: 坏的解释器: 没有那个文件或目录它真的让我整不会了.
我左想右想, 终于想明白了, 原来这个所谓的conda可执行文件, 它并不是真正的可执行文件, 它不是一个二进制文件, 它只是个脚本, 真正让它拥有灵魂的还是封神榜第一位的Python.
于是我就打开它了
vim /home/anaconda3/bin/conda
里面居然长这样:
#!/opt/anaconda3/bin/python# -*- coding: utf-8 -*-import sys# Before any more imports, leave cwd out of sys.path for internal 'conda shell.*' commands.# see https://github.com/conda/conda/issues/6549if len(sys.argv) > 1 and sys.argv[1].startswith('shell.') and sys.path and sys.path[0] == '': # The standard first entry in sys.path is an empty string, # and os.path.abspath('') expands to os.getcwd(). del sys.path[0]
if __name__ == '__main__': from conda.cli import main sys.exit(main())神了, 我们每次召唤的conda 居然只是一个Python的脚本, 这下不就太好操作了吗不是!!!
其内容中不难看出, 也就是第一行的Python解释器的位置还是老的,所以系统就找不到这个解析器, 自然也就无法正常运行了.
我们把它改成, 我们最新anaconda3目录下的python可执行文件的绝度路径来替换一下就好了.
#!/home/anaconda3/bin/python
其实, 还有一个更好的办法, 真的不用去配置这么多东西的. 那也就是, 利用软路由( 软链 ).
一旦, 把anaconda3目录移植到其他盘后, 把新的位置软链到原来的目录地址即可.
ln -s /<new_path>/ancaonda3 /<old-path>/anaconda3
这样就完事儿!!, 一切大功告成!!, 啥都不用配置!!