Make Jellyfin Debian package compatible with deb-multimedia repository #452

Closed
opened 2025-12-21 16:45:12 +01:00 by backuprepo · 24 comments
Owner

Originally created by @iacchi on GitHub (Feb 21, 2019).

Afer installing Jellyfin, I realised that the deb-multimedia repository was not in my sources.list file and I thought it would be a good idea to add it to get a more up-to-date version of a few programs (e.g. but not only ffmpeg). After adding the repo to my sources.list file, if I run apt-get dist-upgrade Jellyfin gets marked for removal, because apparently it's not compatible with some of the packages that get upgraded by the deb-multimedia repo.
I don't know if this incompatibility is real (then there would be more work to do if you want to fix this) or if it's just because compatible versions written in the Jellyfin deb packages are wrong (in which case you just need to fix the packaging), but either way would it be possible to make Jellyfin compatible with the use of the deb-multimedia repository?

Originally created by @iacchi on GitHub (Feb 21, 2019). Afer installing Jellyfin, I realised that the deb-multimedia repository was not in my sources.list file and I thought it would be a good idea to add it to get a more up-to-date version of a few programs (e.g. but not only ffmpeg). After adding the repo to my sources.list file, if I run apt-get dist-upgrade Jellyfin gets marked for removal, because apparently it's not compatible with some of the packages that get upgraded by the deb-multimedia repo. I don't know if this incompatibility is real (then there would be more work to do if you want to fix this) or if it's just because compatible versions written in the Jellyfin deb packages are wrong (in which case you just need to fix the packaging), but either way would it be possible to make Jellyfin compatible with the use of the deb-multimedia repository?
backuprepo 2025-12-21 16:45:12 +01:00
  • closed this issue
  • added the
    feature
    label
Author
Owner

@joshuaboniface commented on GitHub (Feb 22, 2019):

The incompatibility is real and the problem is ffmpeg.

In short, we're not compatible with ffmpeg 4.1. It causes numerous problems during playback. Our solution for standard Debian/Ubuntu distros is the error you see: we specify that we Depend on either ffmpeg <4.1, or on jellyfin-ffmpeg, which replaces the ffmpeg packages provided by either Debian/Ubuntu themselves or by the Multimedia repository.

The problem is the Debian packagers of ffmpeg are making (IMO) the really stupid decision to append increasing numbers at the beginning in order to forcibly "update" back to old version, which totally breaks any attempt to make this sort of compatibility sane. The exact compat line we use is ffmpeg <7:4.1, but if they do something like 10:3.3.2, that suddenly reports as being incompatible even though the actual ffmpeg version isn't.

I need to know exactly what the version string of the incompatible ffmpeg as well as ideally the entire output of your dist-upgrade attempt and we can work from there.

One potential solution is to forcibly pin away the Multimedia ffmpeg package using the following /etc/apt/preferences/ffmpeg-pin file (assuming, I hope, that you use www.deb-multimedia.org as the mirror:

Package: ffmpeg
Pin: origin www.deb-multimedia.org
Pin-Priority: -1

Then install jellyfin-ffmpeg and you should be fine. Our binary package there provides ffmpeg and ffprobe 4.0.3 in the standard Debian locations under /usr/bin and it Provides: ffmpeg which should be compatible with every other piece of ffmpeg-using software.

@joshuaboniface commented on GitHub (Feb 22, 2019): The incompatibility is real and the problem is `ffmpeg`. In short, we're not compatible with `ffmpeg` 4.1. It causes numerous problems during playback. Our solution for standard Debian/Ubuntu distros is the error you see: we specify that we `Depend` on either `ffmpeg` <4.1, or on `jellyfin-ffmpeg`, which *replaces* the `ffmpeg` packages provided by either Debian/Ubuntu themselves or by the Multimedia repository. The problem is the Debian packagers of `ffmpeg` are making (IMO) the really stupid decision to append increasing numbers at the beginning in order to forcibly "update" back to old version, which totally breaks any attempt to make this sort of compatibility sane. The exact compat line we use is `ffmpeg <7:4.1`, but if they do something like `10:3.3.2`, that suddenly reports as being incompatible even though the *actual* `ffmpeg` version isn't. I need to know exactly what the version string of the incompatible `ffmpeg` as well as ideally the entire output of your `dist-upgrade` attempt and we can work from there. One potential solution is to forcibly pin away the Multimedia `ffmpeg` package using the following `/etc/apt/preferences/ffmpeg-pin` file (assuming, I hope, that you use `www.deb-multimedia.org` as the mirror: ``` Package: ffmpeg Pin: origin www.deb-multimedia.org Pin-Priority: -1 ``` Then install `jellyfin-ffmpeg` and you should be fine. Our binary package there provides `ffmpeg` and `ffprobe` 4.0.3 in the standard Debian locations under `/usr/bin` and it `Provides: ffmpeg` which should be compatible with every other piece of `ffmpeg`-using software.
Author
Owner

@iacchi commented on GitHub (Feb 22, 2019):

Thank you, it's good to know that at least it's an actualy incompatibility. I will try to use that pin file to at least enable the rest of the deb-multimdia repository. One more question if possible: I read on the Jellyfin reddit a comment from one of the devs that jellyfin-ffmpeg currently is only installable on debian testing (buster) and not stable (stretch), is that correct? Before I read that I did try to install jellyfin-ffmpeg with dpkg on debian stable but I was getting some errors (I can re-create that if you want to see the error), it would be good to know if I should try again or not.

@iacchi commented on GitHub (Feb 22, 2019): Thank you, it's good to know that at least it's an actualy incompatibility. I will try to use that pin file to at least enable the rest of the deb-multimdia repository. One more question if possible: I read on the Jellyfin reddit a comment from one of the devs that jellyfin-ffmpeg currently is only installable on debian testing (buster) and not stable (stretch), is that correct? Before I read that I did try to install jellyfin-ffmpeg with dpkg on debian stable but I was getting some errors (I can re-create that if you want to see the error), it would be good to know if I should try again or not.
Author
Owner

@joshuaboniface commented on GitHub (Feb 22, 2019):

It's build specifocally for Buster but should in theory work fine on Stretch, though the stock Stretch package of ffmpeg is compatible with JF, albeit a bit old. If you can post the error(s) you get I can see wwhat I can do!

@joshuaboniface commented on GitHub (Feb 22, 2019): It's build specifocally for Buster but should in theory work fine on Stretch, though the stock Stretch package of `ffmpeg` is compatible with JF, albeit a bit old. If you can post the error(s) you get I can see wwhat I can do!
Author
Owner

@skug67 commented on GitHub (Feb 22, 2019):

Pinning won't work for me because I have other packages (mythtv) which have the higher version of ffmpeg as a dependency. What if there was there were a jellyfin-ffmpeg-custom package that was an optional/alternative dependency and install the jellyfin-compatible version of ffmpeg in a custom location. The user could then manually select that custom location on the dashboard (assuming that changing the ffmpeg location in the configs is either impossible or too much of a pain from within the debian package itself).

@skug67 commented on GitHub (Feb 22, 2019): Pinning won't work for me because I have other packages (mythtv) which have the higher version of ffmpeg as a dependency. What if there was there were a jellyfin-ffmpeg-custom package that was an optional/alternative dependency and install the jellyfin-compatible version of ffmpeg in a custom location. The user could then manually select that custom location on the dashboard (assuming that changing the ffmpeg location in the configs is either impossible or too much of a pain from within the debian package itself).
Author
Owner

@iacchi commented on GitHub (Feb 22, 2019):

I think that if you want to do that, you should be able to just unpack the deb file, copy the binaries somewhere and reference them within Jellyfin. I haven't had a look at what's inside the package (e.g. libraries that need to me in a specific location), but I think you should be able to do that. But indeed, it could be an option to have jellyfin-ffmpeg install stuff in /usr/local rather than /usr and have both versions coexist.

@iacchi commented on GitHub (Feb 22, 2019): I think that if you want to do that, you should be able to just unpack the deb file, copy the binaries somewhere and reference them within Jellyfin. I haven't had a look at what's inside the package (e.g. libraries that need to me in a specific location), but I think you should be able to do that. But indeed, it could be an option to have jellyfin-ffmpeg install stuff in `/usr/local` rather than `/usr` and have both versions coexist.
Author
Owner

@iacchi commented on GitHub (Feb 22, 2019):

the pinning worked quite nicely for the deb-multimedia repo, thanks for that. When if comes to jellyfin-ffmpeg, this is the error that I get (translated from Italian, so the actual string might be slightly different from the standard English one):

jellyfin-ffmpeg is in conflict with ffmpeg
ffmpeg (version 7:3.2.12-1~deb9u1) is present and installed

I haven't googled yet to find how to force the installation of jellyfin-ffmpeg over ffmpeg, that's my next step. However, it would be good not to have such error during "normal" installation.

@iacchi commented on GitHub (Feb 22, 2019): the pinning worked quite nicely for the deb-multimedia repo, thanks for that. When if comes to jellyfin-ffmpeg, this is the error that I get (translated from Italian, so the actual string might be slightly different from the standard English one): ``` jellyfin-ffmpeg is in conflict with ffmpeg ffmpeg (version 7:3.2.12-1~deb9u1) is present and installed ``` I haven't googled yet to find how to force the installation of jellyfin-ffmpeg over ffmpeg, that's my next step. However, it would be good not to have such error during "normal" installation.
Author
Owner

@joshuaboniface commented on GitHub (Feb 22, 2019):

Yup, you should be able to - I made it a static build to make this sort of thing really easy. The hope with jellyfin-ffmpeg was to make life easier on a stock Buster system, but the sheer number of ffmpeg packages out there make it a bit of a pain. The fact that JF looks for ffmpeg on the $PATH first (so it will always prefer /usr/bin/ffmpeg unless explicitly overridden in the GUI or via the CLI arguments in /etc/default/jellyfin) is what drove jellyfin-ffmpeg in its current form, so the extraction would be the next preferred option.

TEMPDIR=$(mktemp -d)
cd ${TEMPDIR}
wget https://repo.jellyfin.org/releases/server/debian/jellyfin-ffmpeg_4.0.3-2_amd64.deb
ar x jellyfin-ffmpeg_4.0.3-2_amd64.deb
tar -xvJf data.tar.xz
sudo mv ./usr/bin/ff* <YOUR TARGET FFMPEG DIR>

Then update and uncomment JELLYFIN_FFMPEG_OPT and JELLYFIN_FFPROBE_OPT in /etc/default/jellyfin to point at the new binaries.

With that version you have, assuming you're not using other software that needs a newer version, your stock 3.2 ffmpeg should work fine with JF. If not, you can try to remove the existing ffmpeg package and then install jellyfin-ffmpeg, since once the new package is installed it will Provides ffmpeg for other packages that depend on it.

@joshuaboniface commented on GitHub (Feb 22, 2019): Yup, you should be able to - I made it a static build to make this sort of thing really easy. The hope with `jellyfin-ffmpeg` was to make life easier on a stock Buster system, but the sheer number of `ffmpeg` packages out there make it a bit of a pain. The fact that JF looks for `ffmpeg` on the `$PATH` first (so it will always prefer `/usr/bin/ffmpeg` unless explicitly overridden in the GUI or via the CLI arguments in `/etc/default/jellyfin`) is what drove `jellyfin-ffmpeg` in its current form, so the extraction would be the next preferred option. ``` TEMPDIR=$(mktemp -d) cd ${TEMPDIR} wget https://repo.jellyfin.org/releases/server/debian/jellyfin-ffmpeg_4.0.3-2_amd64.deb ar x jellyfin-ffmpeg_4.0.3-2_amd64.deb tar -xvJf data.tar.xz sudo mv ./usr/bin/ff* <YOUR TARGET FFMPEG DIR> ``` Then update and uncomment `JELLYFIN_FFMPEG_OPT` and `JELLYFIN_FFPROBE_OPT` in `/etc/default/jellyfin` to point at the new binaries. With that version you have, assuming you're not using other software that needs a newer version, your stock `3.2` `ffmpeg` should work fine with JF. If not, you can try to remove the existing `ffmpeg` package and then install `jellyfin-ffmpeg`, since once the new package is installed it will `Provides` `ffmpeg` for other packages that depend on it.
Author
Owner

@iacchi commented on GitHub (Feb 22, 2019):

If you say it works fine then I won't touch it. I just thought maybe v.4.0.3 would work better? Uninstalling ffmpeg first and then installing jellyfin-ffmpeg is something I thought about, but Jellyfin would get uninstalled as well and so I haven't done it because I simply don't know (but maybe you could tell me) if, when I uninstall the jellyfin package, I will also remove all configuration and media library files, so that I will have to start from scratch when I re-install.

@iacchi commented on GitHub (Feb 22, 2019): If you say it works fine then I won't touch it. I just thought maybe v.4.0.3 would work _better_? Uninstalling ffmpeg first and then installing jellyfin-ffmpeg is something I thought about, but Jellyfin would get uninstalled as well and so I haven't done it because I simply don't know (but maybe you could tell me) if, when I uninstall the jellyfin package, I will also remove all configuration and media library files, so that I will have to start from scratch when I re-install.
Author
Owner

@joshuaboniface commented on GitHub (Feb 22, 2019):

Nope, as long as it's just a remove (not purge), your data/configs will all be there when you reinstall! 4.0.3 might work better for some features (stuff like hardware transcoding), but in my experience the 3.2 from Stretch worked just fine for basic usage/transcoding/subtitles/etc.

@joshuaboniface commented on GitHub (Feb 22, 2019): Nope, as long as it's just a `remove` (not `purge`), your data/configs will all be there when you reinstall! 4.0.3 might work better for *some* features (stuff like hardware transcoding), but in my experience the 3.2 from Stretch worked just fine for basic usage/transcoding/subtitles/etc.
Author
Owner

@joshuaboniface commented on GitHub (Feb 22, 2019):

However I will say I'm glad for the feedback, I think I'm going to make some improvements to this whole setup for 10.2.2 (or 10.3.0, whichever comes first).

@joshuaboniface commented on GitHub (Feb 22, 2019): However I will say I'm glad for the feedback, I think I'm going to make some improvements to this whole setup for 10.2.2 (or 10.3.0, whichever comes first).
Author
Owner

@iacchi commented on GitHub (Feb 22, 2019):

well, hardware transcoding is already a good enough reason for me :)
Anyway, thank you for all the help and the explanations! Glad that I could bring a final user point of view to the matter.

@iacchi commented on GitHub (Feb 22, 2019): well, hardware transcoding is already a good enough reason for me :) Anyway, thank you for all the help and the explanations! Glad that I could bring a final user point of view to the matter.
Author
Owner

@iacchi commented on GitHub (Feb 22, 2019):

I just tried to install jellyfin-ffmpeg and it's officially not compatible with debian stable:

 jellyfin-ffmpeg depends from libc6 (>= 2.28); but:
  The version of libc6:amd64 in the system is 2.24-11+deb9u4.
jellyfin-ffmpeg depends from libfontconfig1 (>= 2.12.6); but:
  The version of libfontconfig1:amd64 in the system is 2.11.0-6.7+b1.
 jellyfin-ffmpeg depends from libgnutls30 (>= 3.6.5); but:
  The version of libgnutls30:amd64 in the system is 3.5.8-5+deb9u4.
 jellyfin-ffmpeg depends from libgsm1 (>= 1.0.18); but:
  The version of libgsm1:amd64 in the system is 1.0.13-4+b2.
 jellyfin-ffmpeg depends from libopenmpt0 (>= 0.3.0); but:
  The version of libopenmpt0:amd64 in the system is 0.2.7386~beta20.3-3+deb9u3.
 jellyfin-ffmpeg depends from libsdl2-2.0-0 (>= 2.0.8); but:
  The version of libsdl2-2.0-0:amd64 in the system is 2.0.5+dfsg1-2.
 jellyfin-ffmpeg depends from libssh-gcrypt-4 (>= 0.8.0); but:
  The version of libssh-gcrypt-4:amd64 in the system is 0.7.3-2+deb9u2.
@iacchi commented on GitHub (Feb 22, 2019): I just tried to install jellyfin-ffmpeg and it's officially not compatible with debian stable: ``` jellyfin-ffmpeg depends from libc6 (>= 2.28); but: The version of libc6:amd64 in the system is 2.24-11+deb9u4. jellyfin-ffmpeg depends from libfontconfig1 (>= 2.12.6); but: The version of libfontconfig1:amd64 in the system is 2.11.0-6.7+b1. jellyfin-ffmpeg depends from libgnutls30 (>= 3.6.5); but: The version of libgnutls30:amd64 in the system is 3.5.8-5+deb9u4. jellyfin-ffmpeg depends from libgsm1 (>= 1.0.18); but: The version of libgsm1:amd64 in the system is 1.0.13-4+b2. jellyfin-ffmpeg depends from libopenmpt0 (>= 0.3.0); but: The version of libopenmpt0:amd64 in the system is 0.2.7386~beta20.3-3+deb9u3. jellyfin-ffmpeg depends from libsdl2-2.0-0 (>= 2.0.8); but: The version of libsdl2-2.0-0:amd64 in the system is 2.0.5+dfsg1-2. jellyfin-ffmpeg depends from libssh-gcrypt-4 (>= 0.8.0); but: The version of libssh-gcrypt-4:amd64 in the system is 0.7.3-2+deb9u2. ```
Author
Owner

@joshuaboniface commented on GitHub (Feb 22, 2019):

Aah OK, that settles that then, the shdeplibs were built specifically for Buster. I'll see if I can get that fix up this weekend!

@joshuaboniface commented on GitHub (Feb 22, 2019): Aah OK, that settles that then, the shdeplibs were built specifically for Buster. I'll see if I can get that fix up this weekend!
Author
Owner

@skug67 commented on GitHub (Feb 22, 2019):

FYI, the problem on my end is not so much operational compatibility (I've jellyfin 10.1.0-1 installed and working fine with ffmpeg 4.1.1-dmo2 from deb-multimedia/buster -- I never do hardware transcoding so perhaps that's why I haven't had any issues). But as long as I've got packages with conflicting dependencies (mythtv and jellyfin), I'm going to be stuck on 10.1.0-1 forever. :(

@skug67 commented on GitHub (Feb 22, 2019): FYI, the problem on my end is not so much operational compatibility (I've jellyfin 10.1.0-1 installed and working fine with ffmpeg 4.1.1-dmo2 from deb-multimedia/buster -- I never do hardware transcoding so perhaps that's why I haven't had any issues). But as long as I've got packages with conflicting dependencies (mythtv and jellyfin), I'm going to be stuck on 10.1.0-1 forever. :(
Author
Owner

@joshuaboniface commented on GitHub (Feb 22, 2019):

@skug67 Will MythTV not work with 4.0.3? I've never used that software before, but if it will work you should be able to gracefully remove ffmpeg and install jellyfin-ffmpeg, then install both jellyfin and mythtv on top of that - this is definitely an experiment though I know another user had success doing that.

@joshuaboniface commented on GitHub (Feb 22, 2019): @skug67 Will MythTV not work with 4.0.3? I've never used that software before, but if it will work you should be able to gracefully remove `ffmpeg` and install `jellyfin-ffmpeg`, then install both `jellyfin` and `mythtv` on top of that - this is definitely an experiment though I know another user had success doing that.
Author
Owner

@skug67 commented on GitHub (Feb 22, 2019):

Technically it's not mythtv that's throwing the incompatibility it's mythweb. When i try to remove the existing ffmpeg it insists on uninstalling mythweb. And mythweb is my primary interface for managing/scheduling recordings -- so deleting it really isn't an option. I'll see if a dpkg install with ignore-dependencies (instead of apt-get) leaves me in a stable situations....

@skug67 commented on GitHub (Feb 22, 2019): Technically it's not mythtv that's throwing the incompatibility it's mythweb. When i try to remove the existing ffmpeg it insists on uninstalling mythweb. And mythweb is my primary interface for managing/scheduling recordings -- so deleting it really isn't an option. I'll see if a dpkg install with ignore-dependencies (instead of apt-get) leaves me in a stable situations....
Author
Owner

@joshuaboniface commented on GitHub (Feb 22, 2019):

Thanks, if not, I'll make this a priority for a quick package update.

@joshuaboniface commented on GitHub (Feb 22, 2019): Thanks, if not, I'll make this a priority for a quick package update.
Author
Owner

@skug67 commented on GitHub (Feb 22, 2019):

OK. That did work. I need to check that my auto-transcode jobs in mythtv (flag commercials and convert to MKVs with chapters to facilitate commercial skipping) still work.

PS -- would be awesome (but not a super-high priority) if the jellyfin web player obeyed MKV chapter lists.

@skug67 commented on GitHub (Feb 22, 2019): OK. That did work. I need to check that my auto-transcode jobs in mythtv (flag commercials and convert to MKVs with chapters to facilitate commercial skipping) still work. PS -- would be awesome (but not a super-high priority) if the jellyfin web player obeyed MKV chapter lists.
Author
Owner

@joshuaboniface commented on GitHub (Feb 22, 2019):

Great! I'm still going to try simplifying how this all works though, I think it's easy enough to just go all-in with jellyfin-ffmpeg and update the /etc/default/jellyfin to use it by default for the future.

As for the MKV chapter lists, I'd definitely make a new issue for that or it will get lost, but that's a good suggestion!

@joshuaboniface commented on GitHub (Feb 22, 2019): Great! I'm still going to try simplifying how this all works though, I think it's easy enough to just go all-in with `jellyfin-ffmpeg` and update the `/etc/default/jellyfin` to use it by default for the future. As for the MKV chapter lists, I'd definitely make a new issue for that or it will get lost, but that's a good suggestion!
Author
Owner

@joshuaboniface commented on GitHub (Mar 1, 2019):

Corrected with 10.2.2. jellyfin-ffmpeg is now entirely separate from ffmpeg proper.

@joshuaboniface commented on GitHub (Mar 1, 2019): Corrected with 10.2.2. `jellyfin-ffmpeg` is now entirely separate from `ffmpeg` proper.
Author
Owner

@iacchi commented on GitHub (Mar 1, 2019):

Great! Thank you!

@iacchi commented on GitHub (Mar 1, 2019): Great! Thank you!
Author
Owner

@JustAMan commented on GitHub (Mar 5, 2019):

As for the MKV chapter lists, I'd definitely make a new issue for that or it will get lost, but that's a good suggestion!

@iacchi pls don't forget to make an issue :)

@JustAMan commented on GitHub (Mar 5, 2019): > As for the MKV chapter lists, I'd definitely make a new issue for that or it will get lost, but that's a good suggestion! @iacchi pls don't forget to make an issue :)
Author
Owner

@iacchi commented on GitHub (Mar 5, 2019):

That wasn't me, it was @skug67

@iacchi commented on GitHub (Mar 5, 2019): That wasn't me, it was @skug67
Author
Owner

@skug67 commented on GitHub (Mar 5, 2019):

Already submitted a feature request.

Sent from my iPad

On Mar 5, 2019, at 4:35 PM, Iacopo Benesperi notifications@github.com wrote:

That wasn't me, it was @skug67


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

@skug67 commented on GitHub (Mar 5, 2019): Already submitted a feature request. Sent from my iPad > On Mar 5, 2019, at 4:35 PM, Iacopo Benesperi <notifications@github.com> wrote: > > That wasn't me, it was @skug67 > > — > You are receiving this because you were mentioned. > Reply to this email directly, view it on GitHub, or mute the thread.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: starred/jellyfin#452
No description provided.