Изначально я хотел собрать в current, но в процессе сборки получил следующее:
Код: Выделить всё
# github.com/lxc/lxd/shared/idmap
dist/src/github.com/lxc/lxd/shared/idmap/shift_linux.go:131:40: identifier "_Ctype_acl_type_t" may conflict with identifiers generated by cgo
# gopkg.in/lxc/go-lxc.v2
dist/src/gopkg.in/lxc/go-lxc.v2/container.go:843:12: identifier "_Ctype_char" may conflict with identifiers generated by cgo
Код: Выделить всё
lxc-2.0.11_fad08f383-x86_64-5
google-go-lang-1.13.10-x86_64-1ponce
По данной проблеме единственное что мне удалось найти это вот это сообщение. LTS: unable to build with go 1.12 #5529
В нем указаны версии 1.12 и 3.0, но у меня подобная проблема и на версиях выше.
Мне опять же подсказали что при подобной проблеме требуется патч, но пока не понятно где мне его взять.
Т.к версии lxd собираются одинаковые, то я решил что это проблема свежих версий lxc в current и в 14.2 таких не будет.
В 14.2 версия lxc,go такие:
Код: Выделить всё
lxc-2.0.9_d3a03247-x86_64-1_slack14.2
google-go-lang-1.13.10-x86_64-1_SBo
Код: Выделить всё
ist/src/github.com/CanonicalLtd/go-sqlite3/sqlite3.go:139:2: cannot find package "context" in any of:
/usr/src/context (from $GOROOT)
/tmp/SBo/lxd-3.0.1/dist/src/context (from $GOPATH)
dist/src/github.com/stretchr/testify/assert/assertions.go:19:2: cannot find package "github.com/davecgh/go-spew/spew" in any of:
/usr/src/github.com/davecgh/go-spew/spew (from $GOROOT)
/tmp/SBo/lxd-3.0.1/dist/src/github.com/davecgh/go-spew/spew (from $GOPATH)
dist/src/github.com/gorilla/mux/context_gorilla.go:8:2: cannot find package "github.com/gorilla/context" in any of:
/usr/src/github.com/gorilla/context (from $GOROOT)
/tmp/SBo/lxd-3.0.1/dist/src/github.com/gorilla/context (from $GOPATH)
dist/src/github.com/stretchr/testify/assert/assertions.go:20:2: cannot find package "github.com/pmezard/go-difflib/difflib" in any of:
/usr/src/github.com/pmezard/go-difflib/difflib (from $GOROOT)
/tmp/SBo/lxd-3.0.1/dist/src/github.com/pmezard/go-difflib/difflib (from $GOPATH)
dist/src/github.com/cpuguy83/go-md2man/md2man/md2man.go:4:2: cannot find package "github.com/russross/blackfriday" in any of:
/usr/src/github.com/russross/blackfriday (from $GOROOT)
/tmp/SBo/lxd-3.0.1/dist/src/github.com/russross/blackfriday (from $GOPATH)
dist/src/golang.org/x/crypto/ssh/terminal/util.go:20:2: C source files not allowed when not using cgo: gccgo_c.c
Код: Выделить всё
env |grep GOROOT
GOROOT=/usr/lib64/go1.13.10/go
При проверке что с переменными в слакбилде, при добавлении в него:
Код: Выделить всё
echo $GOROOT
echo $GOPATH
exit 1
Код: Выделить всё
/tmp/SBo/lxd-3.0.1/dist
Если запустить, не из под X, от root sbopkg, и проверить наличие переменных, то отображается обе, но при этом получаю по-прежнему ошибки о не найденых файлах.
Так же мне было предложено следующее:
В результате чего я снова получил информацию о том, что не найдены пакеты. Поискав в интернете похожие проблемы, я наткнулся на вариант проделать следующее:Hephaestus писал: ↑21.01.2021 08:19В командной строке делаем следующее:
0. Переходим в /tmp/
cd /tmp/
1.Копируем тарбол с исходниками, например, в /tmp/
cp /var/cache/sbopkg/lxd-3.0.1.tar.gz /tmp/
2. Распаковываем тарбол.
tar xvf lxd-3.0.1.tar.gz
3. Создаем временный каталог.
Например /tmp/00.
mkdir /tmp/00 (это будет наш PKG)
4. Устанавливаем переменную PKG
export PKG=/tmp/00
5. Устанавливаем переменную PREFIX
export PREFIX=/opt/lxd
6. Создаем bin (с учетом установленных переменных)
mkdir -p $PKG/$PREFIX/bin
7. Устанавливаем GOPATH (путь, куда распаковали исходники, подкаталог dist)
export GOPATH=/tmp/lxd-3.0.1/dist
8. Переходим в каталог с исходниками
cd /tmp/lxd-3.0.1
9. Запускаем команду сборки и на всякий случай смотрим код завершения
go build -o $PKG$PREFIX/bin/lxd github.com/lxc/lxd/lxd
echo $?
То есть это ровно те действия, которые выполняются в слакбилде,
с поправкой на TMP, PKG и явное указание PRGNAM-$VERSION.
Код: Выделить всё
cd $GOPATH
go get -u github.com/*то что он не может найти*
Код: Выделить всё
go build -o $PKG$PREFIX/bin/lxd github.com/lxc/lxd/lxd
dist/src/golang.org/x/crypto/ssh/terminal/util.go:20:2: C source files not allowed when not using cgo: gccgo_c.c
Хотелось бы разобраться что же не так, и как собрать lxd. Тяжеловато наверно будет понять эту тему тем, кто не пользуется Slackware, поэтому прошу прощения, не знаю как описать проще.
Удивляет еще немного что у мейнтейнера репозитория ponce есть настройки lxc контейнера под slackware, но по факту lxd не собирается, как-будто никто контейнерами не пользуется.