很多情况下,尤其是在公司工作,内部网络与外部网络是不相通的,因此经常需要在本地构建源。
(注:本文内容是在UbuntuServer14.04环境下应用的,部分命令请做相应调整,比如apt-get)
本节介绍使用apt-mirror搭建apt本地源的方法,简单几步就行:
(注:请先准备100G以上的空间来保存镜像文件,是的你没有看错,100G,建议选个快些的网络吧...)
首先,安装apt-mirror
$ sudo apt-get install apt-mirror |
---|
apt-get命令的源配置位于/etc/apt/sources.list,而apt-mirror命令的源配置位于/etc/apt/mirror.list,很好记吧。
(mirror.list文件中配置的就是下载apt源所有文件的地址,建议采用国内的源,这里以阿里云的源为例,其他的见后边附1)
############# config ################## # 以下注释的内容都是默认配置,如果需要自定义,取消注释修改即可 set base_path /var/spool/apt-mirror # # 镜像文件下载地址 # set mirror_path $base_path/mirror # 临时索引下载文件目录,也就是存放软件仓库的dists目录下的文件(默认即可) # set skel_path $base_path/skel # 配置日志(默认即可) # set var_path $base_path/var # clean脚本位置 # set cleanscript $var_path/clean.sh # 架构配置,i386/amd64,默认的话会下载跟本机相同的架构的源 set defaultarch amd64 # set postmirror_script $var_path/postmirror.sh # set run_postmirror 0 # 下载线程数 set nthreads 20 set _tilde 0 # ############# end config ############## # Ali yun(这里没有添加deb-src的源) deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
clean http://mirrors.aliyun.com/ubuntu |
---|
准备好之后就可以同步了:
$ sudo apt-mirror |
---|
然后就是漫长的等待了,同步的镜像文件目录为/var/spool/apt-mirror/mirror/mirrors.aliyun.com/ubuntu/,当然如果增加了其他的源,在/var/spool/apt-mirror/mirror目录下还有其他的地址为名的目录。
同步完成之后,放到httpd/apache2等http服务中就行,以apache2为例:
$ sudo apt-get install apache2 |
---|
由于Apache2的默认网页文件目录位于/var/www/html,因此,可以做个软链接
$ sudo ln -s /var/spool/apt-mirror/mirror/mirrors.aliyun.com/ubuntu /var/www/html/ubuntu |
---|
然后就可以通过如下地址访问了
http://[host]:[port]/ubuntu |
---|
如果看到地址下边是dist/和pool/两个目录就OK了,然后放到/etc/apt/sources.list中试试吧
# Local Source deb http://[host]:[port]/ubuntu/ trusty main restricted universe multiverse deb http://[host]:[port]/ubuntu/ trusty-security main restricted universe multiverse deb http://[host]:[port]/ubuntu/ trusty-updates main restricted universe multiverse deb http://[host]:[port]/ubuntu/ trusty-proposed main restricted universe multiverse deb http://[host]:[port]/ubuntu/ trusty-backports main restricted universe multiverse |
---|
执行更新命令"apt-get update",然后享受风驰电掣的速度吧。
本节介绍使用Bandersnatch进行镜像同步的方法,还是善意提醒一下,您需要准备大约120G以上的空间,对,您又没看错,这还是2014年的情况。
假定您已经安装python以及python-pip,这里我们用virtualenv来进行安装与使用。
首先安装virtualenvwrapper
$ pip install virtualenvwrapper |
---|
把下面这句加到~/.bashrc里面,如不嫌麻烦,也可以每次都手动执行。
source /usr/local/bin/virtualenvwrapper.sh |
---|
然后首先source一下.bashrc,第一次会创建一批文件(夹)到~/.virtualenvs/
$ source ~/.bashrc |
---|
建立一个virtualenv,会自动进入该env,会看到命令行前边有(bandersnatch)
$ sudo mkvirtualenv bandersnatch |
---|
安装bandersnatch
(bandersnatch)$ pip install -r https://bitbucket.org/pypa/bandersnatch/raw/stable/requirements.txt (bandersnatch)$ pip install bandersnatch (bandersnatch)$ bandersnatch mirror |
---|
第一次运行“bandersnatch mirror”命令会提示您进行相关配置,编辑/etc/bandersnatch.conf
[mirror] ; The directory where the mirror data will be stored. directory = /var/spool/pypi ...... ...... |
---|
directory即镜像文件要下载到的位置,master是镜像源,之前是尝试配置国内的源的(由于要求https的地址,只能添加清华大学的源,master = https://pypi.tuna.tsinghua.edu.cn),但是发现好像只能镜像目录或索引,无奈还是用回官方源。
然后再次运行“bandersnatch mirror”命令即可开始下载。
$ bandersnatch mirror |
---|
(注:由于现在还在镜像同步中,下一步如何操作等同步完再补上)
全部下载所有的镜像文件有时候确实是比较耗时的,那么也可以仅同步所需的Pypi包。
首先,安装pip2pi工具
$ pip install pip2pi |
---|
或
$ git clone https://github.com/wolever/pip2pi $ cd pip2pi $ python setup.py install |
---|
然后,创建存放软件包的仓库
$ sudo mkdir /var/spool/pypi-mirror |
---|
之后就可以下载软件包了,可以单个下载,也可以批量下载,比如
$ pip2tgz /var/spool/pypi-mirror/ routes==1.12.3 $ pip2tgz /var/spool/pypi-mirror/ -r requirements.txt |
---|
requirements.txt文件是一个待下载软件包列表,比如openstack需求的包列表。
软件包下载后,建立索引:
$ dir2pi /var/spool/pypi-mirror/ |
---|
若软件需求有更新,可以如下更新索引:
$ pip2acmeco uliweb=0.2.6 $ pip2acmeco -r list/requirements.txt |
---|
最后,将库地址配置给http服务就行了,方法同apt的类似,也可以采用自己的服务软件,比如nginx配置,这里介绍nginx的配置方法。
给Nginx服务器添加虚拟主机配置:
server { listen 80; server_name [hostname]; root /var/spool/pypi-mirror; location /{ autoindex on; autoindex_exact_size off; #显示文件的大小 autoindex_localtime on; #显示文件时间 #limit_rate_after 5m; #5分钟后下载速度限制为200k limit_rate 200k; } access_log logs/pypi.diyoms.com.access.log main; } |
---|
【或】当然也可以像apt源的部署方法一样,做一个软链接给apache2,或者配置apache
$ sudo ln -s /var/spool/pypi-mirror /var/www/html/pypi |
---|
源的使用方法及国内其他源的地址见附1。
本节介绍rubygems-mirror工具下载本地源的方法,再次善意提醒,gem源的大小也很惊人,目前是220G(2016-3),您是不是已经习惯了,哭晕在厕所好嘛~
假设您已经安装ruby和gem了。首先安装rubygems-mirror:
$ gem install rubygems-mirror |
---|
编辑~/.gem/.mirrorrc(最开始可能没有这个文件,创建一个就行)
--- - from: https://ruby.taobao.org to: /srv/gem |
---|
主要的参数有from和to,当然,from已经换成淘宝源,不只是快一点哟;to的话是镜像文件保存的位置。
此时执行命令gem mirror即可进行镜像下载啦。
$ gem mirror |
---|
终于下完了,用了两天两夜,不知道多大呢,du一下半天都出不来结果啊。。。听着老迈的硬盘格拉格拉的声音,实在心疼,还是df一下吧,妈呀,使用220G,幸亏虚拟机给了500G的空间,
修改/etc/apt/sources.list(建议先备份:sudo cp /etc/apt/sources.list /etc/apt/sources.list.back),选择添加如下内容,然后运行"apt-get update"即可(列表是针对ubuntu14.04的,即trusty版本):
# 阿里源(个人推荐): deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
# 163源: deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
# 搜狐源: deb http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse
# 官方源: deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse |
---|
另外,最近在学习CI过程中陆续添加的源,其中的内容相对于ubuntu的apt源版本会新很多:
# Puppet(puppetlab官方安装源) deb http://apt.puppetlabs.com trusty main # Jenkins(Jenkins安装方式的deb源) deb http://pkg.jenkins-ci.org/debian binary/ # Oracle Java(可以安装Oraclejava7/8甚至9) deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main # Git(目前apt的git版本是1.8.x,这是最新的git安装源) deb http://ppa.launchpad.net/git-core/ppa/ubuntu trusty main # GitLab deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu trusty main |
---|
Pypi的国内镜像源有
http://pypi.douban.com/ 豆瓣 http://pypi.hustunique.com/ 华中理工大学 http://pypi.sdutlinux.org/ 山东理工大学 http://pypi.mirrors.ustc.edu.cn/ 中国科学技术大学 https://pypi.tuna.tsinghua.edu.cn/ 清华大学 |
---|
对于pip这种在线安装的方式来说,很方便,但网络不稳定的话很要命。使用国内镜像相对好一些,
如果想手动指定源,可以在pip后面跟-i 来指定源,比如用豆瓣的源来安装web.py框架:
pip install web.py -i http://pypi.douban.com/simple |
---|
注意后面要有/simple目录!!!
要配置成默认的话,需要创建或修改配置文件(linux的文件在~/.pip/pip.conf,windows在%HOMEPATH%\pip\pip.ini),修改内容为:
[global]
index-url = http://pypi.douban.com/simple
|
---|
这样在使用pip来安装时,会默认调用该镜像。
https://ruby.taobao.org 淘宝(注意,淘宝已经改用https的地址了) |
---|
使用方法(添加淘宝源,删除官方源):
$ gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/ $ gem sources -l *** CURRENT SOURCES *** https://ruby.taobao.org # 请确保只有 ruby.taobao.org $ gem install rails |
---|
http://blog.csdn.net/get_set/article/details/50706293
http://linux.cn/article-4926-1.html
http://blog.csdn.net/get_set/article/details/50708471
http://topmanopensource.iteye.com/blog/2004853
https://github.com/rubygems/rubygems-mirror
https://pypi.python.org/pypi/bandersnatch
http://ju.outofmemory.cn/entry/106899
http://doc.devpi.net/latest/quickstart-pypimirror.html#installing-devpi-server
http://www.diyoms.com/python/1058.html