我自己编译了busybox,并把它放到了我们的嵌入式linux中。但我有几个问题。
问题1:当我尝试使用诸如gzip之类的命令时,它输出"gzip: applet not found".While我检查了busybox的菜单配置,我确保我选择了"gzip“。
问题2:我曾经使用VIM,但是busybox只提供了一个链接VIM到VI的VI.So,但是当我输入vim并运行它时,它也显示"vim: applet not found“。
有人能帮我解决这个“找不到小应用程序”的问题吗?非常感谢。
PS:我把busybox的"applet“搞糊涂了,它是什么?就像java里的"applet“?
发布于 2018-01-05 09:57:23
问题1和2的答案是:必须首先设置PATH
变量,或者在启用FEATURE_PREFER_APPLETS
的情况下编译busybox。您可以使用以下命令设置PATH
变量:
$ export PATH=/bin:/sbin:/usr/bin:/usr/sbin
busybox小程序是一个小应用程序,通常在UNIX通用实用程序(在POSIX标准中定义)中找到。这些小程序被编译成一个可执行文件:busybox
。
发布于 2019-10-30 19:13:32
F.YI.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中,运行上面的脚本会出现blow错误:
standard_init_linux.go:211: exec user process caused "exec format error"
发布于 2021-03-13 21:40:30
尽管如@KEINOS指出的那样,这是一个与Java相关的问题,但这与缺少shebang符号有更多关系。当我在其中安装R包的时候,在尝试构建一个基于高山Linux的Docker镜像时,我遇到了这个问题。
我的偷工减料的解决方案是在映像中安装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
这将为所有R提供的脚本添加shebang符号。
即便如此,一些软件包的shell脚本也缺少shebang符号。我刚刚在其中一个文件中打开了一个PR来添加这个符号。
如果你尝试编译只是为了在基于x86的系统上运行,这个修复可能不会有什么不同,但如果你试图编译到任何其他架构,如arm/v6、arm/v7、arm/v8、ppc64le和s390x,你就会遇到这个问题。
https://stackoverflow.com/questions/19043700
复制相似问题