是否有一个命令dpkg-checkbuilddeps
可以安装列出的所有未满足的构建依赖项?
我尝试sed
输出并将其提供给apt-get install
,但它看起来很老套,并且由于某种原因在某些环境中不起作用。
sudo apt-get install --yes $(dpkg-checkbuilddeps | sed 's/([^)]*)//g' | sed 's/dpkg-checkbuilddeps:\serror:\sUnmet build dependencies://g')
有没有更好的办法?
答案1
我使用包装mk-build-deps
中的devscripts
(您还需要equivs
)。
mk-build-deps
将根据debian/control
控制文件中的所有构建依赖项构建一个包;然后可以使用安装该包apt
,这也将安装所有缺少的依赖项。
这种方法的优点是,卸载依赖包后,一旦完成它,还将识别任何也可以卸载的构建依赖项。
为了减少手动步骤,可以使用以下命令:
mk-build-deps --install --root-cmd sudo --remove
最终结果是安装了所有构建依赖项,但未安装新生成的构建依赖项包本身:它已安装 ( --install
) 及其所有依赖项,然后删除 ( --remove
),但依赖项保留在原处。
答案2
请尝试以下操作:
dpkg-checkbuilddeps 2>&1 | sed 's/dpkg-checkbuilddeps:\serror:\sUnmet build dependencies: //g' | sed 's/[\(][^)]*[\)] //g'
首先,dpkg-checkbuilddeps
将错误打印到stderr
not stdout
。所以需要重定向到stdout
使用管道。
您([^)]*)
在以下位置使用了正则表达式:
sed 's/([^)]*)//g'
但应该是:
sed 's/[\(][^)]*[\)]//g'
答案3
结合前面提到的两种方法对我有用:
sudo apt-get install \
--yes $(dpkg-checkbuilddeps 2>&1 | sed -e 's/dpkg-checkbuilddeps:\serror:\sUnmet build dependencies: //g' -e 's/[\(][^)]*[\)] //g')