console下通过代理服务器更新FreeBSD port及pack…

2009-05-13 11:45:59来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

代理环境:通过一台装有ccproxy的windows机器(10.84.21.76)上网,ccproxy开通http、ftp服务。
我的系统:FreeBSD5.4-Release
问题:想更新机子上的port及已经安装的packages,但是cvsup不起作用,因为cvsup使用的不是http协议。
网上常用解决方案
在~/.cshrc中设置HTTP_PROXY和FTP_PROXY (sh或者bash用户用export)
setenv HTTP_PROXY 10.84.21.76:27015
setenv FTP_PROXY   10.84.21.76:27015
在/etc/make.conf中添加两行:
FETCH_ENV= FTP_PROXY=10.84.21.76:27015
FETCH_ENV= HTTP_PROXY=10.84.21.76:27015
(注意:=号后面的空格不可少)
一般这样设置以后就可以了,但是我这里怎么设置都不行。通过不断摸索,终于找到了最终的解决方案。
我的解决方案
1、更新port tree
虽然不能使用cvsup,但是这里推荐给大家一个更好用的软件:portsnap(sysutils\portsnap),portsnap使用使用 http协议(因为它使用fetch来获取包,因此要安装portsnap,我必须先在.cshrc中设定HTTP_PROXY和FTP_PROXY,这里只设置make.conf好像不行),速度更快更安全,占的带宽大概只有cvsup的十分之一。portsnap的作者就是FreeBSD Security Officer Team现任Officer:Colin Percival。
#cd /usr/ports/sysutils/portsnap
#make install clean
安装好后,设置好配置文件(具体参见portsnap中的pkg-message)。  
使用portsanp更新port tree的命令顺序为:
#portsnap fetch #首次使用时会下载一个35M左右的port tree压缩snapshot,以后使用就会不断更新它
#portsnap extract   #只在第一次使用portsnap时使用,作用是把下载的压缩snapshot释放到/usr/ports
#portsnap update #更新/usr/ports
这样port tree就更新好了,更多portsanp信息参见manpage和作者portsnap的主页。
http://www.cublog.cn/u/4206/showart.php?id=99497
2、更新已安装的package
这让我很是费了不少脑筋,我是用portupgrade更新已安装的port和package,portupgrade使用fetch程序从网上down 各种包,但是由于有代理设置,所以必须要设置一下。我在网上查阅了很多资料,都是讲怎么设置HTTP_PROXY、FTP_PROXY以及 /etc/make.conf来使用fetch获取包,但是不管我怎么设置,portupgrade在遇到ftp站点时都不能下载。只有另辟蹊径,这里我推荐使用wget:
安装wget:
#cd /usr/ports/ftp/wget
#make install clean
修改wget的全局配置文件/usr/local/etc/wgetrc或者个人配置文件~/.wgetrc,添加代理设置:
http_proxy = 10.84.21.76:27015
ftp_proxy = 10.84.21.76:27015
这两行将将覆盖环境变量中设置的http_proxy和ftp_proxy。
接着在/etc/make.conf中添加两行:
FETCH_CMD= wget #这样写wget必须在$PATH中,或者写绝对路径名:/usr/local/bin/wget
DISABLE_SIZE= YES  
注意:DISABLE_SIZE这条一定不能少,大家都注意到每个port的目录下都有一个distinfo文件,里面有SIZE一行,这会导致每次都传递给FETCH_CMD一个“-S bytes”参数,但wget不支持这一参数,如果不加这条,使用portupgrade时会提示:
    wget: invalid option --
    用法: wget [选项]... [URL]...
    请尝试使用“wget --help”查看更多的选项。
加上这行后,就一切搞定了,wget就会正常工作,里面还有一个双向箭头来回移动,比较有趣。可参看附件中我的屏幕截图。wget还有很多的参数可以使用,参见man wget。如果有参数需要添加,可以直接添加在FETCH_CMD上或者在/etc/make.conf中添加FETCH_BEFORE_ARGS和 FETCH_AFTER_ARGS。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:IIS与Apache共存

下一篇:mount/umount 16问