2

图片描述

live with scope

上一篇谈到用Vagrant管理虚拟机, 但总需要一个ssh工具登录虚拟机. 目前, 微软官方并不提供ssh(似乎官方的ssh已经在开发日程上了), 你需要安装. 你或者安装一些工具, 会自带ssh程序, 如git for Windows, 只是程序并不在系统path中, 需要自己添加以方便命令行使用. 或者你安装ssh客户端, 如putty, xshell. 其中推荐xshell, 功能强大, 提供密钥的生成和管理, 会话创建和管理. 又或者安装Cygwin.

这里假设你只是通过ssh到虚拟机来开发Linux程序, 在xshellCygwin之间, 我个人推荐Cygwin. 两个原因: 1, xshellssh前提供的原生shellWindows的虚拟DOS, 你可能会在登录前后变换shell命令. 2, xshell在有主题配色时, 登录虚拟机并使用tmux命令时, 会在面板间串色. A面板使用Vim, B面板使用Bash, 色彩总是互相影响. 这个问题非常恼火, 但多方查询没找到解决方法. 但Cygwin也有不满意的地方, 其使用的mintty功能太羸弱, 连基本的多标签都不支持.

Cygwin

Cygwin提供了一个软件层, 用于Linux系统APIWindows系统API的翻译, 能提供最接近原生Linux的体验. 不过, 因为增加了一层翻译, 也导致当安装软件过多时, 运行较大软件时, 会相当慢. 虽然, 你可以通过Cygwin安装KDEGnome桌面, X11框架, 但强烈不推荐.

在官网下载setup-x86_64.exe, 运行, 在下载点选择时推荐163的, 速度很快. 在程序包选择时, 建议除了默认外, 只安装极少量你必须的包, 毕竟你主要的开发环境在虚拟机上. 提供ssh工具和vim编辑器是默认安装的.

Cygwin本身提供gcc的程序包, 但如果你一定需要的话, 会发现它有三个版本, gcc, cygwin-gcc, mingw-gcc. 它们有一点区别, gcc编译的程序只能在Cygwin环境下运行, mingw-gcc编译的程序可以在Windows环境下运行, cygwin-gcc编译的程序需要cygwin.dll库才能在Windows下运行(印象中是这么个区别, 建议别趟这个坑).

安装好Cygwin后, 如上一篇所述, cd到项目目录, vagrant up开启虚拟机, vagrant ssh登录虚拟机. Ctrl-D退出虚拟机, vagrant halt关闭虚拟机.

apt-cyg

一个Cygwin的包管理工具,可使用命令行安装需要的程序包。工具主页是https://github.com/transcode-open/apt-cyg.

默认情况下, 当你想安装新的程序包, 运行之前下载的setup-x86_64.exe, 在包选择界面选择, 再下载安装. 非常非常难以理解, 一个模拟Linux环境的工具, 安装程序时却不能在自身环境中完成. 于是, 有这么个工具.

就使用体验来看, 从各个方面都不要期望它和apt-get同等级好用。它安装时自动安装依赖包,但删除包时则没有处理无依赖的包。

安装

lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin

常用命令:

  • 安装包:apt-cyg install pkgname

  • 移除包:apt-cyg remove pkgname

  • 更新包缓存:apt-cyg update

  • 下载包:apt-cyg download pkgname

  • 显示包信息:apt-cyg show pkgname

  • 生产包依赖的树:apt-cyg depends pkgname

  • 生成依赖包的树:apt-cyg rdepends pkgname

  • 列出本地包:apt-cyg list [regexp]

  • 列出所有包:apt-cyg listall [regexp]

  • 显示指定类的所有包:apt-cyg category [Base|Devel|Ruby...]

  • 搜索包含指定文件的本地包:apt-cyg search filepath

  • 搜索包含指定文件的所有包:apt-cyg searchall filepath

  • 指定源镜像:apt-cyg mirror [url | http://mirrors.163.com/cygwin/]

  • 指定包下载路径:apt-cyg cache [dirpath]

制作portable版Cygwin

如果你有多台机器, 每次都要重复安装一遍Cygwin, 特别是每次都要选择相同的程序包, 是比较痛苦的. 因此, 确保安装好后, 包括你需要的各种软件, 将其制作成便携版, 可随处解压使用才是解决之道.

本地机器:

  • 压缩打包安装目录

  • 导出注册表:reg export HKLM\SOFTWARE\Cygwin abc.reg

另一台机器:

  • 解压缩安装目录

  • 修改注册表相关根目录

  • 导入注册表:reg import abc.reg

卸载Cygwin

如何完整删除电脑上的Cygwin, 是的, 总有这种需要.

  • 删除下载包目录

  • 停止服务: cygrunsrv -L, cygrunsrv -S, cygrunsrv -R

  • 删除安装目录

  • 删除注册表: reg delete HKLM\SOFTWARE\Cygwin /f, reg delete HKCU\SOFTWARE\Cygwin /f

  • 删除环境变量: PATH, CYGWIN

特权命令

WindowsUAC权限控制在某些时候还是比较烦人的. 你可能需要运行一个特权命令, 而在图标上右击选择以管理员身份运行一个特权版的Cygwin总感觉很Low, 且不同的工作目录要来回切换也麻烦. 但cygwin没有root用户也没有sudo这样的提权工具, 多方查找后, 这里可以近似实现一个.

新建脚本sudo,并添加到PATH路径中:

#!/usr/bin/bash
cygstart --action=runas "$@"

如果需要运行特权命令,会弹出一个新的特权cygwin窗口,运行命令后退出. 虽然, 感觉也不怎么样好.

载入中...