0%

ubuntu apt-file 解决依赖的利器

ubuntu 安装软件经常遇到各种依赖以及头文件缺失,可以使用 apt-file 来查询

$ sudo apt-get install apt-file
$ sudo apt-file update
$ sudo apt-file search libz.so.1
lib32z1: /usr/lib32/libz.so.1
lib32z1: /usr/lib32/libz.so.1.2.11
libx32z1: /usr/libx32/libz.so.1
libx32z1: /usr/libx32/libz.so.1.2.11
libzadc4: /usr/lib/x86_64-linux-gnu/genwqe/libz.so.1
zlib1g: /lib/x86_64-linux-gnu/libz.so.1
zlib1g: /lib/x86_64-linux-gnu/libz.so.1.2.11
$ sudo apt-file -a i386 update
$ sudo apt-get install libwhatever:i386

使用命令更新

$ sudo apt-file update
$ sudo apt-file -a i386 update

搜索

$ sudo apt-file search
$ sudo apt-file -a i386 search

安装

$ sudo apt install libxxx
$ sudo apt install libxxx:i386

如何查找缺失依赖库,确认是否安装正确以及确认需要 32/64

$ ldd /opt/4.9.4/cc1
    linux-gate.so.1 (0xf7f80000)
    libmpc.so.3 => /usr/lib/i386-linux-gnu/libmpc.so.3 (0xf7f3b000)
    libmpfr.so.4 => not found
    libgmp.so.10 => /usr/lib/i386-linux-gnu/libgmp.so.10 (0xf7eb0000)
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7eab000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7ccf000)
    /lib/ld-linux.so.2 (0xf7f82000)
    libmpfr.so.6 => /usr/lib/i386-linux-gnu/libmpfr.so.6 (0xf7c47000)

如上最后一行只需要执行

$ sudo ln -s /usr/lib/i386-linux-gnu/libmpfr.so.6 /usr/lib/i386-linux-gnu/libmpfr.so.4

如果没有输出最后一行,执行如下命令

$ sudo apt-file -a i386 search libmpfr.so
libmpfr-dev: /usr/lib/i386-linux-gnu/libmpfr.so
libmpfr6: /usr/lib/i386-linux-gnu/libmpfr.so.6
libmpfr6: /usr/lib/i386-linux-gnu/libmpfr.so.6.0.1

$ sudo apt install libmpfr6:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/libmpfr.so.6 /usr/lib/i386-linux-gnu/libmpfr.so.4

Ref

  1. Mint: correct way to install /lib/i386-linux-gnu/libgmp.so.3