在 Ubuntu 系统中安装缺失库的通用方法

在 Ubuntu 系统中安装缺失库的通用方法

让我们来看看在 Ubuntu 17.04 上安装 GNU-Radio 所需的依赖项列表。我在下面详细说明了这个列表。

sudo apt-get -y install git swig cmake doxygen build-essential libboost-all-dev libtool libusb-1.0-0 libusb-1.0-0-dev libudev-dev libncurses5-dev libfftw3-bin libfftw3-dev libfftw3-doc libcppunit-1.13-0v5 libcppunit-dev libcppunit-doc ncurses-bin cpufrequtils python-numpy python-numpy-doc python-numpy-dbg python-scipy python-docutils qt4-bin-dbg qt4-default qt4-doc libqt4-dev libqt4-dev-bin python-qt4 python-qt4-dbg python-qt4-dev python-qt4-doc python-qt4-doc libqwt6abi1 libfftw3-bin libfftw3-dev libfftw3-doc ncurses-bin libncurses5 libncurses5-dev libncurses5-dbg libfontconfig1-dev libxrender-dev libpulse-dev swig g++ automake autoconf libtool python-dev libfftw3-dev libcppunit-dev libboost-all-dev libusb-dev libusb-1.0-0-dev fort77 libsdl1.2-dev python-wxgtk3.0 git-core libqt4-dev python-numpy ccache python-opengl libgsl-dev python-cheetah python-mako python-lxml doxygen qt4-default qt4-dev-tools libusb-1.0-0-dev libqwt5-qt4-dev libqwtplot3d-qt4-dev pyqt4-dev-tools python-qwt5-qt4 cmake git-core wget libxi-dev gtk2-engines-pixbuf r-base-dev python-tk liborc-0.4-0 liborc-0.4-dev libasound2-dev python-gtk2 libzmq3-dev libzmq5 python-requests python-sphinx libcomedi-dev python-zmq

这是一个非常长的依赖项列表,并且 APT 多次挂起或抱怨说未找到一两个依赖项。

我们如何安装 APT 未找到的依赖项?最广泛接受的方法有哪些?

例如,在这个答案 其中 N0rbert 尝试使用一种我不明白的奇怪方法提取缺失的libliquid1d& ,从 /mirrors.kernel.org 提取库。但是,到目前为止,当我在 Ubuntu 16.04 系统上输入时,它仍然说找不到该库。以下是我的控制台输出:libliquid1d-devapt-get install libliquid1d

 [sudo] password for user:
 Reading package lists... Done
 Building dependency tree
 Reading state information... Done
 E: Unable to locate package libliquid1d

因此在这种情况下,用户可能会搜索并找到https://packages.ubuntu.com/search?keywords=libliquid1d此库在 Ubuntu 生态系统中仅存在于 Artful、Bionic 和 Cosmic 版本中。那么如何为其他发行版安装?

Ubuntu 软件包搜索结果

这是我的问题。当这种情况发生时,社区中有哪些已知/流行的黑客攻击?我对一种通用方法感兴趣,该方法可以在 Ubuntu 发行版中安装缺少的依赖项(如果存在)。我希望我的问题足够具体。

非常感谢您的回答和观点。

答案1

也许依赖项在另一个版本的 Ubuntu 或 Debian 版本上找到。运行此命令来查找。

sudo apt install devscripts  
rmadison -u ubuntu,debian first-package-name next-package-name last-package-name  

将上述代码中的 package-names 替换为您要搜索的包的名称。

此命令的问题是,有时软件包版本号是软件包名称的一部分,因此 rmadison 程序只会查找名称中具有相同版本号的软件包。为了克服这个限制,我编写了一个 bash shell 脚本,允许搜索与软件包名称的一部分匹配的软件包,例如,仅匹配软件包名称的名称部分,而不需要匹配版本号。

  1. 创建一个名为 Open-multiple-URLs-in-Firefox.sh 的 shell 脚本,用于查询是否存在多个包。该脚本包含以下代码:

    #!/bin/bash
    while read line; do
        firefox --new-tab "https://packages.ubuntu.com/$line"
    done < packages.txt
    
  2. 使脚本可执行。

    chmod +x Open-multiple-URLs-in-Firefox.sh
    
  3. 创建一个名为 packages.txt 的文件,其中包含所有所需依赖包的名称,每个包占一行。将 packages.txt 保存在与 Open-multiple-URLs-in-Firefox.sh 相同的目录中。

  4. 运行脚本。

    ./Open-multiple-URLs-in-Firefox.sh  
    

包含每个所需依赖包信息的网页将在 Firefox 的单独选项卡中打开。

为了搜索多个包Debianhttps://packages.ubuntu.com/在 shell 脚本中替换为https://packages.debian.org/search?keywords=

相关内容