> 正常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值發生變化。而校驗失敗重新下載
```