> 正常pyenv 安装 Python的时候,可以通过添加 `-v` 参数来查看具体的安装过程
---
正常的安装过程是:
从官网下载对应的版本压缩包到`/tmp/目录`,
然后在`/tmp/目录` 执行编译安装,
最终是安装到`~/.pyenv/versions/`下面
比如:
```
root@pts/2 $ pyenv install 3.4.4 `[-v]`
Downloading Python-3.4.4.tgz...
-> https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz
Installing Python-3.4.4...
Installed Python-3.4.4 to /root/.pyenv/versions/3.4.4
```
### cache
但是有个问题是有时候从官网下载tgz 包很慢,在不同的主机安装的时候都重新现在就是个很头疼的问题,这个时候 `./pyenv/cache` 目录就能发挥它的作用
+ 提前从官网下载需要安装的包
+ copy到 `./pyenv/cache` 中
+ 执行 `pyenv install version-number -v`
上面的version-number就是具体待安装的包的版本号, -v 展示安装过程
如果安装上面的操作执行就会省去下载的过程,直接执行 编译安装 ,会快很多。 其实上面的安装就是采用的这中
### cache 不生效
实际操作中发现,把下载的Python包放到了 cache 目录,但是还是去执行了下载过程。
添加 -v 参数安装的时候看到下载的文件名字是 'Python-3.4.4.tgz',如果
把这个文件名copy到 `~/.pyenv/cache/` 下面的是不起作用的,还是会继续
重新下载。
查找问题后发现,-v 显示的是下载 'Python-3.4.4.tgz', 但是
在/tmp/python-xxxxxx.xxxx/ 目录下面却显示的是 'Python-3.4.4.tar.gz' 文件。
```
root@pts/0 $ ls -l /tmp/python-build.20160608161435.16831
total 2960
-rw-r--r-- 1 root root 3031040 Jun 8 16:14 Python-3.4.4.tar.gz
```
所以把下载的 'Python-3.4.4.tgz' 改名为 'Python-3.4.4.tar.gz' 后放到
`~/.pyenv/cache/` 下面后,然后 pyenv install 3.4.4 -v 就不会重新下载了。
```
root@pts/0 $ cp -a Python-3.4.4.tgz ~/.pyenv/cache/Python-3.4.4.tar.gz
root@pts/0 $ pyenv install 3.4.4 -v
/tmp/python-build.20160608164944.31714 /tmp
/tmp/python-build.20160608164944.31714/Python-3.4.4 /tmp/python-build.20160608164944.31714 /tmp
Installing Python-3.4.4...
configure: WARNING: unrecognized options: --enable-unicode
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
... ...
Ignoring indexes: https://pypi.python.org/simple
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-7.1.2 setuptools-18.2
/tmp/python-build.20160608161532.16979 /tmp
/tmp
Installed Python-3.4.4 to /root/.pyenv/versions/3.4.4
```
从这里看到这次安装没有重新下载,调用了 cache中的文件,最终安装成功
```
注意:
不能采用把 Python-3.4.4.tgz 解压之后才压缩成 Python-3.4.4.tar.gz 的方式,
因为这样的话会导致源文件的md5值发生变化。而校验失败重新下载
```