我在尝试安装Readline。
(该系统是18.3,Lubuntu17.10也是如此)。
$ zef install Readline安装过程开始,但稍后使用下列消息中止:
===> Searching for: Readline
===> Searching for missing dependencies: LibraryCheck
===> Testing: LibraryCheck:ver<0.0.6>:auth<github:jonathanstowe>
===> Testing [OK] for LibraryCheck:ver<0.0.6>:auth<github:jonathanstowe>
===> Testing: Readline:ver<0.0.2>:auth<github:drforr>
# Failed test 'initialize'
# at t/02-base.t line 10
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'macro-dumper lives'
# at t/02-base.t line 18
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Looks like you failed 1 test of 1
# Failed test 'dumpers'
# at t/02-base.t line 13
# Failed test 'set-prompt lives'
# at t/02-base.t line 27
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'expand-prompt lives'
# at t/02-base.t line 29
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'on-new-line-with-prompt lives'
# at t/02-base.t line 31
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'save-prompt lives'
# at t/02-base.t line 33
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'restore-prompt lives'
# at t/02-base.t line 35
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Looks like you failed 5 tests of 5
# Failed test 'prompt'
# at t/02-base.t line 24
# Failed test 'tilde-expand lives'
# at t/02-base.t line 46
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'tilde-expand-word lives'
# at t/02-base.t line 48
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Looks like you failed 2 tests of 2
# Failed test 'tilde'
# at t/02-base.t line 39
# Failed test 'prep-terminal lives'
# at t/02-base.t line 58
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'deprep-terminal lives'
# at t/02-base.t line 60
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'reset-terminal'
# at t/02-base.t line 62
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Looks like you failed 3 tests of 3
# Failed test 'terminal'
# at t/02-base.t line 54
# Failed test 'reset-line-state lives'
# at t/02-base.t line 70
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Looks like you failed 1 test of 1
# Failed test 'state'
# at t/02-base.t line 68
# Failed test 'free-undo-list lives'
# at t/02-base.t line 81
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'do-undo lives'
# at t/02-base.t line 83
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'begin-undo-group lives'
# at t/02-base.t line 85
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'end-undo-group lives'
# at t/02-base.t line 87
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Looks like you failed 4 tests of 4
# Failed test 'undo'
# at t/02-base.t line 80
# Failed test 'funmap-names lives'
# at t/02-base.t line 99
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Looks like you failed 1 test of 1
# Failed test 'funmap'
# at t/02-base.t line 91
# Failed test 'set-screen-size'
# at t/02-base.t line 106
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'reset-screen-size lives'
# at t/02-base.t line 110
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Looks like you failed 2 tests of 2
# Failed test 'screen'
# at t/02-base.t line 103
# Failed test 'insert-text lives'
# at t/02-base.t line 118
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'delete-text lives'
# at t/02-base.t line 120
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'kill-text lives'
# at t/02-base.t line 122
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'copy-text lives'
# at t/02-base.t line 124
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Looks like you failed 4 tests of 4
# Failed test 'text'
# at t/02-base.t line 114
# Failed test 'make-bare-keymap lives'
# at t/02-base.t line 132
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'copy-keymap lives'
# at t/02-base.t line 134
# Type check failed in binding to parameter '$map'; expected Readline::Keymap but got Any (Any)
# Failed test 'make-keymap lives'
# at t/02-base.t line 136
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'discard-keymap lives'
# at t/02-base.t line 138
# Type check failed in binding to parameter '$map'; expected Readline::Keymap but got Any (Any)
# Failed test 'get-keymap-by-name lives'
# at t/02-base.t line 145
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'get-keymap lives'
# at t/02-base.t line 147
# Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
# Failed test 'get-keymap-name lives'
# at t/02-base.t line 149
# Type check failed in binding to parameter '$map'; expected Readline::Keymap but got Any (Any)
# Failed test 'set-keymap lives'
# at t/02-base.t line 151
# Type check failed in binding to parameter '$map'; expected Readline::Keymap but got Any (Any)
# Looks like you failed 8 tests of 8
# Failed test 'keymap'
# at t/02-base.t line 128
Cannot locate native library 'libreadline.so': libreadline.so: cannot open shared object file: No such file or directory
in method setup at /opt/rakudo-pkg/share/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) line 289
in method CALL-ME at /opt/rakudo-pkg/share/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) line 576
in method make-bare-keymap at /home/evb/.zef/store/perl6-readline.git/e2cf431a87c36d420a3f2737b2cbc160efeb9233/lib/Readline.pm (Readline) line 1040
in sub at t/02-base.t line 162
in sub subtest at /opt/rakudo-pkg/share/perl6/sources/C712FE6969F786C9380D643DF17E85D06868219E (Test) line 411
in sub at t/02-base.t line 161
in sub subtest at /opt/rakudo-pkg/share/perl6/sources/C712FE6969F786C9380D643DF17E85D06868219E (Test) line 411
in block <unit> at t/02-base.t line 155
===> Testing [FAIL]: Readline:ver<0.0.2>:auth<github:drforr>
Aborting due to test failure: Readline:ver<0.0.2>:auth<github:drforr> (use --force-test to override)
in code at /home/evb/.perl6/sources/0061125F96D1E60B6E3B0001A4CB4D4188DF4869 (Zef::Client) line 375
in method test at /home/evb/.perl6/sources/0061125F96D1E60B6E3B0001A4CB4D4188DF4869 (Zef::Client) line 353
in code at /home/evb/.perl6/sources/0061125F96D1E60B6E3B0001A4CB4D4188DF4869 (Zef::Client) line 530
in sub at /home/evb/.perl6/sources/0061125F96D1E60B6E3B0001A4CB4D4188DF4869 (Zef::Client) line 527
in method install at /home/evb/.perl6/sources/0061125F96D1E60B6E3B0001A4CB4D4188DF4869 (Zef::Client) line 633
in sub MAIN at /home/evb/.perl6/sources/C360CEB3AF792C33F65155FA82FDB7AB4467EC82 (Zef::CLI) line 152
in block <unit> at bin/zef line 3locate libreadline.so提供以下输出:
/lib/x86_64-linux-gnu/libreadline.so.5
/lib/x86_64-linux-gnu/libreadline.so.5.2
/lib/x86_64-linux-gnu/libreadline.so.6
/lib/x86_64-linux-gnu/libreadline.so.6.3发布于 2018-01-03 13:15:35
许多发行版,包括debian/ubuntu和朋友,鼓励在打包之间进行一定的分离,在debian.org包装文档中提供更多信息。
特别是,它们鼓励为某些版本(如.so.1)分发共享库,这些版本是与“非版本”.so分离的其他包的依赖项,后者更典型地用于“开发”(在以-dev结尾的分发包中)。
来自上述文档:
请注意,开发包应该包含一个没有版本号的相关共享库的符号链接。例如:
/usr/lib/x86_64-linux-gnu/libfoo.so -> libfoo.so.1
对于readline,该链接位于libreadline-dev包中,它可以安装在mint/ubuntu/debian类型的系统上,如:sudo apt-get install libreadline-dev
Perl 6 NativeCall文档也讨论了这一点:
如果您编写本机(‘foo’),NativeCall将在类似Unix的系统( OS上的libfoo.dynlib,win32上的foo.dll )下搜索libfoo.so。在大多数现代系统中,它将要求您或模块的用户安装开发包,因为建议始终向共享库提供API/ABI版本,因此libfoo.so结束时通常是一个只由开发包提供的符号链接。 为了避免这种情况,本机特性允许您指定API/ABI版本。它可以是一个完整的版本,也可以只是其中的一部分。(尝试坚持主要版本,一些BSD代码不关心次要。)
它看起来像Readline 不指定特定的API/ABI版本。。(也许应该这样?)
因为它没有,所以它将查找不版本的共享库(普通.so)。
发布于 2018-05-10 19:57:04
在@drforr有时间整理版本之前,我创建了一个临时分叉,它可以很好地安装在Ubuntu18.04和所有的发行版上,使用li威libreadline 7。
要安装模块:
$ zef install https://github.com/nxadm/perl6-readline.git如果您想自己修补这个问题(1行补丁),可以按照我对一个相关问题的评论中的说明进行。
https://stackoverflow.com/questions/48066536
复制相似问题