8

使用 rakubrew 升级 rakudo 版本时,更改版本非常容易,但我想知道是否可以将 raku 模块从旧版本导入到新版本。doign zef 自动安装:

更新:

rakubrew build 2020.10

但是之后:

❯ raku
Welcome to ™ v2020.10.
Implementing the ™ programming language v6.d.
Built on MoarVM version 2020.10.

You may want to `zef install Readline` or `zef install Linenoise` or use rlwrap for a line editor

To exit type 'exit' or '^D'

所以我需要安装我目前使用的所有模块:

rakubrew build-zef zef install Sparrow6 zef install Linenoise

因此存在任何文件 .zef 或 .rakubrew 或检查以自动维护此模块的东西

4

2 回答 2

8

您可以使用 获取已安装模块的列表zef list --installed。请注意,您可能想忽略share/perl6repo,因为其中CORE包含的模块特定于 rakudo 的每个版本。

见:https ://github.com/ugexe/zef#list-from

列表 [*@from]

列出已知的可用发行版

$ zef --已安装列表

===> 通过 /home/nickl/.rakubrew/moar-master/install/share/perl6/site 找到

CSV::Parser:ver<0.1.2>:auth<github:tony-o>

Zef:auth<github:ugexe>

===> 通过 /home/nickl/.rakubrew/moar-master/install/share/perl6 找到

核心:ver<6.c>:auth<perl>

或者,您可以使用以下单行来获取列表:

$ raku -e 'say $*REPO.repo-chain.grep(CompUnit::Repository::Installation).map(*.installed.Slip).grep(*.defined).map({ CompUnit::Repository::Distribution.new($_).Str }).join(" ")'

Text::Table::Simple:ver<0.0.7>:auth<github:ugexe>:api<> CSV::Parser:ver<0.1.2>:auth<github:tony-o>:api<> CORE:ver<6.d>:auth<perl>:api<>

# $*REPO.repo-chain.grep(CompUnit::Repository::Installation) # Get only repos for installed raku modules
# .map(*.installed.Slip)                                     # Get a list of installed modules for this repo, and Slip it into the outer singular results list
# .grep(*.defined)                                           # Some repos will have had no modules, so remove these undefined entries
# .map({ CompUnit::Repository::Distribution.new($_).Str })   # Use CompUnit::Repository::Distribution to get at the normalized identifier
# .join(" ")                                                 # Join the results together

一旦您选择了一种创建需要安装的列表的方法,您就可以将该列表传递给zef(尽管您的 shell 可能要求您在命令行中明确引用传入的名称)

于 2020-10-29T14:29:41.693 回答
0

rakubrew 在不同的目录中安装不同的 Raku 版本$HOME/.rakubrew/versions/moar-*

所以每个 Raku 版本都有自己独立的Installation存储库 ( site, vendor, ...)。

而且因为默认情况下zef将发行版安装到siterepo,我认为。所以模块在多个版本下不可用。

但是,由于 Raku 使用home Installationrepo ( #inst/home/user-name/.raku) 并且它存在于其中,repo-chain因此您可以将希望在所有版本上可用的模块安装到homerepo ( ~/.raku)。use(模块将在新Raku版本中首次预编译)。

请注意,我没有对此进行测试,zef但我默认使用Pakkuwhich installs to homerepo,并且我安装的模块可用于我的 Linux 机器上home的所有版本。rakubrew Raku

于 2020-11-02T19:38:59.210 回答