在不添加GUI或来宾的情况下构建VirtualBox

在不添加GUI或来宾的情况下构建VirtualBox,virtualbox,headless,ubuntu-18.04,Virtualbox,Headless,Ubuntu 18.04,我正试图在Ubuntu服务器LTS 18.04 64位上构建VirtualBox 5.2.18。我希望构建它时不使用任何GUI组件,也不添加来宾,因为我希望避免安装任何不必要的依赖项。配置时,我使用以下选项: ./configure --build-headless --disable-qt --disable-alsa --disable-pulse --disable-opengl --disable-sdl-ttf --disable-libvpx --disable-docs 尽管有一

我正试图在Ubuntu服务器LTS 18.04 64位上构建VirtualBox 5.2.18。我希望构建它时不使用任何GUI组件,也不添加来宾,因为我希望避免安装任何不必要的依赖项。配置时,我使用以下选项:

./configure --build-headless --disable-qt --disable-alsa --disable-pulse --disable-opengl --disable-sdl-ttf --disable-libvpx --disable-docs
尽管有一个选项可以只构建来宾添加(--only Additions),但似乎没有一个选项可以通过
configure
跳过构建来宾添加。有没有办法跳过构建来宾添加,或者忽略与构建来宾添加相关的任何构建时错误?

我在中找到了一个解决方案,其中包含了更多有用的详细信息。通过将以下行添加到开发树根目录中的
LocalConfig.kmk
,可以在不添加GUI或来宾的情况下构建VirtualBox:

VBOX_WITHOUT_ADDITIONS = 1
VBOX_WITH_HEADLESS = 1
VBOX_WITH_VRDP=
VBOX_WITH_VRDP_VIDEO_CHANNEL=
VBOX_WITH_VRDP_AUTHMOD=
VBOX_WITH_VRDP_RDESKTOP=
VBOX_WITH_VBOXFB=
VBOX_WITH_KCHMVIEWER=
VBOX_WITH_TESTSUITE=
VBOX_WITH_TESTCASES=
VBOX_WITH_SHARED_FOLDERS=
VBOX_WITH_SHARED_CLIPBOARD=
VBOX_WITH_VNC = 
VBOX_X11_SEAMLESS_GUEST=
然后,可以通过在根文件夹中执行以下操作来构建VirtualBox:

./configure --build-headless --disable-qt --disable-alsa --disable-pulse --disable-opengl --disable-sdl-ttf --disable-libvpx --disable-docs
source env.sh
kmk
不清楚哪些选项是跳过来宾添加的构建所必需的(在
LocalConfig.kmk
或传递到
/configure
的选项中)

当执行
kmk packing
时,可能会出现以下错误消息:

kmk: *** No rule to make target `.../out/linux.amd64/release/bin/additions/VBoxGuestAdditions.iso', 
needed by `.../out/linux.amd64/release/obj/Installer/linux/archive/additions/VBoxGuestAdditions.iso'.  
Stop.
通过在
kmk打包之前执行
touch
命令,可以避免此错误(此修复程序来自):

touch
之前添加了
mkdir
命令,因为如果目录
out/linux.amd64/release/bin/additions/
不存在,
touch
可能会失败

安装
VirtualBox-*。运行
,可能会出现一些错误,但应该会完全成功。但是,如果尝试执行
VBoxManage
,可能会出现以下错误:

Could not find VirtualBox installation. Please reinstall.
这很可能是因为在安装文件夹中找不到可执行文件
VirtualBox
(通常是
/opt/VirtualBox
)。文件
VirtualBox
是未构建的GUI组件。我们可以通过编辑安装文件夹中的
VBox.sh
并更改行来绕过此错误

elif test -f "${MY_DIR}/VirtualBox" && test -x "${MY_DIR}/VirtualBox"; then

VirtualBox现在应该可以正常运行了

elif test -f "${MY_DIR}/VirtualBox" && test -x "${MY_DIR}/VirtualBox"; then
elif test -f "${MY_DIR}/VBoxHeadless" && test -x "${MY_DIR}/VBoxHeadless"; then