扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
代理环境:通过一台装有ccproxy的windows机器(10.84.21.76)上网,ccproxy开通http、ftp服务。
我的系统:FreeBSD5.4-Release
问题:想更新机子上的port及已经安装的packages,但是cvsup不起作用,因为cvsup使用的不是http协议。
解决方案
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的主页。
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。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者