我有一个使用config.json
的软件包用于它使用的某些设置。我在本地保留包,而不是从CPAN安装它。我的问题是当我对config.json
进行更改时,程序包无法识别自配置文件缓存到其他地方后的更改,强制我运行zef install --force-install
或删除precomp。如何确保程序包始终识别配置文件的更新?
答案 0 :(得分:4)
使用zef
安装软件包时,它会将它们保存在文件系统中,但它们的名称会转换为sha1,类似于
/home/jmerelo/.rakudobrew/moar-2018.03/install/share/perl6/site/sources/81436475BD18D66BFD96BBCEE07CCCDC0F368879
zef
会跟踪它们,您可以使用zef locate
找到它们,例如:
zef locate lib/Zef/CLI.pm6
您可以从程序中运行该程序,例如:
sub MAIN( Str $file ) {
my $location = qqx/zef locate $file/;
my $sha1 = ($location ~~ /\s+ \=\> \s+ (.+)/);
say "$file → $sha1[0]";
}
将返回几乎相同,除了它将为您提供在命令行提供的文件的第一个位置:
lib/Zef/CLI.pm6 → /home/jmerelo/.rakudobrew/moar-2018.03/install/share/perl6/site/sources/81436475BD18D66BFD96BBCEE07CCCDC0F368879
您可能需要在config.json
目录(这是首选位置)中安装resources
文件,然后使用类似的东西。
那就是说,实际上安装一个你正在测试的模块并不是最好的策略。如果您还在测试内容,那么只要将其保存在您正在使用的目录中并使用perl6 -I<that directory>
或者use lib <that directory>
可能更好一些,情况可能会更好选项。您可以在发布或保留它时删除它,因为它只会在搜索路径中添加另一个目录,并且不会损害已发布的模块。