如何检测可执行文件缺少的依赖项?

吉利

查看https://askubuntu.com/a/207750/23678,作者如何知道缺少哪个依赖项?有没有一种通用的方法来查找可执行文件的依赖关系列表,而缺少哪些依赖关系?

UPDATE:我只注意到注意到https://stackoverflow.com/a/9082947/14731使用

readelf -l [可执行文件]

这是最好的方法吗?

阿拉·阿里(Alaa Ali)

在链接的AskUbuntu问题中,作者知道缺少哪个依赖项,因为他试图在64位Ubuntu安装上安装32位应用程序,并引用他的话:

Ubuntu 64位中缺少一些32位库。

因此,他需要安装它们。

但是,要回答您的问题:

  • 如何检测可执行文件缺少的依赖项?
  • 有没有一种通用的方法来查找可执行文件的依赖关系列表,而缺少哪些依赖关系?

是的,有一种方法可以检测缺少的依赖项或获取它们的列表。

检测缺少的依赖项:

在基于Debian的Linux发行版中使用软件包管理系统 apt是一个聪明的系统,它将自动检测当前安装的软件包是否缺少依赖项(即使您已使用dpkg而不是已经安装了它们apt-get)。假设您已经安装了一个没有相关性的软件包,那么在下次执行时apt-get upgrade,您将得到类似于以下的错误:

The following packages have unmet dependencies:
 package1 : Depends: package2 (>= 1.8) but 1.7.5-1ubuntu1 is to be installed

表示package1取决于package2,并且package2(即本示例中的较新版本)尚未安装。通常,要解决此问题,请执行命令sudo apt-get install -f,该命令指示apt-get尝试检索和安装缺少的软件包。

查找可执行文件的依赖项列表:

apt套件以及dpkg,提供了一种精巧的方法来列出软件包的依赖关系。

  • 对于apt,命令是:

    apt-cache depends <packagename>
    

    这将检查存储库中的程序包并列出依赖项以及“建议”程序包。如果您真的想单独过滤依赖项,则可以通过执行以下操作过滤输出:apt-cache depends <packagename> | grep Depends这是一个示例输出:

    alaa @ aa-lu:〜$ apt-cache依赖vlc 
    vlc
      依赖:fonts-freefont-ttf
      依赖:vlc-nox 
     |依赖:libavutil51
      依赖:libxpm4
      依赖:zlib1g
      依赖:dpkg
      建议:videolan-doc
      建议:vlc-plugin-通知
      推荐:xdg-utils
      中断:vlc-data
      中断:vlc-nox
      替换:vlc-data
      替换:vlc-nox

    为简洁起见,减少了输出。

  • 对于dpkg,在本地文件上运行它的命令是:

    dpkg -I file.deb | grep Depends
    

    dpkg -I file.deb返回有关此.deb文件的很多信息,因此我们对其进行过滤以仅查看依赖项。

因为apt实际上实际上只是dpkg的前端,所以这两个命令本质上都做同样的事情,因此它们会查看.deb应用程序文件以找出所需的依赖关系,除了apt-cache在存储库中查找之外这些“依赖”列.deb文件的元数据,这就是为什么即使你已经手动下载并安装应用程序(通常是一个.deb文件,所以,您要使用安装它dpkg,而不是apt)从网站(例如,apt通过分析已安装的软件包仍然可以从Google的网站访问Google的Chrome浏览器)


我对所有这些计算机体系结构知识都不是很精通,但是在这个问题中,对于Java,它实际上是关于32位和64位体系结构的。引用stackoverflow的答案:

您正在没有32位运行时环境的64位系统上运行。

那个需要安装的特定库未包含在安装包的“ Depends”部分中,因为他正在64位系统上安装32位应用程序。因此,需要额外的疑难解答来找到罪魁祸首,因此使用readelfldd但是,这些可能更特定于库,并且请记住,“依赖项”并不总是“库”,而可以是其他应用程序。因此,“这是最好的方法吗? ”,我对此表示怀疑。我认为只有在需要额外的故障排除时才是最好的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检测可执行文件缺少的依赖项?

来自分类Dev

查找可执行文件依赖项的命令

来自分类Dev

如何使用GnuPG(gpg)可执行文件和依赖项冻结python应用(PyInstaller)

来自分类Dev

具有多个可执行文件和依赖项的 Makefile

来自分类Dev

如何安装可执行文件

来自分类Dev

如何查找可执行文件

来自分类Dev

错误:生成ENOENT:缺少sass可执行文件

来自分类Dev

在CentOS上缺少“哪个”可执行文件

来自分类Dev

JaCoCo缺少可执行文件问题

来自分类Dev

Ubuntu 18.04缺少可执行文件图标

来自分类Dev

如何使用gcc生成可执行文件的依赖文件(在链接期间)

来自分类Dev

创建依赖于框架的可执行文件

来自分类Dev

从Vim检测生成的可执行文件

来自分类Dev

如何生成没有依赖关系的Crystal可执行文件?

来自分类Dev

如何在Linux上的/ proc / self / maps中检测可执行文件或共享对象

来自分类Dev

如何检测sis内部可执行文件的退出代码

来自分类Dev

如果该文件是可执行文件,为什么我需要安装一些依赖项?

来自分类Dev

使用 cabal v2-install 构建可执行文件时冻结所有依赖项

来自分类Dev

头文件如何编译为可执行文件?

来自分类Dev

如何获取python可执行文件的文件路径

来自分类Dev

如何在jar中访问可执行文件

来自分类Dev

如何编写打字稿可执行文件?

来自分类Dev

如何从路径调用可执行文件?

来自分类Dev

如何从Python运行可执行文件?

来自分类Dev

如何运行Nuitka编译的Python可执行文件

来自分类Dev

如何使用Clion调试外部可执行文件

来自分类Dev

如何删除shell可执行文件的停靠图标?

来自分类Dev

如何制作Python程序的可执行文件?

来自分类Dev

如何扫描可执行文件的搜索路径

Related 相关文章

  1. 1

    如何检测可执行文件缺少的依赖项?

  2. 2

    查找可执行文件依赖项的命令

  3. 3

    如何使用GnuPG(gpg)可执行文件和依赖项冻结python应用(PyInstaller)

  4. 4

    具有多个可执行文件和依赖项的 Makefile

  5. 5

    如何安装可执行文件

  6. 6

    如何查找可执行文件

  7. 7

    错误:生成ENOENT:缺少sass可执行文件

  8. 8

    在CentOS上缺少“哪个”可执行文件

  9. 9

    JaCoCo缺少可执行文件问题

  10. 10

    Ubuntu 18.04缺少可执行文件图标

  11. 11

    如何使用gcc生成可执行文件的依赖文件(在链接期间)

  12. 12

    创建依赖于框架的可执行文件

  13. 13

    从Vim检测生成的可执行文件

  14. 14

    如何生成没有依赖关系的Crystal可执行文件?

  15. 15

    如何在Linux上的/ proc / self / maps中检测可执行文件或共享对象

  16. 16

    如何检测sis内部可执行文件的退出代码

  17. 17

    如果该文件是可执行文件,为什么我需要安装一些依赖项?

  18. 18

    使用 cabal v2-install 构建可执行文件时冻结所有依赖项

  19. 19

    头文件如何编译为可执行文件?

  20. 20

    如何获取python可执行文件的文件路径

  21. 21

    如何在jar中访问可执行文件

  22. 22

    如何编写打字稿可执行文件?

  23. 23

    如何从路径调用可执行文件?

  24. 24

    如何从Python运行可执行文件?

  25. 25

    如何运行Nuitka编译的Python可执行文件

  26. 26

    如何使用Clion调试外部可执行文件

  27. 27

    如何删除shell可执行文件的停靠图标?

  28. 28

    如何制作Python程序的可执行文件?

  29. 29

    如何扫描可执行文件的搜索路径

热门标签

归档