在我尝试安装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
自己从头开始构建的。
我倾向于避免陷入依赖地狱,所以我会使用替代方案,但如果你想陷入困境,你应该这样做:
- 寻找提供
gstreamer1.0-rockchip1
其依赖项的存储库/PPA,或者 - 自己打包依赖。
搜索显示了我感兴趣的两个 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
这里唯一不可用的依赖项focal
是librockchip-mpp1
.
另一次搜索让我找到了一个存储库,它提供了librockchip-mpp{1,-dev}
(或者至少是一个具有该名称的包)。该存储库还提供了为基于 debain 的发行版打包此包的规则,因此这应该不会太难。这个也有一个debian/copyright
指向自身的 a ,所以它看起来更合法一些。
当我查看它的依赖项时,它只有debhelper, cmake
构建依赖项。看来我们没有必要再深入了。
要构建/安装此包:
$ 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(如这个答案)来创建一个满足依赖关系的虚假包。这是一个替代方案实际上打包库,这本质上告诉系统“我已经处理好了,相信我。”