Where to get precompiled incusd for alpine (6.14 non stable?0

I was trying to compile the current version for alpine, as they only ship the older stable version. I was wondering if I could get a working binary for incusd? I see the others, but not incusd, the compile fials with all kinds of terrible errors:

/usr/lib/go/pkg/tool/linux_amd64/link: running cc failed: exit status 1
/usr/bin/cc -m64 -Wl,--build-id=0x0245bfca064ed01d380972b3431c1074e96ab6c2 -o $WORK/b716/exe/a.out -Wl,--export-dynamic-symbol=_cgo_panic -Wl,--export-dynamic-symbol=_cgo_topofstack -Wl,--export-dynamic-symbol=authorizerTrampoline -Wl,--export-dynamic-symbol=callbackTrampoline -Wl,--export-dynamic-symbol=commitHookTrampoline -Wl,--export-dynamic-symbol=compareTrampoline -Wl,--export-dynamic-symbol=connectWithDial -Wl,--export-dynamic-symbol=crosscall2 -Wl,--export-dynamic-symbol=doneTrampoline -Wl,--export-dynamic-symbol=preUpdateHookTrampoline -Wl,--export-dynamic-symbol=rollbackHookTrampoline -Wl,--export-dynamic-symbol=stepTrampoline -Wl,--export-dynamic-symbol=updateHookTrampoline -Wl,--compress-debug-sections=zlib /tmp/go-link-626990169/go.o /tmp/go-link-626990169/000000.o /tmp/go-link-626990169/000001.o /tmp/go-link-626990169/000002.o /tmp/go-link-626990169/000003.o /tmp/go-link-626990169/000004.o /tmp/go-link-626990169/000005.o /tmp/go-link-626990169/000006.o /tmp/go-link-626990169/000007.o /tmp/go-link-626990169/000008.o /tmp/go-link-626990169/000009.o /tmp/go-link-626990169/000010.o /tmp/go-link-626990169/000011.o /tmp/go-link-626990169/000012.o /tmp/go-link-626990169/000013.o /tmp/go-link-626990169/000014.o /tmp/go-link-626990169/000015.o /tmp/go-link-626990169/000016.o /tmp/go-link-626990169/000017.o /tmp/go-link-626990169/000018.o /tmp/go-link-626990169/000019.o /tmp/go-link-626990169/000020.o /tmp/go-link-626990169/000021.o /tmp/go-link-626990169/000022.o /tmp/go-link-626990169/000023.o /tmp/go-link-626990169/000024.o /tmp/go-link-626990169/000025.o /tmp/go-link-626990169/000026.o /tmp/go-link-626990169/000027.o /tmp/go-link-626990169/000028.o /tmp/go-link-626990169/000029.o /tmp/go-link-626990169/000030.o /tmp/go-link-626990169/000031.o /tmp/go-link-626990169/000032.o /tmp/go-link-626990169/000033.o /tmp/go-link-626990169/000034.o /tmp/go-link-626990169/000035.o /tmp/go-link-626990169/000036.o /tmp/go-link-626990169/000037.o /tmp/go-link-626990169/000038.o /tmp/go-link-626990169/000039.o /tmp/go-link-626990169/000040.o /tmp/go-link-626990169/000041.o /tmp/go-link-626990169/000042.o /tmp/go-link-626990169/000043.o /tmp/go-link-626990169/000044.o /tmp/go-link-626990169/000045.o /tmp/go-link-626990169/000046.o /tmp/go-link-626990169/000047.o /tmp/go-link-626990169/000048.o /tmp/go-link-626990169/000049.o /tmp/go-link-626990169/000050.o /tmp/go-link-626990169/000051.o /tmp/go-link-626990169/000052.o /tmp/go-link-626990169/000053.o /tmp/go-link-626990169/000054.o /tmp/go-link-626990169/000055.o /tmp/go-link-626990169/000056.o /tmp/go-link-626990169/000057.o /tmp/go-link-626990169/000058.o /tmp/go-link-626990169/000059.o /tmp/go-link-626990169/000060.o /tmp/go-link-626990169/000061.o /tmp/go-link-626990169/000062.o /tmp/go-link-626990169/000063.o /tmp/go-link-626990169/000064.o /tmp/go-link-626990169/000065.o /tmp/go-link-626990169/000066.o /tmp/go-link-626990169/000067.o /tmp/go-link-626990169/000068.o /tmp/go-link-626990169/000069.o /tmp/go-link-626990169/000070.o /tmp/go-link-626990169/000071.o /tmp/go-link-626990169/000072.o /tmp/go-link-626990169/000073.o /tmp/go-link-626990169/000074.o /tmp/go-link-626990169/000075.o /tmp/go-link-626990169/000076.o /tmp/go-link-626990169/000077.o /tmp/go-link-626990169/000078.o /tmp/go-link-626990169/000079.o /tmp/go-link-626990169/000080.o /tmp/go-link-626990169/000081.o /tmp/go-link-626990169/000082.o /tmp/go-link-626990169/000083.o /tmp/go-link-626990169/000084.o /tmp/go-link-626990169/000085.o /tmp/go-link-626990169/000086.o /tmp/go-link-626990169/000087.o /tmp/go-link-626990169/000088.o -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -llxc -lutil -lpthread -ldl -lcap -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -lresolv -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -lacl -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -llxc -lutil -lpthread -ldl -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -lutil -lpthread -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -lsqlite3 -ldl -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -lpthread -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -ludev -ludev -ludev -ludev -ludev -ludev -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -lcowsql -lsqlite3 -L/root/go/deps/raft/.libs -L/root/go/deps/cowsql/.libs/ -no-pie
/usr/lib/gcc/x86_64-alpine-linux-musl/14.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/go-link-626990169/000088.o: in function `_cgo_21c16d71b0a4_Cfunc_bind_textdomain_codeset':
gettext.cgo2.c:(.text+0x79): undefined reference to `libintl_bind_textdomain_codeset'
/usr/lib/gcc/x86_64-alpine-linux-musl/14.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/go-link-626990169/000088.o: in function `_cgo_21c16d71b0a4_Cfunc_bindtextdomain':
gettext.cgo2.c:(.text+0xd0): undefined reference to `libintl_bindtextdomain'
/usr/lib/gcc/x86_64-alpine-linux-musl/14.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/go-link-626990169/000088.o: in function `_cgo_21c16d71b0a4_Cfunc_dcgettext':
gettext.cgo2.c:(.text+0x12e): undefined reference to `libintl_dcgettext'
/usr/lib/gcc/x86_64-alpine-linux-musl/14.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/go-link-626990169/000088.o: in function `_cgo_21c16d71b0a4_Cfunc_dcngettext':
gettext.cgo2.c:(.text+0x19c): undefined reference to `libintl_dcngettext'
/usr/lib/gcc/x86_64-alpine-linux-musl/14.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/go-link-626990169/000088.o: in function `_cgo_21c16d71b0a4_Cfunc_dgettext':
gettext.cgo2.c:(.text+0x1f3): undefined reference to `libintl_dgettext'
/usr/lib/gcc/x86_64-alpine-linux-musl/14.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/go-link-626990169/000088.o: in function `_cgo_21c16d71b0a4_Cfunc_dngettext':
gettext.cgo2.c:(.text+0x257): undefined reference to `libintl_dngettext'
/usr/lib/gcc/x86_64-alpine-linux-musl/14.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/go-link-626990169/000088.o: in function `_cgo_21c16d71b0a4_Cfunc_gettext':
gettext.cgo2.c:(.text+0x2c9): undefined reference to `libintl_gettext'
/usr/lib/gcc/x86_64-alpine-linux-musl/14.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/go-link-626990169/000088.o: in function `_cgo_21c16d71b0a4_Cfunc_ngettext':
gettext.cgo2.c:(.text+0x328): undefined reference to `libintl_ngettext'
/usr/lib/gcc/x86_64-alpine-linux-musl/14.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/go-link-626990169/000088.o: in function `_cgo_21c16d71b0a4_Cfunc_textdomain':
gettext.cgo2.c:(.text+0x3c9): undefined reference to `libintl_textdomain'
collect2: error: ld returned 1 exit status

Running alpine 3.22 followed compile directions.

This is an easy one. You are missing the library for gettext, the internationalization library for GNU/Linux software. The problem is while linking the final binary, which means it happens at the final stage of generating the binary incusd. I do not know what’s the library package called in Alpine.
Incus is written in Go, and uses this library to access gettext, GitHub - gosexy/gettext: Golang (Go) bindings for GNU's gettext (http://www.gnu.org/software/gettext/) and during linking, it tries to find the library.

You may elect to disable it altogether (if possible) using an appropriate build flag. Or find and install the appropriate library.

Of course you can always check the build logs at https://images.linuxcontainers.org/ for Alpine to see how it’s built.

There’s no need to compile (unless you just want to) since current Incus is available in the edge branch of the community repository.

2 Likes

Is there any downside of running the ‘non stable’ version vs. the incus-feature 6.0 vs 6.14 ?

The 6.0 line is the stable version and receives only bugfixes for a duration of several years. If the Incus features that you need can be found in the stable version, then you are expected to stay on the stable version. A new stable version appears every two years and the next one (Incus 7.0) is coming in April 2026. If you are on Incus 6.0, you are still supported for an extra 3 years (total 5 years until you have to upgrade to a new stable version; Incus 6.0 was released in April 2024). Bugfixes includes both typical bugs and also bugs that are security issues. After 2026/04, Incus 6.0 will receive fixes for security bugs only.

Whereas the 6.14+ line receives a new release every month. There are new features that appear, and if there’s a bug in this new release, there will be a fix quite quickly. The thing is that when you get on the 6.14+ line, you are expected to upgrade when those new releases appear. Suppose you have been using an older development version of Incus at version 6.7, if you get stuck there, you need to upgrade (sequentially?) to get unstuck from that old feature release.

In newer versions of Incus there might be changes to the database schema. You are likely not able to downgrade your Incus version if in between there is a change in this database schema. However, in most upgrade cases, there is code in Incus to upgrade the database schema when you upgrade the Incus version.

Therefore, if you decide to stick to the 6.0 stable line (max 5 years support), you can upgrade at your leisure to the 7.0 stable line when it appears.

However, if you switch to the feature line, you are expected to upgrade when new feature releases appear. If you want to switch from the feature line to the stable line, you can do so upon the release of the next new stable line. That is, if you are on 6.14 now, you will keep upgrading every month until version 6.23 (March 2026), and then you need to pay attention to switch to the new stable 7.0 version and stay there. That is, you get off the feature line and stick to the stable line.

More on these at Support - Incus documentation

2 Likes