如何检查deb软件包的依赖列表。我正在运行Ubuntu 11.10,并且我已经备份了var/cache/apt/archives
中的所有deb软件包。我想要格式化我的电脑,并仅重新安装选定的应用程序。还有什么方法可以获取已安装软件包和其依赖关系的列表。
如何检查deb软件包的依赖列表。我正在运行Ubuntu 11.10,并且我已经备份了var/cache/apt/archives
中的所有deb软件包。我想要格式化我的电脑,并仅重新安装选定的应用程序。还有什么方法可以获取已安装软件包和其依赖关系的列表。
dpkg -I package.deb
/var/cache/apt/archives/
,并使用制表符自动补全来找到完整的软件包名及其版本,例如dpkg -I /var/cache/apt/archives/elasticsearch_2.4.4_all.deb
。 - Jason R. Coombssudo apt-get install --reinstall --download-only [软件包名称]
命令即可。 - Kalle Richter-I
是指 --info
。请参阅 http://manpages.ubuntu.com/manpages/trusty/man1/dpkg.1.html。 - leolydpkg
方法外,您还可以检查存储库中软件包的依赖关系。apt-cache depends package-name
编辑 根据@Tino的建议进行了更新。@Tigran的评论不再适用。
apt-cache depends
package-name
//显示package-name依赖于哪些软件包
apt-cache rdepends
package-name
//显示依赖于package-name的软件包
$ apt-cache depends vim-runtime
vim-runtime
Breaks: vim-tiny
|Recommends: vim
vim-athena
vim-gtk
vim-gtk3
vim-nox
|Recommends: vim-gtk
|Recommends: vim-gtk3
|Recommends: vim-athena
|Recommends: vim-nox
Recommends: vim-tiny
Enhances: vim-tiny
$ apt-cache rdepends vim-runtime
vim-runtime
Reverse Depends:
vim
vim
vim-nox
vim-gtk
vim-athena
vim-gtk3
vim
vim-nox
vim-gtk
vim-athena
vim-gtk3
dpkg -I package
只适用于已安装的软件包。在执行 apt-get update
后,apt-cache
可以用于所有已知的软件包。 - Tinoapt-cache depends package
是一个更好的方式,因为showpkg
无法告诉我们依赖关系是否是推荐、冲突等,所以有点令人困惑。如果需要结合depends
和showpkg
的脚本,请参考https://unix.stackexchange.com/a/362866/23450。 - Tinoapt-cache depends
只作用于你的源中候选包,而不是你已安装的特定包版本。如果你的 apt 仓库支持多个版本,这可能会令人困惑。在这种情况下,apt-cache depends package-name=VERSION
似乎是唯一的选择。 - Will Sdpkg
不再具有-I
选项,您需要使用dpkg-deb
来显示包括依赖关系在内的软件包信息:
dpkg-deb -I package.deb
-I
。 - AmandasaurusCOMMAND | tr " " "\n" | sort | uniq -d | xargs
dpkg-deb -I <The .deb> | grep -E "Depends|Recommends|Suggests|Pre\-Depends" | tr -d "|," | sed "s/([^)]*)/()/g" | tr -d "()" | tr " " "\n" | grep -Ev "Depends|Recommends|Suggests|Pre\-Depends" | xargs
apt-cache show <The package name> | grep -E "Depends|Recommends|Suggests|Pre\-Depends" | tr -d "|," | sed "s/([^)]*)/()/g" | tr -d "()" | tr " " "\n" | grep -Ev "Depends|Recommends|Suggests|Pre\-Depends" | xargs
dpkg-deb -I <The .deb> | grep -E --color=none "Depends|Recommends|Suggests|Pre\-Depends"
apt-cache show <The package name> | grep -E --color=none "Depends|Recommends|Suggests|Pre\-Depends"
dpkg-deb -I <The .deb> | grep -E "Depends|Recommends|Suggests|Pre\-Depends" | tr -d "|," | sed "s/([^)]*)/()/g" | tr -d "()" | tr " " "\n" | grep -Ev "Depends|Recommends|Suggests|Pre\-Depends" | xargs | tr " " "\n" | wc -l
apt-cache show <The package name> | grep -E "Depends|Recommends|Suggests|Pre\-Depends" | tr -d "|," | sed "s/([^)]*)/()/g" | tr -d "()" | tr " " "\n" | grep -Ev "Depends|Recommends|Suggests|Pre\-Depends" | xargs | tr " " "\n" | wc -l
\
分开以提高可读性,但这取决于你。 - user986805dpkg-deb --showformat
命令可以大大简化命令,例如:dpkg-deb --show --showformat='${Depends} ${Recommends} ${Suggests} ${Pre-Depends}\n' bash_5.1-2_amd64.deb | sed -r 's/ \([^()]*\),?//g'
。 - user986805apt depends curl
,我会得到 libc6
、libcurl
和 zlib1g
。如果我运行 apt depends libc6
,我会得到 libgcc-s1
和 libcyrpt1
。但是如果我使用您的脚本,这些第二层依赖关系就不会出现。(Ubuntu 20.04) - gmanapt-cache depends [Package-Name]
也可以使用。但是如果你从源列表之外的地方获取 .deb
包,那么像 apt-cache showpkg [Package-Name] && apt-cache depends [Package-Name]
这样的命令可能会显示过时的信息,或者与实际安装的软件包不同步,此时最好使用 dpkg -I [Package-Name]
。
dpkg --info [package name]
apt depends [package name]
dpkg -I
的输出进行处理,以获取依赖项列表:# dpkg -I package.deb | python -c "import sys, re; t=re.split(r'\n(?= ?[\w]+:)|:', sys.stdin.read()); print '\n'.join([i.strip() for i in {key.strip(): value.strip() for key, value in zip(t[::2], t[1::2])}['Depends'].split(',')])"
#
为人类扩展:
dpkg -I package.deb | python -c "
import sys, re;
# Split keys and values into pairs (zipped together later)
t=re.split(
r'\n(?= ?[\w]+:)|:',
sys.stdin.read()
);
# Newline separate each dependency
print '\n'.join([
# Trim each dependency value
i.strip() for i in {
# Build assoc array from package metadata
key.strip(): value.strip()
for key, value in zip(t[::2], t[1::2])
}['Depends'].split(',')
])
"
libc6\nadduser\n Installed-Size\n
。也就是说,它似乎匹配的不仅仅是Depends行。 - Jason R. Coombs
dpkg --get-selections | sed -n 's/[[:space:]]install$//p'
。 - Tino