2009年9月

[apt同步问题]apt-mirror: can’t chdir to skel at /usr/bin/apt-mirror line 313.

突然想搞一个ubuntu的套件库(repository)。最近常使用ubuntu,系统安装完后的那些安全升级和一般包的升级需要700MB左右,我们学校上网费用按照流量计算,所以打算做一个本地的apt server,需要一个apt-mirror的工具来同步同步apt server上的文件。做好了拿出来共享给大家那就牛逼啦。

大三上学期的课程1个星期6节,就两科。机房上网是不需要流量的,上机课的时候跑到机房最后一排在移动硬盘上下载安装cygwin(啥是 cygwin?Cygwin is a Linux-like environment for Windows. It consists of two parts:

  • A DLL (cygwin1.dll) which acts as a Linux API emulation layer providing substantial Linux API functionality.
  • A collection of tools which provide Linux look and feel.

)。

本校有个老师做了一个cygwin的套件库镜像:http://cygwin.mirrors.cqit.edu.cn/ 安装的时候选择All->Install 全部安装,下载800MB,安装后解压出来3.75 GB。

具体方法:

1.到官方下载cygwin , http://www.cygwin.com/ 文件大小不超过1MB

2.下载后运行,选择“install from internet”

3.下一步 ,Root Direcotry是安装后的cygwin的根目录,我指定到位置J:\cygwin

4.下一步 ,选择包下载到本地硬盘的位置,我制定到位置J:\cygwin_pkgs

5.下一步,根据需要选择网络连接方式

6.下一步,会在cygwin.com下载mirrors.lst是cygwin软件包服务器列表

7.下一步,输入http://cygwin.mirrors.cqit.edu.cn/ 点“Add”

8.下一步,会下载setup.bz2,这个文件是这个软件包服务器上所提供的软件包列表

9.下一步,选择需要安装的软件包,避免手动安装麻烦,我全部安装上了,点All->Install

10.然后是漫长的下载,安装,运行配置的过程。

11.打开cygwin , 运行apt-mirror直接弹出错误:apt-mirror: can't chdir to skel at /usr/bin/apt-mirror line 313. 我猜想可能是配置文件没有配置好。

12.修改配置文件/etc/apt/mirror.list :

# apt-mirror configuration file

*##

The default configuration options (uncomment and change to override)

取消以下内容前面的

set base_path       /var/spool/apt-mirror
set mirror_path  $base_path/mirror
set skel_path       $base_path/skel
set var_path     $base_path/var*

set defaultarch  amd64
set nthreads     20

*##

Example sources

我改成了ubuntu karmic 的源

deb http://tw.archive.ubuntu.com/ubuntu karmic main universe restricted multiverse
deb http://tw.archive.ubuntu.com/ubuntu karmic-updates universe main multiverse restricted
deb http://tw.archive.ubuntu.com/ubuntu karmic-proposed universe main multiverse restricted
deb http://tw.archive.ubuntu.com/ubuntu karmic-security universe main multiverse restricted
deb http://tw.archive.ubuntu.com/ubuntu karmic-backports main multiverse restricted universe*

*##

Cleaner configuration example

set cleanscript $var_path/clean.sh

需要清理的url*

# Cleaning section

clean http://tw.archive.ubuntu.com/ubuntu

13.运行apt-mirror出现错误:apt-mirror: can't chdir to skel at /usr/bin/apt-mirror line 313.

打开apt-mirror文件,定位到313行:

chdir get_variable("skel_path") or die("apt-mirror: can't chdir to skel");

这是一个perl脚本,出现错误的原因是chdir get_variable("skel_path")这个命令没有执行成功,skel_path这个变量是在mirror.list文件中定义了的,发现目录是:/var/spool/apt-mirror/ 还有其他几个目录,所以执行以下命令:

mkdir -p /var/spool/apt-mirror/mirror
mkdir -p /var/spool/apt-mirror/var
mkdir -p /var/spool/apt-mirror/skel

继续运行apt-mirror成功,接下来就是漫长的下载过程,需要寂寞的等待。因为mirror.list有这么一句:set defaultarch  amd64,所以只会下载amd64构架的包,可以节约不少空间和时间。

wget抓大文件 +2009.9.4日记

昨天(2009.9.3)提着三个大麻布口袋来到了学校,感觉这个暑假过得还是挺快的。不过还好,驾驶考试在9.1考完。等驾照发下来了再po上来提哈劲。在来学校前几天,同学找我修复硬盘,结果自己的硬盘冒烟了,还好及时的拔掉了电源,没有烧起来。硬盘接口烧了,电源线也烧焦了,反正就是没有办法用了。最后决定到他自己亲戚家去修复。

次日来到山洞,一个很到处都是工地与灰尘的地方。修了一上午,无果。倒是我的移动硬盘数据不小心被格,郁闷!下午到石桥铺修理硬盘和电源,问了很多家还是“华人数据维护”还比较专业点,修硬盘的是个非主流,弄了半天说了一句话:弄不起,要到总部去修,改天来拿只有。我囧。

次日上午10点来到学校,收拾了1个小时,算是安顿了下来。刚开机,23个未接电话的提示短信,其中21个都是余二娃的。我以为是什么十万火急的事情呢(其实我也知道现在一般找我的都没啥急事),结果是他女人的笔记本系统出问题了,下午闲着没有事情做就跑到花溪校区去游荡了一下。vista装了三次都是:安装完了,重新启动后左右角的光标不停的闪烁。最后一次,安装前把系统盘格式化了一次再安装搞定。弄到6点,吃饭的时间到。新校区倒是没有好大的变化,不过前门的餐饮业是搞起来了,开啥子都很赚的样子,整了点串串,晚上7点就屁颠屁颠的打回老校区。下午打电话给小蒋,听说徒弟要走远门了,叫我去践行。唉,恩是不早点说,要怪就怪手机那段时间处于散架状态。

在寝室复习老久都没有看的日语了,现在复习到了12课。

次日上午打电话听说硬盘修复好了就去拿,随便那个硬盘的坏道也已经修复了。我就纳闷的我才买两年不到的硬盘就有坏道了,还不少呢。人品?回来的路上在科艺苑缴了学费8.8k,唉,真tmd贵啊。

另外听说我的无敌10G免费drcom帐号因为在暑假的时候给别人使用,现在有个帐号的密码已经被人修改了,问了一圈,都说没有改。我ri,这就是大学生的素质?!

学校上网按流量计费,所以在上网的时候,一般是抱着谨慎而不浪费的原则。学校有个Linux服务器,有个公共帐号可以登录,已经连接外网,平时比较多的使用wget来下载东东。刚发现个问题,当使用机子自带的 GNU Wget 1.8.2 下载大于4G的文件时候,文件长度是错误的,一般比真实文件长度少:

-bash-2.05b$ wget http://tw.archive.ubuntu.com/ubuntu-dvd-releases/releases/jau
nty/release/ubuntu-9.04-dvd-amd64.iso
--23:29:40--  http://tw.archive.ubuntu.com/ubuntu-dvd-releases/releases/jaunty/r
elease/ubuntu-9.04-dvd-amd64.iso
=> `ubuntu-9.04-dvd-amd64.iso.1'
Resolving tw.archive.ubuntu.com... done.
Connecting to tw.archive.ubuntu.com[140.112.8.139]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 317,794,304 [application/x-iso9660-image]

0% [                                     ] 516,750      598.62K/s    ETA 08:37

因为一开始我就怀疑是wget版本过低对大文件支持不是很好的原因,就自己抓了个最新的GNU Wget 1.11.4 下来编译使用。

-bash-2.05b$ ./wget -V
GNU Wget 1.11.4

Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://www.gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Originally written by Hrvoje Niksic <hniksic@xemacs.org>.
Currently maintained by Micah Cowan <micah@cowan.name>.
-bash-2.05b$ ./wget http://tw.archive.ubuntu.com/ubuntu-dvd-releases/releases/jaunty/release/ubuntu-9.04-dvd-amd64.iso
--2009-09-04 17:50:58--  http://tw.archive.ubuntu.com/ubuntu-dvd-releases/releas
es/jaunty/release/ubuntu-9.04-dvd-amd64.iso
Resolving tw.archive.ubuntu.com... 140.112.8.139
Connecting to tw.archive.ubuntu.com|140.112.8.139|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4612761600 (4.3G) [application/x-iso9660-image]
Saving to: `ubuntu-9.04-dvd-amd64.iso'

100%[====================================>] 4,612,761,600 1.02M/s   in 77m 43s

2009-09-04 19:08:42 (966 KB/s) - `ubuntu-9.04-dvd-amd64.iso' saved [4612761600/4
612761600]

-bash-2.05b$ pwd
/home/open/wget-1.11.4/src
-bash-2.05b$
9% [==>                                    ] 422,890,854  961K/s  eta 67m 35s

这样就正常了,这种方法下东东老节约了。