cygwin在windows8.1上的chmod无法修改权限

cygwin在windows8.1上的chmod无法修改权限

这几天安装了windows 8.1,在使用cygwin的时候发现了问题。

表现

在使用git clone一个项目时,cygwin告知 .ssh 的权限不正常:

$ git clone git@github.com:zrong/cocos2d-x-filters.git
Cloning into 'cocos2d-x-filters'...
Bad owner or permissions on /home/rong/.ssh/config
fatal: Could not read from remote repository.

Please make sure you have the correct access rights

查看一下权限,是这样的: 继续阅读cygwin在windows8.1上的chmod无法修改权限

git svn dcommit 提交失败,原因:assertion “svn_fspath__is_canonical(child_fspath)” faile

git svn dcommit 提交失败,原因:assertion “svn_fspath__is_canonical(child_fspath)” failed

在使用 git svn 作为客户端对一个 svn 库进行提交的时候出现了错误:

git svn dcommit
Committing to https://xx.xx.xx.xx/svn/xyz/trunk …
R CODING_STYLE.md => doc/CODING_STYLE.md
assertion “svn_fspathis_canonical(child_fspath)” failed: file “/usr/src/packages/subversion/subversion-1.8.5-1/src/subversion-1.8.5/subversion/libsvn_subr/dirent_uri.c”, line 2504, function: svn_fspathskip_ancestor
error: git-svn died of signal 6

错误发生在 cygwin 下,git 版本 1.7.9,svn 版本 1.8.5。

stackoverflow 上说,原因是 git 的重命名检测机制与 svn 发生了冲突。有两个解决方案:

  1. 把 svn 降级到 1.7.9,一劳永逸。
  2. 使用 git svn dcommit -C1 -l1 来提交。这样会关闭 git 的重命名检测机制,这次提交会丢失重命名操作,取而代之的是一次 remove 和 一次 add 操作,就和 svn 1.4 一样。

使用Eclipse+CDT开发Cocos2d-x(不用Visual Studio)

首先声明,这个尝试没有成功。我依然还是必须使用Visual Studio。

Cocos2d-x 中的项目,在Windows下默认使用Visual Studio作为开发工具。

但我并不喜欢Visual Studio,经过了一个月的折磨,用Visual Studio Express
2012做了两个小项目之后,我实在是无法习惯它,心里一直希望能用Eclipse+CDT来代替它。

花时间google了一下,发现此类文章几乎没有。中文社区应该是都认为VS很好用,极少有我这样的变态非要用Eclipse。搜到的文章大多数都是讲解如何基于Eclipse+CDT+cygwin/NDK来配置Android编译环境,而这类配置我已经写过一篇文章搞定了:

Cocos2d-x Windows 7配置备忘

我觉得唯一有点价值的是这一篇: Now compiles with the mingw compiler ,作者修改的代码应该已经合并进入cocos2d-x分支,但他并没有提供他所说的cmake代码,这导致我必须再去研究cmake。时间所限,我没有在这篇文章上纠结太久。

我是个惯于折腾的人,曾经放着Flash Builder不用,去折腾 Vim调用Ant编译swf并自动调试 ,也花了一些时间 修改cocos2d-x项目创建器,支持自定义项目路径 。虽然知道这次折腾肯定会浪费不少时间,但我还是义无反顾地开始了。 继续阅读使用Eclipse+CDT开发Cocos2d-x(不用Visual Studio)

在Cygwin下编译tmux(失败)

在Cygwin下编译tmux(失败)

tmux是GNU Screen的替代者,本文是我在Cygwin下编译tmux的失败经历,记录在案,方便以后重新尝试编译。
本文假设你已经在Cygwin下配置好了编译环境。

要了解tmux,可以看这篇文章:http://linuxtoy.org/archives/from-screen-to-tmux.html
要了解GNU Screen,可以看这两篇文章:

Cygwin的源中是包含GNU Screen的,但是没有tmux,在 Cygwin ports 中也没有。想要在Cygwin使用tmux,需要自行编译。

1. 安装libevent包

tmux编译需要依赖libevent包,但是Cygwin的官方源不包含这个包。不过,我们可以在 Cygwin Ports 找到她。

下面的代码使用apt-cyg安装libevent包。关于apt-cyg用法,可以看这里:Cygwin的包管理器:apt-cyg

apt-cyg install libevent-devel --mirror ftp://ftp.cygwinports.org/pub/cygwinports

如果你更喜欢源码编译安装,可以在这里下载libevent源码:http://libevent.org/

tar xzvf libevent-2.0.21-stable.tar.gz -C /usr/src
cd /usr/src/libevent-2.0.21
./configuare
make && make install

2. 安装ncurses包

tmux编译需要依赖ncurses包,Cygwin的官方源中就有这个包。

apt-cyg install libncurses-devel --mirror http://mirrors.163.com/cygwin

但是,这样安装的libncurses包,在编译tmux的时候,始终报错找不到 ncurses.h文件,因此我卸载了 ncurses 包,改用编译安装。

在这里下载ncurses源码:http://ftp.gnu.org/pub/gnu/ncurses/,我下载的是最新的5.9。

编译和安装的方式与 libevent 相同,这里不再重复。

3. 下载tmux源码

在这里下载tmux源码:http://tmux.sourceforge.net/,可能需要梯子,目前最新版本为1.7。

虽然上面解决了依赖问题,但编译过程中依然遇到了编译错误,无法解决。

就此打住,依然使用 GNU Screen

在Cygwin中编译Git

在Cygwin中编译Git

概述

我一直在Cygwin中以命令行的方式使用git。但是Cygwin源中的git版本比较老(v1.7.9),而自 1.7.10以来,git增加了许多新的特性,尤其是对中文用户特别有用的 使用UTF-8编码保存文件名 等等。为了使用这些新特性,我们只能自己编译Git。

如果希望了解我上面说的“对中文用户特别有用的特性”,可以看这篇文章:git乱码解决方案汇总

下载源码

在这里下载最新的Git源码,我下载的是 v1.8.1.4:

http://code.google.com/p/git-core/downloads/list

解压缩源码和手册: 继续阅读在Cygwin中编译Git

Cygwin,那些不知道在哪里的命令

这篇文章用来记录Cygwin默认安装中找不到的那些命令。不断更新。

whereis
移步这里:http://zengrong.net/post/1807.htm

clear
clear包含在 ncurses 包中,直接从默认源安装即可。
ncurses 是一个基于终端界面开发 类GUI应用程序 的库。
详细介绍
包中的所有程序

xgettext,msginit,msgfmt
这几个命令属于 gettext_devel
包,用于生成pot/po文件,以及编译po到mo格式。

aclocal
aclocal在 automake 包中,默认源中包含。

autoreconf
autoreconf在 autoconf 包中,默认源中包含。

telnet
安装 xinetdinetutils 包即可,默认源中包含。

cygwin技巧2则:whereis和updatedb

cygwin技巧2则:whereis和updatedb

使用 updatedb

在cygwin中使用 locate 命令的时候,它提示我数据库太旧需要更新,但执行 updatedb 时,却提示 Permission denied 导致更新总是不成功。

这种情况下,需要使用 --prunepaths 来限制不更新某些特权目录。

例如我就不处理C盘和 /proc

updatedb  --prunepaths='/proc /cygdrive/c'

获取 whereis

cygwin中没有包含 whereismore,要得到这些命令,可以安装 util-linux 包。

util-linux中包含的所有程序如下:

addpart, agetty, blockdev, cal, cfdisk, chfn, chkdupexe, chrt, chsh, col, colcrt, colrm, column, ctrlaltdel, cytune, ddate, delpart, display-services, dmesg, elvtune, fastboot, fasthalt, fdformat, fdisk, flock, fsck.cramfs, fsck.minix, getopt, halt, hexdump, hwclock, initctl, ionice, ipcrm, ipcs, isosize, kill, last, line, logger, login, look, losetup, mcookie, mesg, mkfs, mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more, mount, namei, need, newgrp, partx, pg, pivot_root, provide, ramsize, raw, rdev, readprofile, reboot, rename, renice, reset, rev, rootflags, script, scriptreplay, setsid, setterm, sfdisk, shutdown, simpleinit, swapoff, swapon, taskset, tailf, tunelp, ul, umount, vidmode, vipw, wall, whereis, and write

如果不喜欢cygwin的setup.exe工具,可以试试用 apt-cyg 来安装:

apt-cyg install util-linux

其他

使用Cygwin在Windows中以服务方式安装Lighttpd

使用Cygwin在Windows中以服务方式安装Lighttpd

缘起

自从前段时间对服务器进行了从Apache到Lighttp 的转换之后,服务器运行异常的稳定。Lighttpd占用内存非常小,配置文件也很简单,这让我萌生了把所有服务器都从 Apache 转到 Lighttpd 的想法。

但这毕竟是个浩大的工程,而且运行正稳定的服务器也不必这么折腾。于是先从我的本机开刀。

我的每台工作电脑都会安装 XAMPP 套件,主要是用于开发和共享,以及存放一些html格式的文档以方便浏览。

而现在XAMPP可以退休了。

系统需求

Lighttpd并没有官方的Windows版本,本文基于Cygwin 来安装 Lighttpd。

本文假设你了解Cygwin的基本用法和配置,了解如何使用Cygwin的setup来安装新的包。

如果你不喜欢setup.exe那个界面,可以试试 apt-cyg

安装cygserver

cygserver 是为Cygwin作为后台服务运行而设计的,默认安装Cygwin的时候并没有启动它。我们需要打开它,并将它作为Windows的标准服务来安装。 继续阅读使用Cygwin在Windows中以服务方式安装Lighttpd

使用Git、Git GUI和TortoiseGit

使用Git、Git GUI和TortoiseGit

Using git, git gui and tortoisegit

  • 2015-06-15更新:加入姊妹篇
  • 2015-01-28更新:Mac OS X 的 GUI 工具选择
  • 2013-11-05更新:加入从 putty 切换到 OpenSSH
  • 2012-12-30更新:在安装的时候选择TortoiseGit使用的SSH客户端
  • 2012-12-26更新:在TortoiseGit中使用SSH host

注意: 本文不讲解任何关于Git提交、合并等等使用细节和语法,只记录作者在使用Git相关工具中碰到的问题和选择的经验。本文只是个人意见的集中,不代表适合所有人。如果你是 “被惯坏了的那批”,请不要介意。:-)


姊妹篇:Git查看、删除、重命名远程分支和tag


1. 关于命令行

我一直建议在命令行中使用Git或者SVN。因为这样可能更加了解他们的工作方式,也不容易遗漏重要的问题和提醒。

在Windows习惯的驱使下,大多数人是不会看弹出的对话框中有什么信息的,一般都是直接关掉。但是,版本库给我们的提示信息都是非常重要的,有的是冲突,有的是提交失败,等等,这些都被略过了。

我碰到的关于版本库使用问题主要包括下面这些: 继续阅读使用Git、Git GUI和TortoiseGit