让我们来看看在 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-dev
apt-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 发行版中安装缺少的依赖项(如果存在)。我希望我的问题足够具体。
非常感谢您的回答和观点。
答案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 脚本,允许搜索与软件包名称的一部分匹配的软件包,例如,仅匹配软件包名称的名称部分,而不需要匹配版本号。
创建一个名为 Open-multiple-URLs-in-Firefox.sh 的 shell 脚本,用于查询是否存在多个包。该脚本包含以下代码:
#!/bin/bash while read line; do firefox --new-tab "https://packages.ubuntu.com/$line" done < packages.txt
使脚本可执行。
chmod +x Open-multiple-URLs-in-Firefox.sh
创建一个名为 packages.txt 的文件,其中包含所有所需依赖包的名称,每个包占一行。将 packages.txt 保存在与 Open-multiple-URLs-in-Firefox.sh 相同的目录中。
运行脚本。
./Open-multiple-URLs-in-Firefox.sh
包含每个所需依赖包信息的网页将在 Firefox 的单独选项卡中打开。
为了搜索多个包Debianhttps://packages.ubuntu.com/
在 shell 脚本中替换为https://packages.debian.org/search?keywords=