这里是模拟它的方法。
$ cat t1.rkt
#lang racket/base
(require gregor)
(display "hello")
我正在运行球拍6.12。但是Racket 7.2也是如此。
$ racket t1.rkt
explode-path: contract violation
expected: (or/c path-for-some-system? path-string?)
given: #f
context...:
/usr/share/racket/collects/racket/path.rkt:116:0: do-explode-path
/usr/share/racket/collects/racket/path.rkt:126:0: find-relative-path7
/home/me/.racket/6.12/pkgs/tzinfo/tzinfo/private/zoneinfo.rkt:118:2: for-loop
/home/me/.racket/6.12/pkgs/tzinfo/tzinfo/private/zoneinfo.rkt:108:0: read-tzids
/home/me/.racket/6.12/pkgs/tzinfo/tzinfo/private/zoneinfo.rkt:71:0: make-zoneinfo-source
/usr/share/racket/collects/racket/contract/private/arrow-val-first.rkt:388:18
/home/me/.racket/6.12/pkgs/tzinfo/tzinfo/main.rkt:63:0: system-tzid
/usr/share/racket/collects/racket/contract/private/arrow-val-first.rkt:388:18
/home/me/.racket/6.12/pkgs/gregor-lib/gregor/private/moment.rkt: [running body]
/home/me/.racket/6.12/pkgs/gregor-lib/gregor/private/generics.rkt: [traversing imports]
/home/me/.racket/6.12/pkgs/gregor-lib/gregor/private/clock.rkt: [traversing imports]
/home/me/.racket/6.12/pkgs/gregor-lib/gregor/main.rkt: [traversing imports]
/home/me/issue-gregor/t1.rkt: [traversing imports]
$ racket --version
Welcome to Racket v6.12.
如何返回到较旧的gregor版本?我使用raco pkg install gregor
将其安装了此文件,并安装了其所有依赖项。
答案 0 :(得分:1)
我是Gregor的作者。 (我通常不会在Stack Overflow上发布文章,甚至不使用它,但是John Clements引起了我的注意。)
这里有一个不幸的命名问题,因为tzdata
似乎是提供常规zoneinfo文件的Ubuntu软件包的名称,也是Racket package的名称,提供这些文件。
gregor
依赖于名为tzinfo
的软件包。 tzinfo
反过来有条件地取决于tzdata
(Racket,而不是Ubuntu)。具体来说,它仅取决于Windows系统上的tzdata
。这是因为我假设所有Unix系统都将具有zoneinfo文件。 (这几天从来没有发生过有人在没有Unix的情况下运行Unix的情况。)但是,肯定是tzinfo
(因此gregor
)无法工作,除非它可以找到zoneinfo文件。 / p>
也许我应该在显眼的警告下更新文档。我宁愿不要使tzinfo
无条件地依赖于tzdata
(同样是Racket),因为大多数Unix系统已经具有必要的文件了,而且文件可能不适当使得gregor
使用的版本不同于系统使用的版本。