我在 shell 脚本中完全是菜鸟我想要的是 shell 脚本,它确定当前安装的库/包的列表,如果没有用户许可不安装它们
我想要的是确定库/包当前是否安装在系统中
我知道aptitude search命令,但我正在寻找更好的解决方案
例如,我现在已经定义(在 shell 脚本中)检查 readline 库/包,我如何从 shell 脚本(我想创建)中知道当前是否安装了 readline 包。
任何想法或建议肯定会有所帮助
我想要的是确定库/包当前是否安装在系统中
dpkg -s
不需要root权限,会显示包状态详情。
示例外壳脚本:
#!/bin/sh
for P; do
dpkg -s "$P" >/dev/null 2>&1 && {
echo "$P is installed."
} || {
echo "$P is not installed."
}
done
用法是:
script.sh package1 package2 .... packageN
为了简单地进行测试,您似乎可以为您感兴趣的库 grep 诸如 ldconfig -p 之类的命令的输出。
或者,您可以提供一个与所需库链接的小型测试程序,尝试运行它,然后测试是否失败。
如果您尝试设置依赖项检查,正确的解决方案是创建一个虚拟包,Depends:
该包位于您需要安装的包上。有一个名为equivs的工具对此有所帮助。(然而,它被批评为“过度设计”;当然,如果您熟悉 Debian 软件包的格式,如果您的要求如此简单,则可能不需要单独的工具。)然后您只需安装此软件包并它将拉入指定为依赖项的包。
您仍然必须知道提供的库libreadline.so
是libreadline5-dev
. Debian 软件包搜索可以帮助您找到需要放入的软件包名称Depends:
你可能可以做你想做的事dpkg