Cygwin是一个用于在Windows上模拟Linux环境的软件,由于工作上的需要,我要使用它,至于为什么用它,我在这里不做过多的解释,本文的目的,旨在于解决Cygwin安装上的问题。
原始的安装Cygwin的方法有两种(官方的方法):
1.
远程下载安装,需要访问网络。
2.
本地安装,前提是在本地要有安装文件,获取安装文件的方法有两种,一种就是通过远程下载下来,保存在本地,第二种就是订购其ISO光盘。
显然,对于国内大多数用户来说,订购ISO光盘,不是上上之选,那只有考虑从网上下了。
可是问题来了,
虽然Cygwin的官网上提供了众多的镜像,但不知是国内的网络不行还是怎么回事,下载奇慢,好像回到了拨号时代,汗。。。。慢还不要紧,下得不掉链子的算你幸运。
那怎么办?正规方法是不行了,还好有些好心的网友,把自己下载下来的安装文件共享了出来。大家可以在网上搜索一下,“Cygwin 本地安装”,“Cygwin
安装包
”或“Cygwin ISO”。哈哈,是不是有戏?生命在于奉献!,多亏了有这么多热心的网友:)
对于大多数人来说,上面的快速安装方法已经足够了。
可是本人偏爱DIY,所以本人研究了一下,Cygwin的官方说明,找到了另一种方法(我没这么好的网络,可不能像有些安心的网友那样自己通过
安装程序
提供的方法安静的等待)。在这里与大家分享。
1.
下载官网最新
安装程序
:下载下来的文件最好保存到一个目录下,因为Cygwin安装文件中众多,后面方便操作,比如我下载到了X:\Cygwin。
2.
运行,下一步,诶,看图吧:
<!-- EndFragment-->
没什么好说的,想看的就看,不想看的,就下一步。
<!-- EndFragment--><!-- EndFragment-->
选择"Install from Internate...",你不是说不用官方的方法下载吗?别问,后面你就会知道,下一步。
<!-- EndFragment-->
随便指定个安装目录先,但不要再设成X:\Cygwin,以免搞乱。其它默认,下一步。
<!-- EndFragment-->
真烦,又要指定,这回我们指成我们的下载目录,X:\Cygwin,下一步。
<!-- EndFragment-->
指定代理,我这里不需要,下一步。
<!-- EndFragment-->
嗯,去更新镜像外列表,等它完成
<!-- EndFragment-->
选一个镜像吧,随便选(我这里选:http://mirrors.xmission.com),下下步。
<!-- EndFragment-->
等待。。。
<!-- EndFragment-->
好,
到此打住了,我们去X:\Cygwin下找个文件,Setup.ini,这个文件一般会在X:\Cygwin的子目录下,其实就是以刚才选的镜像网为名的
目录(http%3a%2f%2fmirrors.xmission.com%2fcygwin)。找到后,点取消。
3.
梦里寻他千百渡,
其实就为找到Setup.ini
。其实还有方法找到Setup.ini你可以自己去想想,我这里就不说了。
4.
记住目录名,"http://mirrors.xmission.com/cygwin"
5.
下载我提供的项目“CygwinStorm”(Java),用eclipse打开,然后把刚才那个Setup.ini拷贝到项目根目录,覆盖原来的Setup.ini。
6.
打开项目里的org.cygwin.CygwinStorm,改如下一处:
urlPath
=
"http://www.cygwin.cn/pub/"
;
为
urlPath = "http://mirrors.xmission.com/cygwin"
;
运行。
7.
刷
新项目,打开“result.log”,如果没什么错误的话,一切OK。打开“install.log”,看到了吧,这些是Cygwin安装文件在镜像服
务器上的路径,快用下载工具批量下载吧。顺便提醒一句,如果你是用讯雷下载的话,讯雷的一次批量添加上限是201条,还有默认讯雷不监控.bz2为后缀的
文件。好了我把文件下载到,
“X:\Download\Cygwin”,记住
。
8.
全都下载完后,是不是就可以安装了,别急,还有最后一步,改
isExtract
=
true
;
downloadPath
=
"X:/Downloads/cygwin/2.573.2.2/"
;
为
isExtract =
false
;
downloadPath = "X:\Download\Cygwin"
;
运行。
9.
好了,打开项目目录下的release目录。是不是所有的文件都在这里面了,用Cygwin
安装程序
安装吧。出于安全我没有删除原下载目录下的文件,所以记得
删除“
X:\Download\Cygwin
”
。
至此,你已经有了一份Cygwin安装文件,保存好,待以后安装时候用吧。
以下,是java源文件,只为方便,没有经过太多的设计。
package org.cygwin;
import java.io.*;
/** *//**
* @author Aaron
* @since JDK 1.6.0
*
*/
public class CygwinStorm ...{
protected static boolean isExtract = true;
protected static String urlPath = "http://www.cygwin.cn/pub/";//$NON-NLS-1$
protected static String destPath = "./";//$NON-NLS-1$
protected static String downloadPath = "X:/Downloads/cygwin/2.573.2.2/"; //$NON-NLS-1$
/**//*
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws IOException ...{
String key0 = "["; //$NON-NLS-1$
String key1 = "install:"; //$NON-NLS-1$
String key2 = "source:"; //$NON-NLS-1$
File input = new File("./setup.ini"); //$NON-NLS-1$
BufferedReader reader = new BufferedReader(new FileReader(input));
BufferedWriter writer1 = null;
BufferedWriter writer2 = null;
BufferedWriter writer3 = null;
if (isExtract) ...{
File install = new File("./install.log"); //$NON-NLS-1$
File source = new File("./source.log"); //$NON-NLS-1$
writer1 = new BufferedWriter(new FileWriter(install));
writer2 = new BufferedWriter(new FileWriter(source));
}
File result = new File("./result.log"); //$NON-NLS-1$
writer3 = new BufferedWriter(new FileWriter(result));
String line = null;
int count = 0;
while ((line = reader.readLine()) != null) ...{
if (line.startsWith(key0) && !line.startsWith("[curr]")) ...{ //$NON-NLS-1$
count = 1;
}
switch (count) ...{
case 0 : ...{
if (line.startsWith(key1)) ...{
line = extract(line, writer3);
makeDir(line, writer3);
storeURL(line, writer1);
} else if (line.startsWith(key2)) ...{
line = extract(line, writer3);
makeDir(line, writer3);
storeURL(line, writer2);
}
break;
}
case 1 :
case 2 :
case 3 :
count++;
break;
case 4 :
count = 0;
break;
}
}
reader.close();
if (isExtract) ...{
writer1.close();
writer2.close();
}
writer3.write("Job completed!"); //$NON-NLS-1$
writer3.close();
}
protected static String extract(String line, BufferedWriter bw) throws IOException ...{
String key3 = ".bz2";//$NON-NLS-1$
String key4 = "release";//$NON-NLS-1$
String key5 = " ";//$NON-NLS-1$
int beginIndex = line.indexOf(key4);
int endIndex = line.indexOf(key5, beginIndex);
if (line.contains(key3))
return line.substring(beginIndex, endIndex);
bw.newLine();
bw.newLine();
bw.newLine();
bw.write("[extract exception]:" + line); //$NON-NLS-1$
bw.newLine();
bw.newLine();
bw.newLine();
return line;
}
protected static void storeURL(String line, BufferedWriter bw) throws IOException ...{
if (bw != null) ...{
String str = urlPath + line;
bw.write(str);
bw.newLine();
}
}
protected static void makeDir(String line, BufferedWriter bw) throws IOException ...{
String str = destPath + line;
File file = new File(str);
File dir = file.getParentFile();
if (!dir.exists()) ...{
dir.mkdirs();
// bw.write("[make dir]:" + dir); //$NON-NLS-1$
// bw.newLine();
}
if (!file.exists())
moveFile(file, bw);
}
protected static void moveFile(File file, BufferedWriter bw) throws IOException ...{
String oldPath = downloadPath + file.getName();
String newPath = file.getAbsolutePath();
copyFile(oldPath, newPath);
if (file.exists()) ...{
bw.write("[move file]:" + oldPath + "[to]:" + newPath); //$NON-NLS-1$ //$NON-NLS-2$
bw.newLine();
}
}
protected static void copyFile(String oldPath, String newPath) ...{
try ...{
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPath);
if (oldfile.exists()) ...{
InputStream inStream = new FileInputStream(oldPath);
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1444];
while ((byteread = inStream.read(buffer)) != -1) ...{
bytesum += byteread;
fs.write(buffer, 0, byteread);
}
inStream.close();
}
} catch (Exception e) ...{
System.out.println("Copy file occur error." + oldPath); //$NON-NLS-1$
e.printStackTrace();
}
}
}
...
分享到:
相关推荐
接下来,我们将详细讨论如何在Windows上下载和安装Cygwin。 首先,我们需要访问Cygwin的官方网站(https://www.cygwin.com/)下载安装程序。在网站上,你会看到一个名为“Setup.exe”的可执行文件,这是Cygwin的...
- 打开虚拟光驱软件,选择“加载ISO文件”,找到已下载的Cygwin离线安装包(ISO文件),将其加载到虚拟光驱中。 4. **执行安装:** - 在虚拟光驱中双击“setup-x86.exe”或“setup-x86_64.exe”(取决于操作系统...
cygwin 下载
这个是目前最新版本的cygwin安装程序。cygwin 是一个运行在windows下的一个linux模拟环境。
标题"cygwin-1.7.20-1本地下载"指的是一个特定版本的Cygwin——1.7.20-1,该版本可能由于某种原因在官方源上无法正常下载,因此提供了一个本地备份的下载选项。 Cygwin的主要功能是通过提供一个兼容层,允许Linux...
2. **设置镜像源**: 在安装过程中,选择合适的下载镜像源,以提高下载速度和稳定性。 3. **选择安装包**: 通过安装程序,可以选择要安装的Cygwin组件。根据需求,可以安装开发工具、实用工具、库等。 4. **安装...
1. **下载安装包**: 首先,你需要访问Cygwin官方网站下载最新的安装包。官方下载地址是`https://cygwin.com/install.html`。确保选择适合你操作系统的版本(32位或64位)。 2. **运行安装向导**: 下载完成后,双击...
**Cygwin详解** Cygwin是一款强大的开源软件工具,它为Windows操作系统提供了一个类Unix的环境,使得用户能够在Windows平台上模拟Linux或Unix的操作环境。这个名称来源于“Cyg”代表Windows下的“Cygwin32”库,而...
1. **下载离线安装包**:首先,你需要在有网络的环境中下载 Cygwin 的离线安装包,文件名为 `cygwin-v2.6.0-x86`。 2. **准备目标机器**:将下载好的离线安装包拷贝到需要离线安装的电脑上,确保该机器符合 x86 ...
"cygwin64安装包" 指的是Cygwin的64位版本的安装程序。Cygwin是一个在Windows操作系统上模拟Linux环境的开源工具集,它提供了大量的开源软件和命令行工具,使得开发者能够在Windows环境下进行类似于Linux的操作。 *...
在线下载,安装cygwin,,最新版的。。。如果是教育网,建议选择下载网址为.edu.cn的,,速度很快,,个人亲身经历
联网自动下载 2.917 cygwin64 最新cygwin64 net release setup program 联网自动下载 2.917 cygwin64 最新cygwin64 net release setup program 联网自动下载 2.917 cygwin64 最新cygwin64 net release setup program...
Cygwin是一个强大的工具,它为Windows平台提供了一个类UNIX的环境,使得用户可以在Windows上运行许多GNU/Linux和Unix的命令行工具、应用程序和服务。在Hadoop生态系统中,Cygwin有时被用作一个桥梁,使得开发者能够...
1. 下载并运行"Cygwin1.7.17-1"压缩包中的`setup.exe`,按照向导选择需要安装的软件包。 2. 安装完成后,可以从开始菜单启动Cygwin的Bash shell。 3. 在shell中,可以使用`apt-cyg`(可选)进行软件包的更新和安装。...
cygwin-x86-64安装包
### Cygwin获取Root权限详解 #### 背景与需求 Cygwin是一个在Windows平台上模拟类Unix环境的强大工具,它提供了大量的GNU和开源工具,使得开发人员可以在Windows上像在Linux环境下那样进行开发工作。然而,在某些...