本地源的搭建(Apt、Pypi、Rubygem)

很多情况下,尤其是在公司工作,内部网络与外部网络是不相通的,因此经常需要在本地构建源。

(注:本文内容是在UbuntuServer14.04环境下应用的,部分命令请做相应调整,比如apt-get)


APT本地源的搭建

本节介绍使用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",然后享受风驰电掣的速度吧。


Pypi本地源的搭建

使用Bandersnatch进行完整同步

本节介绍使用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

(注:由于现在还在镜像同步中,下一步如何操作等同步完再补上)

只用pip2pi工具仅同步所需的Pypi包

全部下载所有的镜像文件有时候确实是比较耗时的,那么也可以仅同步所需的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。


RubyGem本地源的搭建

本节介绍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的空间,


附1:国内源

APT源

修改/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源

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来安装时,会默认调用该镜像。

RubyGem源

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

 

附2:参考资料

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

 

你可能感兴趣的:(【打怪升级】Linux)