Ubuntu Precise 12.04 中的 LXC 错误,找不到 apparmor,这在 11.10 中运行正常

Ubuntu Precise 12.04 中的 LXC 错误,找不到 apparmor,这在 11.10 中运行正常

我使用 12.04 时出现此错误。当我运行 时sudo lxc-execute -n foo -f lxc.example.conf ls,我得到

/usr/lib/lxc/lxc-init: error while loading shared libraries: libapparmor.so.1: cannot open shared object file: No such file or directory

知道如何解决这个问题吗?我已经安装了 libapparmor-dev,但仍然没有成功。

答案1

该库位于 libapparmor1 包中:

% dpkg -S /usr/lib/libapparmor.so.1
libapparmor1: /usr/lib/libapparmor.so.1

这实际上是 lxc-init 的依赖项,它位于 lxc 包中:

% dpkg -S /usr/lib/lxc/lxc-init
lxc: /usr/lib/lxc/lxc-init

% dpkg -s lxc | grep Depends
Depends: upstart-job, libapparmor1 (>= 2.6~devel), libc6 (>= 2.14), libcap2 (>= 2.10), apparmor, bridge-utils, dnsmasq-base, iptables, rsync

您的安装是否损坏?这可能会有所帮助:

apt-get update
apt-get install -f

答案2

经过一番尝试,我最终尝试将主机上的 libapparmor.so.1 复制到客户容器中,似乎成功了。所以问题实际上不在我试图运行 lxc-execute 的主机上。最后,对于我们的构建脚本,我现在将 libapparmor-dev 安装到容器的文件系统中:

chroot $JAIL /bin/sh -c "apt-get -yf install libapparmor-dev"

之后,我就可以在该容器上运行 lxc-execute。$JAIL 是它所在的目录。

为了进一步阅读,我发现了一篇关于为什么 apparmor 现在成为依赖项的帖子:http://s3hh.wordpress.com/2012/05/03/lxc-in-precise-and-beyond/

相关内容