我正在运行 kubuntu 14.04,至少在这个暑假之前不打算升级。提供的 libav 软件包有些过时(落后两个主要版本),并且对于我的某些用例而言,其输出效果不令人满意。出于这个原因,我尝试从源代码构建和安装,事实证明这解决了我遇到的问题。我希望保持这种状态(我对 git 相当有经验,更新快照和保持 deps 最新应该不会有问题),现在我想卸载我拥有的几个 libav 软件包,以便进行一些清理并防止奇怪的冲突。
当我尝试这样做时,apt-get 想要删除一大堆其他(元)包,因为它们依赖于 libav(vlc、dolphin、kubuntu-desktop(!)等)。
我怎样才能将所有这些应用程序重新绑定到我构建的新 libav 可执行文件(我猜如果使用 全局安装它们应该相当直接sudo make install
),以及如何在不破坏我的设置的情况下安全地卸载过时的软件包?
编辑:根据@MoonSweep 的建议,我尝试构建一个 equivs 包,但在完成它时遇到了问题:如果我尝试删除没有 equivs 包的 libav 包来满足 deps,则会得到以下输出:
$sudo apt-get remove libavcodec-* libavformat* libavutil*
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libavcodec-dev' for regex 'libavcodec-*'
[...more regex gibberish...]
The following packages were automatically installed and are no longer required:
libechonest2.1 libftgl2 libglew1.10 libprojectm2 libprotobuf8 libqxt-core0
libqxt-gui0 projectm-data
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
baloo clementine dolphin gstreamer1.0-libav gstreamer1.0-plugins-bad
kubuntu-desktop libavcodec-dev libavcodec-extra libavcodec-extra-54
libavformat-dev libavformat54 libavutil-dev libavutil52 libbaloowidgets4
libchromaprint-dev libchromaprint0 libk3b6-extracodecs libkfilemetadata4
libopencv-contrib2.4 libopencv-highgui2.4 libopencv-legacy2.4
libopencv-objdetect2.4 libswscale-dev libswscale2
nepomuk-core-ffmpegextractor phonon-backend-vlc vlc vlc-nox
vlc-plugin-notify vlc-plugin-samba
0 upgraded, 0 newly installed, 30 to remove and 0 not upgraded.
After this operation, 64.2 MB disk space will be freed.
Do you want to continue? [Y/n]
这是我安装的 equivs 包
### Commented entries have reasonable defaults.
### Uncomment to edit them.
# Source: <source package name; defaults to package name>
Section: misc
Priority: optional
# Homepage: <enter URL here; no default>
Standards-Version: 3.9.2
Package: libav-source
# Version: <enter version here; defaults to 1.0>
# Maintainer: Your Name <[email protected]>
# Pre-Depends: <comma-separated list of packages>
# Depends: <comma-separated list of packages>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
Provides: libavcodec-extra,libavcodec-extra-54,libavformat,libavformat54,libavutil52,libswscale2,libswscale2,gstreamer1.0-libav,libavcodec-dev,libavformat-dev,libavutil-dev,libswscale-dev
# Replaces: <comma-separated list of packages>
# Architecture: all
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
# Files: <pair of space-separated paths; First is file to include, second is destination>
# <more pairs, if there's more than one file to include. Notice the starting space>
Description: <short description; defaults to some wise words>
long description and info
.
second paragraph
但它似乎没有提供足够的信息,因为之前的删除命令具有完全相同的结果。我做错了什么?
答案1
您不需要“重新绑定”这些应用程序;如果您的库已正确安装(即使在/usr/local
),应用程序也应该能够找到它们。
您需要构建并安装一个假装提供这些库的假包,以便从包管理器的角度满足依赖关系。查看该equivs
包。