apt-get install 找不到本地库

apt-get install 找不到本地库

在我尝试安装gstreamer1.0-rockchip1并获取之后:

The following packages have unmet dependencies:
 gstreamer1.0-rockchip1 : Depends: librockchip-mpp1 but it is not installable
E: Unable to correct problems, you have held broken packages.

我克隆、编译并安装了存储库最大功率点make and sudo make install。现在我有所需的库/usr/local/lib

lrwxrwxrwx 1 root root       20 Aug  7 10:43 librockchip_vpu.so -> librockchip_vpu.so.1
lrwxrwxrwx 1 root root       20 Aug  7 10:43 librockchip_vpu.so.1 -> librockchip_vpu.so.0
lrwxrwxrwx 1 root root       20 Aug  7 10:43 librockchip_mpp.so -> librockchip_mpp.so.1
lrwxrwxrwx 1 root root       20 Aug  7 10:43 librockchip_mpp.so.1 -> librockchip_mpp.so.0
drwxr-xr-x 2 root root     4096 Aug  7 10:43 pkgconfig
-rw-r--r-- 1 root root    78944 Aug  7 10:20 librockchip_vpu.so.0
-rw-r--r-- 1 root root  1978352 Aug  7 10:20 librockchip_mpp.so.0
drwxrwsr-x 3 root staff    4096 Aug  7 09:01 ocaml
drwxrwsr-x 4 root staff    4096 Aug  7 08:58 python2.7
drwxrwsr-x 3 root staff    4096 Mar 11 02:17 python3.8

但是,我仍然遇到相同的初始错误。有没有办法链接图书馆?

我的系统:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.4 LTS
Release:    20.04
Codename:   focal

答案1

gstreamer1.0-rockchip1不依赖于名为 的文件/usr/local/lib/librockchip_mpp.so.1,它依赖于librockchip-mpp1可能提供/usr/lib/x86_64-linux-gnu/librockchip_mpp.so.1.

这些软件包在存储库中都不可用focal

通常,当辅助存储库(例如 PPA)提供包时,它们还应该提供官方存储库中没有的任何依赖项。看起来你的仓库没有这样做。也有可能是您gstreamer-rockchip-1自己从头开始构建的。

我倾向于避免陷入依赖地狱,所以我会使用替代方案,但如果你想陷入困境,你应该这样做:

  1. 寻找提供gstreamer1.0-rockchip1其依赖项的存储库/PPA,或者
  2. 自己打包依赖。

搜索显示了我感兴趣的两个 github 存储库。我不知道这是否是您获取软件包的地方,或者这些是否是软件包的最佳分支,或者它们是否可以相互协作,或者它们是否包含任何恶意代码。我会让你决定这一切。

第一个是一个项目,它提供gstreamer-rockchip-1。看起来您已经拥有一个存储库或*.deb来自该项目。我查看了该debain/copyright文件,它没有指向任何上游项目。

我可以看出debian/control这个包将取决于librockchip-mpp

Build-Depends: debhelper (>= 9), autotools-dev,
 librockchip-mpp-dev (>= 1.4.0), libx11-dev, libdrm-dev,
 libgstreamer1.0-dev, libgstreamer-plugins-base1.0-dev

这里唯一不可用的依赖项focallibrockchip-mpp1.

另一次搜索让我找到了一个存储库,它提供了librockchip-mpp{1,-dev}(或者至少是一个具有该名称的包)。该存储库还提供了为基于 debain 的发行版打包此包的规则,因此这应该不会太难。这个也有一个debian/copyright指向自身的 a ,所以它看起来更合法一些。

当我查看它的依赖项时,它只有debhelper, cmake构建依赖项。看来我们没有必要再深入了。

要构建/安装此包:

  1. 选择一个标签,并下载它的压缩包。然后:
$ tar -xzf release_20171218.tar.gz
$ ln -s mpp-release_20171218.tar.gz mpp_1.4.0.orig.tar.gz
$ cd mpp-release_20171218
$ dpkg-buildpackage -uc -us
$ sudo dpkg -i ../librockchip-mpp1_1.4.0-1_amd64.deb

然后就可以继续安装了gstreamer1.0-rockchip1

请注意,当我尝试编译此文件时,出现了一些 CMake 配置错误。具体来说:

找不到工具链文件:/etc/dpkg-cross/cmake/CMakeCross.txt

这就是我愿意追求的事情。

答案2

您可以使用equivs(如这个答案)来创建一个满足依赖关系的虚假包。这是一个替代方案实际上打包库,这本质上告诉系统“我已经处理好了,相信我。”

相关内容