Cygwin使用
转载:http://w.gdu.me/wiki/cygwin/index.html
Cygwin使用
Update: 2013-01-04
常用软件安装
- 安装Cygwin时,应安装上:wget, tar, gawk, bzip2, nc, xz, openssh
安装apt-cyg
- 修改x86/x86_64源、xz压缩包支持的apt-cyg:apt-cyg
#wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg wget http://w.gdu.me/wiki/files/shell/apt-cyg chmod +x apt-cyg mv apt-cyg /usr/local/bin/ apt-cyg --help cygcheck --help # 修改软件源 apt-cyg --mirror http://mirrors.163.com/cygwin # ftp://mirror.mcs.anl.gov/pub/cygwin # http://mirrors.163.com/cygwin # ftp://ftp.ges.redhat.com/private/releng/cygwin-1.8
- 201308后Cygwin版本变更,需修改apt-cyg(使用上面已修改过的版本即可)
- 软件源路径变更
- 2013-080-08后Cygwin分为x86、x86_64两个安装包,源路径也改不同路径(x86、x86_64),因此apt-cyg下载setup.bz2和setup.ini时发生404错误。
vim /usr/loccal/bin/apt-cyg # 将: wget -N $mirror/setup.bz2 wget -N $mirror/setup.ini # 改为: wget -N $mirror/x86/setup.bz2 wget -N $mirror/x86/setup.ini # 或: wget -N $mirror/x86_64/setup.bz2 wget -N $mirror/x86_64/setup.ini
- 2013-080-08后Cygwin分为x86、x86_64两个安装包,源路径也改不同路径(x86、x86_64),因此apt-cyg下载setup.bz2和setup.ini时发生404错误。
- 添加xz压缩包支持
diff apt-cyg apt-cyg.bak 353,358c353 < echo $file | grep ".xz$" >/dev/null 2>&1 < if [ "$?" = "0" ];then < cat $file | xz -d | tar > "/etc/setup/$pkg.lst" xvf - -C / < else < cat $file | bunzip2 | tar > "/etc/setup/$pkg.lst" xvf - -C / < fi --- > cat $file | bunzip2 | tar > "/etc/setup/$pkg.lst" xvf - -C /
- 软件源路径变更
安装常用工具
# apt-cyg install man cygwin-doc
apt-cyg install vim screen wget subversion openssh pwgen gzip bzip2 curl rsync bash-completion \
lftp nc tree p7zip connect-proxy util-linux bind-utils inetutils
安装python环境
apt-cyg install python python-crypto
- 安装easy_install
- 参考:http://atbrox.com/2009/09/21/how-to-get-pipvirtualenvfabric-working-on-cygwin/
wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg sh setuptools-0.6c11-py2.6.egg easy_install pip pip install moin
- 参考:http://atbrox.com/2009/09/21/how-to-get-pipvirtualenvfabric-working-on-cygwin/
常用工具设置
Cygwin终端
- ~/.minttyrc
BoldAsFont=no Font=YaHei Consolas hybrid FontHeight=12 #BackgroundColour=0,43,53 BackgroundColour=11,22,33 ForegroundColour=191,191,191 FontSmoothing=full
- 颜色、字体选择参数
背景颜色:(RGB)0,40,51;或11,22,33(就是这个Wiki页面的背景色) 字体颜色:(RGB)31,148,150(较暗);或191,191,191 目录颜色:(RGB)255,128,128 压缩文件颜色:(RGB)128,128,0 字体:Consolas,Courier New,Fixedsys,YaHei Consolas hybrid
- YaHei Consolas hybrid.1.12字体下载:
bashrc
- ~/.bashrc
alias grep='grep --color' # show differences in colour alias egrep='egrep --color=auto' # show differences in colour alias fgrep='fgrep --color=auto' # show differences in colour alias ls='ls -hF --color=tty' # classify files in colour alias ll='ls -la' # long list alias la='ls -A' # all but . and .. alias l='ls -CF' # alias ssh="ssh -S none"
- ~/.bash_profile
PS1="[\w]$" #彩色的PS1会造成命令编辑时光标定位错误 #PS1="\e[0;32m[\u@\h \W]\$ \e[m"
screen设置
#
# ~/.screenrc
#
# 启动时不显示欢迎屏幕
startup_message off
# 定义screen的功能键为Ctrl-A。向终端输入Ctrl-A时应按 Ctrl-A a。
#escape ^Aa
# 屏幕缓冲区 1024 行。
defscrollback 1024
# 显示窗口列表
caption always "%-w%{= BW}%50>%n %t%{-}%+w%<"
# 按 Ctrl-A w 或 Ctrl-A Ctrl-W 显示窗口列表
bind w windowlist -b
#bind ^w windowlist -b
#在使用screen过程中,经常会遇到“闪屏”的问题,这是可以关掉的。
#快速关掉:也就是先输入CTRL + a,再输入CTRL + g。
#永久关闭:修改/etc/screenrc 加入
vbell off
~/.vimrc
- vim没有语法高亮,需加载基本设置
cd /usr/share/vim && cp vim74/vimrc_example.vim vimrc
- .vimrc设置
详见:vimrc
" ~/.vimrc
set mouse=c
set nobackup
" set paste
set fileformats=unix,dos,mac
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set encoding=utf-8
" set termencoding=cp936
let &termencoding = &encoding
language messages en_US.UTF-8
"language messages zh_CN.UTF-8
" colo murphy
" tab
set tabstop=4
set cindent shiftwidth=4
set autoindent shiftwidth=4
" TAB -> Space
set expandtab
~/.ssh/config
#ssh_config
#~/.ssh/config
IdentitiesOnly yes
ServerAliveInterval 60
GSSAPIAuthentication no
Host m*
Port 22
User root
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
#ProxyCommand connect-proxy -S 127.0.0.1:2223 %h %p
Host mNagios
Hostname 172.16.16.150
其他设置
SSH Server
- OS修改环境变量:path增加c:/cygwin/bin
- OS增加环境变量:CYGWIN=ntsec tty
- Cygwin安裝必要的套件:OpenSSH,cygrunsrv
- Change permissions and ownership on some files:
# 以下代码没测试过,慎用 cd /; chmod -R og-w . chmod og+w /tmp touch /var/log/sshd.log chown system:system /var/log/sshd.log /var/empty /etc/ssh_h* chmod 755 /var/empty
- Cygwin設定OpenSSH:
ssh-host-config
Should privilege separation be used? (yes/no) :yes Should this script create a local user 'sshd' on this machine? (yes/no) :yes Do you want to install sshd as service? (yes/no) :yes Default is "ntsec" . CYGWIN=ntsec tty
- 启动OpenSSH:net start sshd
cygrunsrv -S sshd
- 停止OpenSSH:net stop sshd
crontab
- 在Windows上安装系统服务 cron,开机即运行。
cygrunsrv -I cron -p /usr/sbin/cron -a -D
- 启动服务
cygrunsrv -S cron
nontsec
这在 Cygwin 下创建的文件,其他管理员不可写,是所谓的 ntsec 在起作用。通过 NTFS 的权限设置,模拟 UNIX 的权限。可以通过 CYGWIN 环境变量修改。如:
export CYGWIN="nontsec nosmbntsec"
中文乱码设置
**若存在中文问题才进行以下设置。**
- Rethat Cygwin安装后目录中文即正常,以下设置不一定需要。
- ~/.bashrc
export SVN_EDITOR=vim # Redhat Cygwin中未做以下设置,中文正常 alias ls='ls --color --show-control-chars' export LESSCHARSET=latin1 alias less='/bin/less -r' #export LC_ALL=zh_CN.UTF-8 #export LC_CTYPE=zh_CN.UTF-8 #export LANG=zh_CN.UTF-8 #export OUTPUT_CHARSET="GBK" #stty cs8 -istrip #stty pass8 export CYGWIN="nontsec nosmbntsec"
- ~/.inputrc
# Allow 8-bit input/output set meta-flag on set convert-meta off set input-meta on set output-meta on
技巧收集
- Howto get version info?
cygcheck -c cygwin
- 查看系统信息、软件包
cygcheck -h #帮助 cygcheck -s #sysinfo cygcheck -l #已安装包列表 cygcheck -c #列出并校验已安装的包 cygcheck -p vim #从cygwin.com源查询包
- 得到Windows格式的路径名?
cygpath -d -m "`pwd`"
- 给curl安装CA Certificates
curl http://curl.haxx.se/ca/cacert.pem > /usr/ssl/certs/ca-bundle.crt
- 同步Windows用户和组
mkpasswd -l > /etc/passwd mkgroup -l > /etc/group # 如果有Domain的话,需要加上-d domainname
- 设置Cygwin/mintty字体和大小
- 界面中设置:右键菜单->Options->Text,然后选择你喜欢的字体和大小。
- 如果没有你相要的字体,但Windows中有,可修改配置文件:
~/.minttyrc
,添加以下设置:BoldAsFont=no #Font=Courier New Font=YaHei Consolas hybrid FontHeight=12
- 给Cygwin添加more/col/whereis等命令:安装util-linux包:
apt-cyg install util-linux
- 给Cygwin添加telnet/ftp工具:
apt-cyg install inetutils
- 给Cygwin安装dig命令
- 安装
bind-utils
包:apt-cyg install bind-utils
- 检查系统中已设置好DNS:
ipconfig /all
- 安装
- Cygwin error:
-bash: fork: retry: Resource temporarily unavailable
- http://stackoverflow.com/questions/9300722/cygwin-error-bash-fork-retry-resource-temporarily-unavailable
- http://cygwin.wikia.com/wiki/Rebaseall
- 错误现象
-bash-4.1$ wc m1.txt 3 [main] bash 2216 child_info_fork::abort: data segment start: parent(0x26D000) != child(0x38D000) -bash: fork: retry: Resource temporarily unavailable 2013930 4027950 74968256 m1.txt
- 处理办法
rkosegi's Answer seems to be working for everyone (myself included). But, just so you don't have to follow the daisy chain of links: (assuming Cygwin is installed at C:\cygwin): 1.Open Task Manager and close any processes that look to be Cygwin related. 2.Open C:\Cygwin\bin in Windows Explorer 3.Verify that dash.exe, ash.exe, rebase.exe, and rebaseall exist in this folder - If any of them are missing, re-run Cygwin setup and select the dash, ash, and rebase packages 4.right-click your C:\Cygwin folder, uncheck Read-only (if its checked), and press OK. - When an error about not being able to switch some files comes up, select "Ignore All". Wait for this process to complete. 5.Browse to C:\Cygwin\bin in Windows Explorer 6.Right click dash.exe and click "Run as Administrator". A command Prompt should appear with nothing but a $ 7.Type /usr/bin/rebaseall -v, hit enter, and wait for the process to complete. - If you get errors about Cygwin processes running, try Step 1 again. If that still doesn't work, Restart your computer into safe mode and try these steps again. 8.Try opening Cygwin again. This process worked for me. I hope it works for you guys too. Source: http://cygwin.wikia.com/wiki/Rebaseall