`

另类下载cygwin

阅读更多

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

    接下来,我们将详细讨论如何在Windows上下载和安装Cygwin。 首先,我们需要访问Cygwin的官方网站(https://www.cygwin.com/)下载安装程序。在网站上,你会看到一个名为“Setup.exe”的可执行文件,这是Cygwin的...

    cygwin离线安装包下载地址

    - 打开虚拟光驱软件,选择“加载ISO文件”,找到已下载的Cygwin离线安装包(ISO文件),将其加载到虚拟光驱中。 4. **执行安装:** - 在虚拟光驱中双击“setup-x86.exe”或“setup-x86_64.exe”(取决于操作系统...

    cygwin 下载

    cygwin 下载

    Cygwin 1.7.1(new)

    这个是目前最新版本的cygwin安装程序。cygwin 是一个运行在windows下的一个linux模拟环境。

    cygwin-1.7.20-1本地下载

    标题"cygwin-1.7.20-1本地下载"指的是一个特定版本的Cygwin——1.7.20-1,该版本可能由于某种原因在官方源上无法正常下载,因此提供了一个本地备份的下载选项。 Cygwin的主要功能是通过提供一个兼容层,允许Linux...

    cygwin setup-x86_64-2.874.zip

    2. **设置镜像源**: 在安装过程中,选择合适的下载镜像源,以提高下载速度和稳定性。 3. **选择安装包**: 通过安装程序,可以选择要安装的Cygwin组件。根据需求,可以安装开发工具、实用工具、库等。 4. **安装...

    cygwin 快速入门

    1. **下载安装包**: 首先,你需要访问Cygwin官方网站下载最新的安装包。官方下载地址是`https://cygwin.com/install.html`。确保选择适合你操作系统的版本(32位或64位)。 2. **运行安装向导**: 下载完成后,双击...

    Cygwin

    **Cygwin详解** Cygwin是一款强大的开源软件工具,它为Windows操作系统提供了一个类Unix的环境,使得用户能够在Windows平台上模拟Linux或Unix的操作环境。这个名称来源于“Cyg”代表Windows下的“Cygwin32”库,而...

    cygwin 离线安装

    1. **下载离线安装包**:首先,你需要在有网络的环境中下载 Cygwin 的离线安装包,文件名为 `cygwin-v2.6.0-x86`。 2. **准备目标机器**:将下载好的离线安装包拷贝到需要离线安装的电脑上,确保该机器符合 x86 ...

    cygwin64安装包

    "cygwin64安装包" 指的是Cygwin的64位版本的安装程序。Cygwin是一个在Windows操作系统上模拟Linux环境的开源工具集,它提供了大量的开源软件和命令行工具,使得开发者能够在Windows环境下进行类似于Linux的操作。 *...

    cygwin setup 最新版在线下载

    在线下载,安装cygwin,,最新版的。。。如果是教育网,建议选择下载网址为.edu.cn的,,速度很快,,个人亲身经历

    cygwin64 最新cygwin64 net release setup program 联网自动下载 2.917

    联网自动下载 2.917 cygwin64 最新cygwin64 net release setup program 联网自动下载 2.917 cygwin64 最新cygwin64 net release setup program 联网自动下载 2.917 cygwin64 最新cygwin64 net release setup program...

    最新版cygwin4hadoop,cygwin2.761

    Cygwin是一个强大的工具,它为Windows平台提供了一个类UNIX的环境,使得用户可以在Windows上运行许多GNU/Linux和Unix的命令行工具、应用程序和服务。在Hadoop生态系统中,Cygwin有时被用作一个桥梁,使得开发者能够...

    cygwin1.7.17-1.rar

    1. 下载并运行"Cygwin1.7.17-1"压缩包中的`setup.exe`,按照向导选择需要安装的软件包。 2. 安装完成后,可以从开始菜单启动Cygwin的Bash shell。 3. 在shell中,可以使用`apt-cyg`(可选)进行软件包的更新和安装。...

    cygwin-x86-64安装包

    cygwin-x86-64安装包

    cygwin之root权限

    ### Cygwin获取Root权限详解 #### 背景与需求 Cygwin是一个在Windows平台上模拟类Unix环境的强大工具,它提供了大量的GNU和开源工具,使得开发人员可以在Windows上像在Linux环境下那样进行开发工作。然而,在某些...

Global site tag (gtag.js) - Google Analytics