【背景】
折腾:
【未解决】Cygwin下配置Linux内核出错:Makefile:419: *** mixed implicit and normal rules. Stop.
期间,需要把Cygwin中的,新的版本的,3.82的make,换为旧的,3.81版本的。
【折腾过程】
1.目前能想到的,只能是重新运行setup,然后试试能否找到3.81的make,然后重新安装。
2.后来参考:
How to install new packages on Cygwin?
提到了,貌似可以通过apt-cyg去安装一个软件包的。
而此apt-cyg,之前就在别处的cygwin下安装过。
所以,此处,再去在此处的cygwin下安装一下:
找到:
https://code.google.com/p/apt-cyg/
然后去下载和安装:
CLi@PC-CLI-1 ~/develop/kernel/linux-2.6.19.1 $ svn --force export http://apt-cyg.googlecode.com/svn/trunk/ /bin/ A /bin A /bin/apt-cyg Exported revision 18. CLi@PC-CLI-1 ~/develop/kernel/linux-2.6.19.1 $ chmod +x /bin/apt-cyg CLi@PC-CLI-1 ~/develop/kernel/linux-2.6.19.1 $ apt-cyg --version apt-cyg version 0.57 Written by Stephen Jungels Copyright (c) 2005-9 Stephen Jungels. Released under the GPL. CLi@PC-CLI-1 ~/develop/kernel/linux-2.6.19.1 $ which apt-cyg /usr/bin/apt-cyg
即可。
3.试试能否去安装make,结果连不上服务器:
CLi@PC-CLI-1 ~/develop/kernel/linux-2.6.19.1 $ apt-cyg cache search make apt-cyg: Installs and removes Cygwin packages. "apt-cyg install <package names>" to install packages "apt-cyg remove <package names>" to remove packages "apt-cyg update" to update setup.ini "apt-cyg show" to show installed packages "apt-cyg find <patterns>" to find packages matching patterns "apt-cyg describe <patterns>" to describe packages matching patterns "apt-cyg packageof <commands or files>" to locate parent packages Options: --mirror, -m <url> : set mirror --cache, -c <dir> : set cache --file, -f <file> : read package names from file --noupdate, -u : don't update setup.ini from mirror --help --version CLi@PC-CLI-1 ~/develop/kernel/linux-2.6.19.1 $ apt-cyg find make Working directory is /setup Mirror is ftp://mirror.mcs.anl.gov/pub/cygwin --2013-08-22 14:03:25-- ftp://mirror.mcs.anl.gov/pub/cygwin/setup.bz2 => `.listing' Resolving mirror.mcs.anl.gov (mirror.mcs.anl.gov)... 146.137.96.7, 2620:0:dc0:1800:214:4fff:fe7d:1b9 Connecting to mirror.mcs.anl.gov (mirror.mcs.anl.gov)|146.137.96.7|:21... failed: Connection timed out. Connecting to mirror.mcs.anl.gov (mirror.mcs.anl.gov)|2620:0:dc0:1800:214:4fff:fe7d:1b9|:21... failed: Connection timed out. Retrying. --2013-08-22 14:04:09-- ftp://mirror.mcs.anl.gov/pub/cygwin/setup.bz2 (try: 2) => `.listing' Connecting to mirror.mcs.anl.gov (mirror.mcs.anl.gov)|146.137.96.7|:21... failed: Connection timed out. Connecting to mirror.mcs.anl.gov (mirror.mcs.anl.gov)|2620:0:dc0:1800:214:4fff:fe7d:1b9|:21... failed: Connection timed out. Retrying. --2013-08-22 14:04:53-- ftp://mirror.mcs.anl.gov/pub/cygwin/setup.bz2 (try: 3) => `.listing' Connecting to mirror.mcs.anl.gov (mirror.mcs.anl.gov)|146.137.96.7|:21... failed: Connection timed out. Connecting to mirror.mcs.anl.gov (mirror.mcs.anl.gov)|2620:0:dc0:1800:214:4fff:fe7d:1b9|:21...
4.所以,貌似,此处,只能放弃apt-cyg了。
那就想办法,通过setup去安装3.81的make。
看到cygwin主页:
http://www.cygwin.com/install.html
的说明,貌似现在又出现一个for x64的:setup-x86_64.exe
当前此处win7是x64的,所以,不知道要不要用这个for x64的setup。
因为担心,会不会运行此x64的setup,和之前已经(用x86的setup)安装的cygwin,会有冲突。
所以还是先去看看,能否找到原先已有的那个setup.exe了。
找到了之前用的setup.exe:
所以,就可以重新去运行了:
暂时还是先从本地看看再说:
结果,本地只有3.82的make:
所以,放弃从本地安装。
重新运行setup.exe,选择在线安装:
直接连接:
选择163的源:
然后结果竟然出错了“Unable to get setup.ini from <http://mirrors.163.com/cygwin/>:
【已解决】Cygwin安装时,选择163的源后出错:Unable to get setup.ini from <http://mirrors.163.com/cygwin/>
5.然后还是看到只有3.82的make,但是注意到,当前是选择了“Hide obsolete packages”的:
6.所以,取消选择“Hide obsolete packages”,看看能否有其他版本的make,结果还是没有:
7.然后尝试切换到Exp试试:
看看能否有其他版本的make,结果还是没有:
8.貌似163的cygwin的mirror中,没有3.81的make?
所以去看了看:
http://mirrors.163.com/cygwin/x86_64/setup.ini
结果真的没有搜到3.81的make。
不过倒是在:
http://mirrors.163.com/cygwin/x86/setup.ini
中搜到了3.81的make:
@ make sdesc: "The GNU version of the 'make' utility" ldesc: "A GNU tool for controlling the generation of executables and other non-source files of a program from the program's source files. Make allows users to build and install packages without any significant knowledge about the details of the build process. The details about how the program should be built are provided for make in the program's makefile." category: Devel requires: cygwin coreutils bash libintl8 libiconv2 version: 3.82.90-1 install: x86/release/make/make-3.82.90-1.tar.bz2 452564 5f7a3fa41811b2309b735862a291615b source: x86/release/make/make-3.82.90-1-src.tar.bz2 1312867 6758bbbd3315c37d9e8df888a276cef6 [prev] version: 3.81-2 install: x86/release/make/make-3.81-2.tar.bz2 358213 8c54e2611401c435cec0a9a95fd0e9dc source: x86/release/make/make-3.81-2-src.tar.bz2 1114196 615bc53f9c86f365974caeb41006975e |
9.所以,接下来,就是去:
重新用cygwin官网的最新的setup.exe,去加载163的x86的mirror:
http://mirrors.163.com/cygwin/x86/
然后应该就可以找到对应的3.81的make了。
去下载
http://www.cygwin.com/setup-x86.exe
然后去安装:
然后同样设置x86的163的mirror:
此处,好像是,第二个:
结果是地址搞错了,弄了两个x86:
换成正确的:
然后正确解析了,再去找3.81的make,结果如上,也是找不到。
10.然后,再次去确认一下,本地的setup.in:
D:\tmp\dev_tools\cygwin\http%3a%2f%2fmirrors.163.com%2fcygwin%2fx86%2f\setup.ini
其中是包含了3.81的make的:
@ make ldesc: "A GNU tool for controlling the generation of executables and other non-source files of a program from the program’s source files. Make allows users to build and install packages without any significant knowledge about the details of the build process. The details about how the program should be built are provided for make in the program’s makefile." category: Devel requires: cygwin coreutils bash libintl8 libiconv2 version: 3.82.90-1 install: x86/release/make/make-3.82.90-1.tar.bz2 452564 5f7a3fa41811b2309b735862a291615b source: x86/release/make/make-3.82.90-1-src.tar.bz2 1312867 6758bbbd3315c37d9e8df888a276cef6 [prev] version: 3.81-2 install: x86/release/make/make-3.81-2.tar.bz2 358213 8c54e2611401c435cec0a9a95fd0e9dc source: x86/release/make/make-3.81-2-src.tar.bz2 1114196 615bc53f9c86f365974caeb41006975e |
但是还是找不到。
11.后来的后来,无意间发现,原来,make的那个keep,是可以点击切换的,除了之前的uninstall等选项之外,还可以切换到,之前的3.81的版本的:
如此,就可以实现了:
卸载旧的3.82的make,重新安装旧的3.81的make了。
然后,另外也顺带,把src选上:
12.继续去安装:
由于默认的选择了其他的一些软件包,结果会去另外下载和安装这些包:
然后就是漫长的等待了。。。
13.其中,此处,发现:
原先下载的位置是:
D:\tmp\dev_tools\cygwin\http%3a%2f%2fmirrors.163.com%2fcygwin%2f\release
而此处,没有下载到:
D:\tmp\dev_tools\cygwin\http%3a%2f%2fmirrors.163.com%2fcygwin%2fx86%2f
而是下载到了:
D:\tmp\dev_tools\cygwin\http%3a%2f%2fmirrors.163.com%2fcygwin%2f\x86
下面的release了,即:
D:\tmp\dev_tools\cygwin\http%3a%2f%2fmirrors.163.com%2fcygwin%2f\x86\release
所以,为了加速,减少部分内容的下载,就把
D:\tmp\dev_tools\cygwin\http%3a%2f%2fmirrors.163.com%2fcygwin%2f\release
下面所有的包,全部都拷贝到
D:\tmp\dev_tools\cygwin\http%3a%2f%2fmirrors.163.com%2fcygwin%2f\x86\release
下面去了,这样,就可以减少N多内容的下载,加快速度了。
14.经过漫长的等待,下载完毕后,就是去安装了:
然后就是运行一些脚本:
15.最后,终于安装完成了:
然后再去启动Cygwin,确认一下make的版本,果然是3.81了:
CLi@PC-CLI-1 ~/develop/kernel/linux-2.6.19.1 $ make -v GNU Make 3.81 Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program built for i686-pc-cygwin
【总结】
本来只是把cygwin中的make从3.82换成3.81的,结果却是重新完整的安装了一遍cygwin,太耗时间了。。。
转载请注明:在路上 » 【记录】Cygwin下把make从v3.82换成v3.81