背景
使用Devstack进行研发环境搭建的时候,或者在进行单元测试创建venv环境时,总是需要从pip源进行大量安装,而因为网络问题导致无法正常安装的情况屡有发生,那么这里就介绍一下如何搭建本地的OpenStack的PIP源,并且如何在客户端正确设置来使用他们。
PIP源的搭建
首先,无疑先要有个Apache环境,建立一个叫pip的目录,存放所有的pip安装包。
搭建源的方法有两种,一种是直接将公网的pip源下载到本地,之后用crontab定期同步就可以了,这样的好处是大而全,不好的是对于网络带宽较小的,简直就是拉锯战。
这里介绍的第二种方法可能更经济实惠,我是从之前一篇源代码安装OpenStack获得的启发。基本的思路就是把所有的pip-requires和test-requires文件汇聚到一个文件,之后利用pip进行download,做到为OpenStack量身定制。
find . -name pip-requires -exec cat {} \; > pip-requires.all
find . -name test-requires -exec cat {} \; > test-requires.all
#!/bin/bash PIP_REQUIRE="pip-requires" CACHE_PATH="pip" while read LINE do if [[ $LINE =~ ^[a-zA-Z] ]] then echo $LINE yes w | pip install $LINE --no-install -d pip -I fi done < $PIP_REQUIRE
客户端的设置
经过试验发现,如果通过本地的pip源进行安装,需要让pip和easyinstall同时指向本地pip源,否则仍然会有包从远程进行下载。具体方式如下:
vi $HOME/.pip/pip.conf
[global] find-links = http://192.168.0.30/pip no-index = true
vi $HOME/.pydistutils.cfg
[easy_install] index_url = http://192.168.0.30/pip