我的包裹有问题apt
,我已经解决了。问题和解决方案在这里讨论:
Aptitude 说我的很多软件包需要删除......?
然而,在讨论这个问题时,我意识到我有一个辅助问题,apt
我想找到答案,这就是我发布这个当前问题的原因。
我不小心做了一些事情,导致超过 1,400 个“自动”软件包成为孤立的,它们被列为“不再使用”,并在aptitude
. 现在看来,造成这种情况的原因是因为它们最终都依赖于某个被错误删除的基础级包或元包。
如果是这种情况,是否有一个实用程序或过程可以用来将apt
包列表作为输入,并为整个包集(作为一个整体)生成依赖关系树?如果是这样,我可能能够识别出我不小心删除的这棵树顶部的软件包,然后我可以重新安装该软件包以解决我的问题。
换句话说,我正在寻找一些过程或实用程序,它会将包列表作为输入并生成与此类似的内容作为输出......
top-package
|--package-000
|-+package-001
| |--package-002
|-+package-003
| |--package-004
| |--package-005
| |-+package-006
| | |--package-007
| |--package-008
|--package-009
... etc. ...
Run Code Online (Sandbox Code Playgroud)
...package-NNN
我的输入包列表以及它们恰好是依赖项的任何其他包在哪里,并且top-package
是依赖项树的根。如果我的假设是正确的,即我的问题是由于意外删除了高级元包所致,那么top-package
将识别该已删除的包。然后我可以重新安装top-package
并大概解决我的问题。
需要明确的是,我想重复一下,我已经以不同的方式解决了我的具体问题(请参阅引用的讨论)。我在这里问这个不是为了解决这个特定问题,而是因为我想要某种像上面描述的依赖树列表工具,以帮助诊断和修复可能发生在未来。
非常感谢您提供任何参考或建议。
在 中bash
,我知道有几种方法可以检查给定变量是否已定义并包含值。但是,我想检查环境中是否存在给定变量,而不仅仅是局部变量。例如 ...
VAR1=value1 # local variable
export VAR2=value2 # environment variable
if [[ some_sort_of_test_for_env_var VAR1 ]]
then
echo VAR1 is in the environment
else
echo VAR1 is not in the environment
fi
if [[ some_sort_of_test_for_env_var VAR2 ]]
then
echo VAR2 is in the environment
else
echo VAR2 is not in the environment
fi
Run Code Online (Sandbox Code Playgroud)
如何some_sort_of_test_for_env_var
定义才能使上面的 bash 代码打印出以下两行?
VAR1 is not in the environment
VAR2 is in the environment
Run Code Online (Sandbox Code Playgroud)
我知道我可以定义一个 shell 函数来运行env
并对变量名执行 a 操作grep …