简单回答:你需要这个包裹
libmysqlclient20
(我将文档请求添加到类似的DBIish问题中)。Debian 9(目前稳定)使用的是比Ubuntu 18.04(目前稳定)和Debian不稳定更旧的版本。它还引用了mariadb,而不是mysql。
选择
libmariadbclient18
在基于Debian Stable的图像上创建一个带有mysql名称的链接(见下文)
。
关于Debian测试/不稳定和最新衍生产品:
$ sudo apt-get install libmysqlclient20
$ dpkg -L libmysqlclient20
/.
/usr
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20.3.9
/usr/share
/usr/share/doc
/usr/share/doc/libmysqlclient20
/usr/share/doc/libmysqlclient20/NEWS.Debian.gz
/usr/share/doc/libmysqlclient20/changelog.Debian.gz
/usr/share/doc/libmysqlclient20/copyright
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20
关于Debian 9及其衍生产品:
$ dpkg -L libmariadbclient18
/.
/usr
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libmariadbclient.so.18.0.0
/usr/lib/x86_64-linux-gnu/mariadb18
/usr/lib/x86_64-linux-gnu/mariadb18/plugin
/usr/lib/x86_64-linux-gnu/mariadb18/plugin/client_ed25519.so
/usr/lib/x86_64-linux-gnu/mariadb18/plugin/dialog.so
/usr/lib/x86_64-linux-gnu/mariadb18/plugin/mysql_clear_password.so
/usr/share
/usr/share/doc
/usr/share/doc/libmariadbclient18
/usr/share/doc/libmariadbclient18/changelog.Debian.gz
/usr/share/doc/libmariadbclient18/copyright
/usr/lib/x86_64-linux-gnu/libmariadbclient.so.18
创建链接
:
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libmariadbclient.so.18 /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
为了说明这一点,我为这个场合创建了一个Ubuntu 18.04容器*:
docker run -ti --rm --entrypoint=bash rakudo/ubuntu-amd64-18.04
以及缩写命令和输出:
# apt-get install -y libmysqlclient20 build-essential
# zef install DBIish
# perl6 -e 'use DBDish::mysql; DBDish::mysql.connect()'
Cannot look up attributes in a DBDish::mysql type object
[...]
错误是因为我没有为connect传递正确的参数,因为我没有运行db。重要的是没有。因此文件丢失。
*:我将其上载到Docker Hub,正常运行将使您在REPL中恢复正常:
$ docker run -ti --rm rakudo/ubuntu-amd64-18.04
To exit type 'exit' or '^D'
>
(我在调试时没有使用星图,但这并不重要,因为这是一个更普遍的问题。)