我不想bash
在我的 yocto 图像中,但它包含在几个依赖项中。我能够摆脱其中的大部分,现在只剩下rpm
(我需要的)。
追踪它我发现只有两个脚本
#!/bin/bash
没有明显原因的 Shebang 。编写一个补丁bbappend
来修补这两个脚本的解释器行并RDEPEND
成功删除有效的bitbake
镜像,该镜像可以工作(包括 rpm 包安装)。
但它仍然让人感觉不舒服,因为有人可能有理由明确请求bash
脚本。 Shellcheck.net 有足够多的警告,但没有关于 POSIX 不兼容的警告。
bash
您能看出不以简单方式消除依赖的原因吗?
答案1
事实证明,最终还有更多的依赖项需要删除。我的最终补丁recipes-devtools/rpm/files/0001-remove-bash-dependency.patch
如下所示:
--- a/scripts/rpmdb_loadcvt
+++ b/scripts/rpmdb_loadcvt
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
ac=$#
cmd=`basename $0`
--- a/scripts/pythondeps.sh
+++ b/scripts/pythondeps.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
[ $# -ge 1 ] || {
cat > /dev/null
--- a/scripts/pkgconfigdeps.sh
+++ b/scripts/pkgconfigdeps.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
pkgconfig=/usr/bin/pkg-config
test -x $pkgconfig || {
--- a/scripts/mono-find-requires
+++ b/scripts/mono-find-requires
@@ -1,1 +1,1 @@
-#!/bin/bash
+#!/bin/sh
--- a/scripts/mono-find-provides
+++ b/scripts/mono-find-provides
@@ -1,1 +1,1 @@
-#!/bin/bash
+#!/bin/sh
--- a/scripts/check-rpaths-worker
+++ b/scripts/check-rpaths-worker
@@ -1,1 +1,1 @@
-#! /bin/bash
+#!/bin/sh
--- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#find-debuginfo.sh - automagically generate debug info and file list
#for inclusion in an rpm spec file.
#
--- a/scripts/find-lang.sh
+++ b/scripts/find-lang.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#findlang - automagically generate list of language specific files
#for inclusion in an rpm spec file.
#This does assume that the *.mo files are under .../locale/...
--- a/scripts/fontconfig.prov
+++ b/scripts/fontconfig.prov
@@ -1,1 +1,1 @@
-#!/bin/bash
+#!/bin/sh
--- a/scripts/check-prereqs
+++ b/scripts/check-prereqs
@@ -1,1 +1,1 @@
-#!/bin/bash
+#!/bin/sh
--- a/scripts/brp-python-bytecompile
+++ b/scripts/brp-python-bytecompile
@@ -1,1 +1,1 @@
-#!/bin/bash
+#!/bin/sh
只有依赖性检查似乎真正依赖于bash
功能,但无论如何,即使使用bash
.不进行依赖项检查即可安装。这对我来说没关系。
但后来我发现了一些其他脚本声称使用任何/bin/sh
,但充满了攻击性……叹