#2 Cygwin 下的时区问题

2023-02-24

Cygwin 下执行一个 Python 脚本,其中 datetime.now() 获取到的时间居然是 UTF 时间。
执行 date 命令也是如此。

执行 tzselect,三次分别选 Asia,China,Beijing Time,然后就好了。

命令中有提示:如果要永久有效,需要在 ~/.profile 中加入 TZ='Asia/Shanghai'

关键是,TZ 其实有配置:

export | grep TZ
declare -x TZ="Asia/Shanghai"

#1 Cygwin 下安装软件的两种方式

2013-12-15

Cygwin 是一款能在 Windows 平台上运行的类 UNIX 模拟环境的开发工具。

通过 setup.exe

重新运行一遍 setup.exe,通过搜索找到需要安装的包,勾选就行了;

使用 apt-cyg

cwgwin 默认安装了 svn,可以通过 svn 命令下载:

svn --force export https://apt-cyg.googlecode.com/svn/trunk/ /bin/
chmod +x /bin/apt-cyg

或者:

wget https://apt-cyg.googlecode.com/svn/trunk/apt-cyg -P /bin

网上都说要 “chmod +x /bin/apt-cyg”,但是用 ls 查看的结果发现已经是可执行的了。

里面默认使用的安装源是 ftp://mirror.mcs.anl.gov,改成网易安装源:

apt-cyg -m https://mirrors.163.com/cygwin

先查看一下帮助:

先更新一下库的相关情况:apt-cyg update,竟然失败,报了 404。

查看网易的安装源,再比对刚才 update 的地址,发现原来网易安装源下面还有“x86”,“x86_64”这类架构,所以就把重新设置安装源:

apt-cyg -m https://mirrors.163.com/cygwin/x86

总算成功的 update 了,注意到安装目录下多出来了一个 setup 目录,有一个 setup.ini 文件。

随便试着安装一个 httping 试一下,结果失败了,一看下载路径中出现了两个 /x86。

找了一会儿原因,原来是因为 apt-cyg 是通过 setup.ini 中的路径下载软件,所以只好试着把里面所有的 x86/release 都替换成 release,然后通过 apt-cyg 的 -u 参数来禁止每次安装时都更新 setup.ini 文件,果然是有效的。

为了防止每次都需要加一个参数,况且总是将 apt-cyg 输成 apt-get,干脆可以设置别名:alias apt-get="apt-cyg -u"。

用了一段时间之后,发现这不是最佳方案,网友提供的方法才是问题的根源:

apt-cyg 其实是一个 bash 文件,可以直接在其中找出症结,就是每次更新都是通过 wget 命令实现,搜索 "wget -N $mirror/setup" 可以找到两行:

wget -N $mirror/setup.bz2
wget -N $mirror/setup.ini

可以将其中的 $mirror 后面接上 /x86 或者 /x86_64。

我想,一定有一个什么变量对应着这个架构目录名称,setup.ini 中有一个 arch,于是我把 $mirror 替换成 $mirror/$arch 但是还是报错(https://mirrors.163.com/cygwin//setup.bz2),应该是 arch 变量不存在所致。

我并不会弄 bash,这个问题只能留着以后解决了。

上海交大的安装源应该不会存在路径的问题,因为下面没有分 CPU 架构目录:

https://ftp.sjtu.edu.cn/cygwin/