如何知道一个包是主包还是其他包的依赖包?

如何知道一个包是主包还是其他包的依赖包?

我想了解我在问题中提到的包裹信息。

例如,我的系统中已安装了一个包。所以我想知道它是主包还是其他包的依赖包。

谢谢 。

答案1

Mik 描述了如何找到一个包的依赖项(它所依赖的包)。

我相信 GrSr 正在尝试找出任何给定的包是否具有任何反向依赖关系 - 也就是说,是否有任何包依赖于它。

apt-cache 依赖项

回答类似问题建议使用apt-cache rdepends。例如:

mac9416@lee:~$ apt-cache rdepends ffmpeg
ffmpeg
Reverse Depends:
  libavcodec-extra-52
  youtube-dl
  libavcodec52
  imagemagick
  ffmpeg-dbg
  videotrans
  tovid
  recorditnow
  mytharchive
  libavcodec-extra-52
  kmediafactory
  iriverter
  idjc
  dvdwizard
  dvdrip
  dvd95
  dvd-slideshow
  zoomer
  zoneminder
  xwax
  winff
  videoporama
  ubuntustudio-video
  stopmotion
  soundkonverter
  rtmpdump
  python-scitools
  pacpl
  mythexport
  motion
  luciole
  lives
  libsynfig0
  libavbin0
  kmplayer
  kino
  kdenlive
  jsymphonic
  imagination
  gvb
  get-iplayer
  gallery2
  clive
  bitpim
  libavcodec52
  imagemagick
  ffmpeg-dbg

一个更加戏剧化的例子是apt-cache rdepends python很多软件包依赖于 Python。

不幸的是,apt-cache rdepends列表全部反向依赖,无论它们是否已安装。

apt-get 删除

获取所需信息的最简单方法可能是尝试删除相关软件包。如果其他已安装的软件包依赖该软件包,则会列出这些软件包以供删除。

例如,如果我尝试sudo apt-get remove apt

The following packages will be REMOVED:
  apport apport-gtk apt-transport-https apt-xapian-index aptdaemon aptitude apturl command-not-found computer-janitor computer-janitor-gtk gdebi gdebi-core gnome-codec-install jockey-common jockey-gtk
  language-selector language-selector-common libept1 network-manager network-manager-gnome python-apport python-aptdaemon python-aptdaemon-gtk python-debian software-properties-gtk synaptic tasksel
  tasksel-data ubuntu-minimal ubuntu-standard ubuntustudio-desktop update-manager update-manager-core update-notifier update-notifier-common

显然很多的软件包依赖于 APT。另一方面,如果我尝试sudo apt-get remove youtube-dl

The following packages will be REMOVED:
  youtube-dl

没有已安装的软件包依赖于 youtube-dl。它是一个“主软件包”,而不是依赖项。

警告

高度建议您将-s或参数添加到用于此目的的--simulate任何命令中,除非您apt-get remove确实要删除一个包!这将确保您不会意外授予删除您想要保留的内容的权限。例如:

sudo apt-get remove apt -s
sudo apt-get remove youtube-dl -s

答案2

使用 apt-rdepends

安装后

sudo apt-get install apt-rdepends

您可以使用它来显示依赖于您想知道的包的所有包。

例如,如果你想知道所有依赖 xorg 的软件包及其状态,只需执行

apt-rdepends -r xorg -p

它将返回以下内容

tmashos@tmashos-wks:~$ apt-rdepends -r xorg -p
Reading package lists... Done
Building dependency tree       
Reading state information... Done
xorg
  Reverse Depends: kubuntu-active (1.7) [NotInstalled]
  Reverse Depends: kubuntu-desktop (1.254) [NotInstalled]
  Reverse Depends: ltsp-client (5.3.7-0ubuntu2) [NotInstalled]
  Reverse Depends: lubuntu-core (0.38) [NotInstalled]
  Reverse Depends: mythbuntu-desktop (0.77) [NotInstalled]
  Reverse Depends: ubuntu-desktop (1.267) [Installed]
  Reverse Depends: ubuntu-sugar-remix (0.5) [NotInstalled]
  Reverse Depends: ubuntustudio-desktop (0.100) [NotInstalled]
  Reverse Depends: xubuntu-desktop (2.152) [NotInstalled]
kubuntu-active
kubuntu-desktop
  Reverse Depends: edubuntu-desktop-kde (12.02.1) [NotInstalled]
  Reverse Depends: kubuntu-full (1.254) [NotInstalled]
  Reverse Depends: kubuntu-netbook (1.254) [NotInstalled]
edubuntu-desktop-kde
kubuntu-full
kubuntu-netbook
ltsp-client
lubuntu-core
  Reverse Depends: lubuntu-desktop (0.38) [NotInstalled]
lubuntu-desktop
mythbuntu-desktop
ubuntu-desktop
  Reverse Depends: edubuntu-desktop (12.02.1) [NotInstalled]
edubuntu-desktop
ubuntu-sugar-remix
ubuntustudio-desktop
xubuntu-desktop
tmashos@tmashos-wks:~$ 

您可以看到 xorg 已安装,因为我已ubuntu-desktop安装。它还显示了所依赖的内容ubuntu-desktopedubuntu-desktop)。由于我没有edubuntu-desktop安装,您可以看到那ubuntu-desktop是顶层。

答案3

一种方法是使用apt-cache,您可以使用它来查询许多包或搜索它们。它是重要的需要注意的是,apt-cache它将返回查询包的数据无论它是否已安装。

例如,apt-cache show skype您可以使用它来查看有关软件包的所有信息;使用它来查看软件包的摘要信息apt-cache showpkg skype,其中将显示依赖项并且反向依赖,这些软件包依赖于 Skype。但是,要仅查看 Skype 所依赖的软件包,例如,使用apt-cache depends skype

apt-cache depends skype
    skype
      Depends: libasound2
      Depends: libc6
      Depends: libgcc1
      Depends: libqt4-dbus
      Depends: libqt4-network
      Depends: libqtcore4
      Depends: libqtgui4
      Depends: libstdc++6
      Depends: libx11-6
      Depends: libxext6
      Depends: libxss1
      Depends: libxv1

apt-cache中记录了许多其他有用的功能,man apt-cache例如显示可用版本和版本当前优先级的能力;要查看此信息,请输入apt-cache policy skype

有关如何使用dpkg来找出哪些文件来自哪些包,请参阅本文

答案4

如果你愿意,你也可以进入 synapic 包管理器。
如果尚未安装,请运行

sudo apt-get install synaptic

只需搜索您的包,右键单击它,然后选择属性。
从那里您可以找到它的依赖项和依赖项,等等...

相关内容