前面我们已经安装完了Cygwin,也在cygwing中安装了apt-cyg来管理我们的软件包。

但是在实际使用过程中,只有在我刚安装完apt-cyg后用它来安装软件包是可以的,之后就一直无法安装了,出现MD5 sum did not match, exiting的错误。

奇怪的是我卸载掉之前安装成功的,再重新安装也会出现这个错误:

liyd@liyd-PC ~
$ apt-cyg install zip
Working directory is /setup
Mirror is http://mirrors.163.com/cygwin
--2015-04-25 18:36:42--  http://mirrors.163.com/cygwin/x86_64/setup.bz2
正在解析主机 mirrors.163.com (mirrors.163.com)... 123.58.173.106
正在连接 mirrors.163.com (mirrors.163.com)|123.58.173.106|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1311606 (1.2M) [application/octet-stream]
正在保存至: “setup.bz2”
setup.bz2                   100%[===========================================>]   1.25M   501KB/s 用时 2.6s
2015-04-25 18:36:45 (501 KB/s) - 已保存 “setup.bz2” [1311606/1311606])
Updated setup.ini
Installing zip
Found package zip
--2015-04-25 18:36:48--  http://mirrors.163.com/cygwin/x86_64/release/zip/zip-3.0-12.tar.xz
正在解析主机 mirrors.163.com (mirrors.163.com)... 123.58.173.106
正在连接 mirrors.163.com (mirrors.163.com)|123.58.173.106|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:221480 (216K) [application/octet-stream]
正在保存至: “zip-3.0-12.tar.xz”
zip-3.0-12.tar.xz           100%[===========================================>] 216.29K  1003KB/s 用时 0.2s
2015-04-25 18:36:49 (1003 KB/s) - 已保存 “zip-3.0-12.tar.xz” [221480/221480])
MD5 sum did not match, exiting

这直接导致我相当于apt-cyg不能用了,网上查询了相关资料,有网友说是因为64位软件安装源的问题:

终于发现问题所在:现在的apt-cyg还没有支持新的x86_64架构,这也是cygwin的包管理的历史遗留问题了。
在新的包定义文件setup.ini(譬如http://mirrors.163.com/cygwin/x86_64/setup.ini)里,对包的位置添加了诸如“x86”、"x86_84"之类的路径以区别不同的架构,而apt-cyg一直没有更新,没有做架构识别,于是就下载不到相关文件,然后报错。
由于apt-cyg命令就是一个shell脚本——一个不是很复杂的脚本,所以只要编辑脚本就可以快速解决这个问题,当然也有好几种修改办法来解决这个问题,这里介绍一个比较简单的办法。
1.编辑apt-cyg文件,这个文件的路径一般在cygwin\bin(\bin\)目录下,找不到可以使用搜索,可以使用记事本打开。
2.找到“wget -N $mirror”(不包括双引号),脚本里总共就2处符合要求,且这两处都需要修改。
3.在这两段字符后面添加上字符“/`arch`”,不包括双引号,最终效果:
wget -N $mirror/`arch`/setup.ini
wget -N $mirror/`arch`/setup.bz2
建议复制粘贴过去。然后保存文件。

但是因为我前面安装的就是修改版,这个问题早就处理过了,在按照他的方法进行修改后发现路径中会多出一个x86_64反而不正常了,出现404错误:

http://mirrors.163.com/cygwin/x86_64/x86_64/release/vim/vim-7.3.1152-1.tar.bz2

说明不是这个问题引起的,具体问题在哪里我一下子也找不出来。

不过既然是校验由于md5值不一致而导致软件不安装,那我把这个校验去掉不就行了么?

找到apt-cyg文件,前面我们复制到了/usr/local/bin目录下,如果忘了也可以用whereis查找:

liyd@liyd-PC /usr/local/bin
$ whereis apt-cyg
apt-cyg: /usr/local/bin/apt-cyg

使用vim打开apt-cyg文件,搜索刚才出现的错误,这里我搜索“MD5 sum ”,发现文件中只有一个地方有一下就找到了,看如下代码:

image

发现在校验不通过后,直接exit 1退出了,这应该是为安全考虑的,但我个人电脑上去掉这个校验应该问题不大,所以我们把这行注释掉让它不退出是不是就可以了呢?

# check the md5
    digest=`cat "desc" | awk '/^install: / { print $4; exit }'`
    digactual=`md5sum $file | awk '{print $1}'`
    if ! test $digest = $digactual
    then
      echo MD5 sum did not match, exiting
      #exit 1
    fi

注释掉后重新安装软件,发现校验仍然不通过会输出错误信息,但是因为我们把退出的那一行注释掉了,所以软件还是成功安装!

在使用vi或vim命令修改内容时,又出现一个问题,发现在键入i后修改内容时,方向键和删除键都不能正常使用,这跟在ubuntu下时使用vi一个样,真是问题一串啊,这个就留到下次再讲了。

你可能感兴趣的内容
0条评论

selfly

交流QQ群:32261424
Owner