Missing lxc-to-lxd in snap lxd (ubuntu 20.04)

Hi

I have installed snap lxd instead of the lxd deb package. Because of that the lxd-tools package that contains “lxc-to-lxd” is not installed (or I cannot find it)

I can install the lxd-tool package, but then it will install the lxd deb package, which may conflict/duplicate the lxd snap package.

So where is the lxc-to-lxd package or how can I install it.

We have an issue open to add it to the snap, though it’s always a bit tricky because of some of the confinement.

Until then, you’ll want:

Thanks, but unfortunately the compilation failed:

WORK=/tmp/go-build240292368
gopkg.in/lxc/go-lxc.v2
mkdir -p $WORK/b235/
cd /home/dror/go/src/gopkg.in/lxc/go-lxc.v2
pkg-config --cflags – lxc

pkg-config --cflags – lxc

Package lxc was not found in the pkg-config search path.
Perhaps you should add the directory containing `lxc.pc’
to the PKG_CONFIG_PATH environment variable
No package ‘lxc’ found
pkg-config: exit status 1
github.com/canonical/go-dqlite/internal/bindings
mkdir -p $WORK/b220/
cd /home/dror/go/src/github.com/canonical/go-dqlite/internal/bindings
CGO_LDFLAGS=‘“-g” “-O2” “-lsqlite3” “-lraft” “-lco” “-ldqlite”’ /snap/go/5646/pkg/tool/linux_amd64/cgo -objdir $WORK/b220/ -importpath github.com/canonical/go-dqlite/internal/bindings – -I $WORK/b220/ -g -O2 ./build.go ./server.go
github.com/lxc/lxd/shared/idmap
mkdir -p $WORK/b226/
cd /home/dror/go/src/github.com/lxc/lxd/shared/idmap
CGO_LDFLAGS=‘“-g” “-O2” “-lacl”’ /snap/go/5646/pkg/tool/linux_amd64/cgo -objdir $WORK/b226/ -importpath github.com/lxc/lxd/shared/idmap – -I $WORK/b226/ -g -O2 -std=gnu11 -Wvla -Werror -fvisibility=hidden -Winit-self -Wformat=2 -Wshadow -Wendif-labels -fasynchronous-unwind-tables -pipe --param=ssp-buffer-size=4 -g -Wunused -Werror=implicit-function-declaration -Werror=return-type -Wendif-labels -Werror=overflow -Wnested-externs -fexceptions ./cgo.go ./shift_linux.go

github.com/canonical/go-dqlite/internal/bindings

go/src/github.com/canonical/go-dqlite/internal/bindings/server.go:11:10: fatal error: dqlite.h: No such file or directory
11 | #include <dqlite.h>
| ^~~~~~~~~~
compilation terminated.

github.com/lxc/lxd/shared/idmap

go/src/github.com/lxc/lxd/shared/idmap/shift_linux.go:30:10: fatal error: sys/capability.h: No such file or directory
30 | #include <sys/capability.h>
| ^~~~~~~~~~~~~~~~~~
compilation terminated.

Also:

go install -v -x GitHub - canonical/go-dqlite: Go bindings for libdqlite

mkdir -p $WORK/b108/
cd /home/dror/go/src/github.com/canonical/go-dqlite/internal/bindings
CGO_LDFLAGS=‘“-g” “-O2” “-lsqlite3” “-lraft” “-lco” “-ldqlite”’ /snap/go/5646/pkg/tool/linux_amd64/cgo -objdir $WORK/b108/ -importpath github.com/canonical/go-dqlite/internal/bindings – -I $WORK/b108/ -g -O2 ./build.go ./server.go

github.com/canonical/go-dqlite/internal/bindings

…/…/go/src/github.com/canonical/go-dqlite/internal/bindings/server.go:11:10: fatal error: dqlite.h: No such file or directory
11 | #include <dqlite.h>
| ^~~~~~~~~~
compilation terminated.

lxd.lxc-to-lxd is now available in the snap

Thanks. The conversion was done, but the following entries in the lxc config items did not show up in the new lxd config. Do I need to add them manually?
non of the cgroup entries showed up and the lxc.mount.auto did not who up.

lxc.mount.auto=proc:rw sys:ro cgroup:ro
lxc.cgroup.devices.allow =
lxc.cgroup.devices.deny =
lxc.cgroup.devices.allow = c 254:0 rm
lxc.cgroup.devices.allow = c 10:200 rwm
lxc.cgroup.devices.allow = c 10:228 rwm
lxc.cgroup.devices.allow = c 10:232 rwm
lxc.cgroup.devices.allow = c 116:* rwm
lxc.cgroup.devices.allow = c 226:* rwm
lxc.cgroup.devices.allow = c 29:0 rwm
lxc.cgroup.devices.allow = c 5:0 rwm
lxc.cgroup.devices.allow = c 4:0 rwm
lxc.cgroup.devices.allow = c 4:1 rwm
lxc.cgroup.devices.allow = c 4:2 rwm
lxc.cgroup.devices.allow = c 4:3 rwm
lxc.cgroup.devices.allow = c 4:4 rwm
lxc.cgroup.devices.allow = c 4:5 rwm
lxc.cgroup.devices.allow = c 4:6 rwm
lxc.cgroup.devices.allow = c 4:7 rwm
lxc.cgroup.devices.allow = c 4:8 rwm
lxc.cgroup.devices.allow = c 4:9 rwm
lxc.cgroup.devices.allow = c 4:10 rwm
lxc.cgroup.devices.allow = c 13:* rwm
lxc.cgroup.devices.allow = c 44:226 rwm
lxc.cgroup.devices.allow = c 195:* rwm
lxc.cgroup.devices.allow = c 195:254 rwm
lxc.cgroup.devices.allow = c 195:255 rwm
lxc.cgroup.devices.allow = c 246:0 rwm
lxc.cgroup.devices.allow = c 241:0 rwm

my raw.lxc has the following only

config:
boot.autostart.delay: “14”
boot.autostart.priority: “7”
raw.lxc: |
lxc.apparmor.profile=unconfined
lxc.tty.max=2
lxc.pty.max=1024
security.privileged: “true”
…

Ah yeah, you should copy those across.

You could likely replace a bunch of those by unix-char devices instead though.