嵌入式linux中的busybox显示“找不到applet”

时间:2013-09-27 06:02:08

标签: linux embedded busybox ramdisk

我自己编译了busybox,并把它放在我们的嵌入式linux中。但我有一些问题。

问题1:当我尝试使用某些命令(如gzip)时,会打印“gzip:applet not found”。虽然我检查了busybox的menuconfig,但我确保选择了“gzip”。

问题2:我曾经使用VIM,但busybox只提供VI。所以我将VI链接到VI,但是当我输入vim并运行它时,它也会显示“vim:applet not found”。

任何人都可以帮我解决“applet not found”这个问题?非常感谢你。

PS:我对busybox的“applet”感到困惑,它是什么?像java中的“applet”一样?

3 个答案:

答案 0 :(得分:1)

问题1和问题2的答案是:您必须先设置PATH变量,或者在启用FEATURE_PREFER_APPLETS的情况下编译busybox。您可以使用以下内容设置PATH变量:

$ export PATH=/bin:/sbin:/usr/bin:/usr/sbin

busybox applet是一个小型应用程序,通常位于UNIX常用实用程序(在POSIX标准中定义)中。这个applet被编译成一个可执行文件:busybox

答案 1 :(得分:0)

[F.Y.I。] Shebang的错字给我造成了同样的applet not found错误。

$ # The '!' was forgotten in shebang
$ cat sample.sh
#/bin/sh

echo 'hello world'

$ ./sample.sh
sample.sh: applet not found

在docker-compose中,运行上述脚本会给我带来打击错误:

standard_init_linux.go:211: exec user process caused "exec format error"

答案 2 :(得分:0)

尽管这是一个与 Java 相关的问题,因为@KEINOS 指出这更多地与缺少的 shebang 符号有关。在尝试构建基于 Alpine Linux 的 Docker 映像时,我在其中安装了 R 包时遇到了这个问题。

我的 jerry-rigged 解决方案是在镜像中安装 R 然后运行 ​​Buildx 的 muiltarch 构建后添加以下脚本运行:

#!/bin/sh
for script in $(ls -p /usr/lib/R/bin/ | grep -v / )
do
    sed -i '1 i\#!/bin/bash\n#' "/usr/lib/R/bin/$script"
done

这会将 shebang 符号添加到所有 R 提供的脚本中。

即便如此,一些软件包的 shell 脚本也缺少 shebang 符号。我刚刚在其中一个中打开了 PR 以添加此符号。

如果您只是为了在基于 x86 的系统中运行而尝试编译,则此修复程序可能不会产生任何影响,但是如果您正在尝试编译为任何其他架构,例如 arm/v6、arm/v7、arm/ v8、ppc64le 和 s390x;你会遇到这个问题。