[packman] Manual dependencies on ffmpeg: not good
Jan Engelhardt
jengelh at inai.de
Tue Jun 12 18:01:39 CEST 2012
My openSUSE_12.1 system currently has ffmpeg-0.9.1-1.1[packman], but
zypper does not want to update to ffmpeg-0.11[packman], because of
some whacky manual dependencies that someone had added. Drilled down
(minimal testcase), in rpm lingo,:
# rpm -Uhv libavcodec54-0.11-4.1.x86_64.rpm error: Failed dependencies:
libavutil51 = 0.11 is needed by libavcodec54-0.11-4.1.x86_64
# rpm -Uhv libavcodec54-0.11-4.1.x86_64.rpm libavutil51-0.11-4.1.x86_64.rpm
error: Failed dependencies:
libavutil51 = 0.9.1-1.1 is needed by (installed) libavdevice53-0.9.1-1.1.x86_64
Installation of libavcodec54 would force libavdevice53 out the
system, which is an operation that is penalized by zypper and thus
not rejected for "zypper up". libavdevice53.rpm is set to depend on a
specific libavutil51 version. That is not how library versioning is
meant to be done.
Solutions:
1. If avdevice53 really requires avutil51-0.9.1 (rather than any
avutil.so.51), the ffmpeg folks screwed up their ABI.
2. If the dependency is artificial, remove the manual deps and let
Automatic Dependency resolution do its job.
Kill all of those that look like:
Requires: %{libnameavcodec} = %{version}
Requires: %{libnameavdevice} = %{version}
Requires: %{libnameavformat} = %{version}
Requires: %{libnameavutil} = %{version}
Requires: %{libnamepostproc} = %{version}
Requires: %{libnameswscale} = %{version}
Requires: %{libnameswresample} = %{version}
Requires: %{libnameavresample} = %{version}
[there are more]
More information about the Packman
mailing list