[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