7C00.ME/houmu 2014-05-30

windows上安装cygwin

本以为在Windows上安装Cygwin没啥难度,没想到还是挺折腾人的。

首先是安装Cgywin。从官网上下载安装程序,双击执行即可。虽然“一路next”这种做法也能达到最终目的,但还是建议按照下面的提示进行配置。这样可以减少时间,避免可能的安装失败。

接着安装apt-cyg。为Cygwin环境安装新的软件,可以用安装程序。前几步和上面一样,而且 Root Directory 、 Local Package Directory 和 Download Site 应该已经自动设为了刚才安装Cygwin时设置的值了,直到 Select Packages 之前都可以直接next。然后在 Select Packages 这一步选择需要的新程序,然后等待Finish即可。这种做法多少有些麻烦,实际上有两种命令行工具可供选择,apt-cyg 和 cyg-apt 。这里介绍apt-cyg。

apt-cyg和Debian、Ubuntu系统的apt-get很像,通过执行类似apt-cyg install vim可以自动下载vim相关软件包和依赖项软件包并执行安装,一条命令就可以代替多次鼠标点击,也不用从Select Packages那个用户体验很差的界面中“挑出”想要的软件包,减少了出错的可能。apt-cyg安装步骤如下:(这里要求wget已经安装,见上文),打开Cygwin Terminal,执行下面的命令:

wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
sed -i 's|mirror=http://mirrors.kernel.org/sourceware/cygwin|mirror=http://mirrors.163.com/cygwin|g' apt-cyg
sed -i 's|cache=/var/cache|cache=/cygdrive/d/sandbox/cygwin/packages|g' apt-cyg
chmod u+x apt-cyg
mv apt-cyg /bin/apt-cyg

*说明:(1)sed 两步操作也可用文本编辑器完成; (2)http://mirror.163.com/cygwin 根据需要替换为自己的在安装cygwin时选择的 Download Site ; (3)/cygdrive/d/sandbox/cygwin/packages 根据需要替换为安装cygwin是选择的 Local Package Directory ,注意目录路径的格式,这里路径对应的Window写法是 D:\sandbox\cygwin\packages *

然后就可用apt-cyg安装需要的软件包了,比如apt-cyg install vimapt-cyg install git。在安装gcc时遇到问题,在弹出Installing gcc之后就停止了,很奇怪。查过Google以后才知道需要install的是gcc-core,即apt-cyg install gcc-core。更一般的做法是,先用apt-cyg searchall gcc,然后在返回的软件包列表中找到符合要求的软件包的完整名称,再执行apt-cyg install。这就没有apt-get那么聪明了,Ubuntu下apt-get install的软件包名如果没找到,会自动提示可能要找的正确的包名。

除此之外,一个(我以为的)最佳实践是修改Home目录。Home目录默认在Cygwin安装目录下,比如C:\Cygwin64\home\USERNAME。执行下面的命令可以修改Home目录:

cp /etc/passwd /etc/passwd.backup
mkpasswd -l -p /cygdrive/d/sandbox/cygwin/home > /etc/passwd

*说明:/cygdrive/d/sandbox/cygwin/home 根据自己的需要修改,注意路径的格式,这里的路径对应的Windows写法是 D:\sandbox\cygwin\home *

到此为止,安装工作告一段落。安装其他软件包,可能还会遇到莫名其妙的问题,以后再写出来。