Unofficial packaging for Debian available

The place to discuss linux version of MakeMKV
mathias
Posts: 13
Joined: Sun Aug 12, 2018 4:22 pm

Unofficial packaging for Debian available

Post by mathias »

For quite some time I’ve been packaging MakeMKV for my own use, and recently Ben Westover has been actively working on the ITPs to get the packages into Debian. Ben is now hosting the packages to make them available to a larger audience.

Caveats:
  • These are unofficial third party packages for MakeMKV -- neither GuinpinSoft nor Debian have been involved in their creation, so the normal disclaimers apply: use at your own risk, these might break your system, etc. That being said, Ben and I do use the packages on our own machines, so we believe they are of sufficient quality for general use.
  • Packages are provided for the “bullseye” (oldstable), "bookworm" (stable), "trixie" (testing), and sid releases, with amd64, i386, arm64, and armhf builds. I personally run bookworm/amd64, so I’ve fully tested those packages -- the other ones should work just fine, but we’d appreciate hearing about any difficulties.
  • While these are not official Debian packages, we do try to follow Debian packaging practices as best as we can.
  • We plan to release updated builds as newer versions of MakeMKV come out, but we can’t promise how quickly that will happen for a given release.
Installation:
As root:

Code: Select all

wget https://apt.benthetechguy.net/benthetechguy-archive-keyring.gpg -O /usr/share/keyrings/benthetechguy-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/benthetechguy-archive-keyring.gpg] https://apt.benthetechguy.net/debian bookworm non-free" > /etc/apt/sources.list.d/benthetechguy.list
apt update
apt install makemkv
(Modify the release codename to reflect the version of Debian you are running.)

Some more information is available at https://apt.benthetechguy.net/.

Lastly, if you’ve been using MakeMKV for a while and found it useful, please consider buying a full activation key (https://www.makemkv.com/buy/). It’s only $50, and I know I’ve certainly got my money’s worth from this program!

(Updated 2022-08-27 with the transition to Ben's apt repo, 2024-03-15 to reflect current Debian releases)
Last edited by mathias on Fri Mar 15, 2024 12:38 pm, edited 4 times in total.
calamari
Posts: 1
Joined: Fri Jul 02, 2021 7:35 am

Re: Unofficial packaging for Debian available

Post by calamari »

Finally moved my main system from Ubuntu 18.04 to Debian 10 (Buster), and this was super helpful.

Thank you!
SirFarthingtonSmythe
Posts: 1
Joined: Tue Dec 21, 2021 7:51 pm

Re: Unofficial packaging for Debian available

Post by SirFarthingtonSmythe »

@mathias, a huge thank you for this. Compiling it from source was working fine on the 32-bit kernel of Debian Buster, but not the 64-bit kernal. The optical drive is of course on the 64-bit machine, so I was having a heck of a time trying to get things working. Your package worked perfectly on Raspberry Pi Desktop 64-bit.

Once again, a huge thank you.
mathias
Posts: 13
Joined: Sun Aug 12, 2018 4:22 pm

Re: Unofficial packaging for Debian available

Post by mathias »

Glad to hear others are finding my packaging work useful!
martini2
Posts: 4
Joined: Fri May 17, 2019 5:46 pm

Re: Unofficial packaging for Debian available

Post by martini2 »

Thank you for providing this repo and the debian packages. As my drive is in an headless server without gui, which file do i have to install or download to have only the cli version?
mathias
Posts: 13
Joined: Sun Aug 12, 2018 4:22 pm

Re: Unofficial packaging for Debian available

Post by mathias »

martini2 wrote:
Sat Aug 05, 2023 9:26 am
Thank you for providing this repo and the debian packages. As my drive is in an headless server without gui, which file do i have to install or download to have only the cli version?
I believe

Code: Select all

apt install makemkvcon
should be what you need to get just the cli version without the full gui provided by the makemkv package.
minolein
Posts: 1
Joined: Thu Feb 22, 2024 2:23 pm

Re: Unofficial packaging for Debian available

Post by minolein »

Hi, will there be a workaround for Debian bookworm?
I can't get these dependencies resolved:

Code: Select all

Die folgenden Pakete haben unerfüllte Abhängigkeiten:
 libmakemkv1 : Hängt ab von: libavcodec58 (>= 7:4.2) ist aber nicht installierbar
               Hängt ab von: libavutil56 (>= 7:4.0) ist aber nicht installierbar
               Hängt ab von: libssl1.1 (>= 1.1.0) ist aber nicht installierbar
However, have installed newer versions of the required software.
mathias
Posts: 13
Joined: Sun Aug 12, 2018 4:22 pm

Re: Unofficial packaging for Debian available

Post by mathias »

minolein wrote:
Thu Feb 22, 2024 2:27 pm
Hi, will there be a workaround for Debian bookworm?
I can't get these dependencies resolved:

Code: Select all

Die folgenden Pakete haben unerfüllte Abhängigkeiten:
 libmakemkv1 : Hängt ab von: libavcodec58 (>= 7:4.2) ist aber nicht installierbar
               Hängt ab von: libavutil56 (>= 7:4.0) ist aber nicht installierbar
               Hängt ab von: libssl1.1 (>= 1.1.0) ist aber nicht installierbar
However, have installed newer versions of the required software.
Double-check that your sources.list for Ben's repo is pointing to the bookworm release, not bullseye. The versions for the missing dependencies of libmakemkv1 in your output match what's in bullseye, not bookworm:

Code: Select all

$ cat /etc/apt/sources.list.d/benthetechguy.list
deb [signed-by=/usr/share/keyrings/benthetechguy-archive-keyring.gpg] https://apt.benthetechguy.net/debian bookworm non-free
prahal
Posts: 8
Joined: Wed Mar 13, 2024 12:42 am

Re: Unofficial packaging for Debian available

Post by prahal »

Could you provide sid/unstable packages taking into account the 64-bit time_t transition (t64 suffix) in sid/unstable currently in progress?
BenTheTechGuy
Posts: 3
Joined: Sun Aug 28, 2022 5:42 pm

Re: Unofficial packaging for Debian available

Post by BenTheTechGuy »

prahal wrote:
Wed Mar 13, 2024 12:45 am
Could you provide sid/unstable packages taking into account the 64-bit time_t transition (t64 suffix) in sid/unstable currently in progress?
Since these updates won't migrate to testing for a while, I can't provide a package in my testing/sid repo without separating the two. Until something else happens that gives me a reason to do that, here's the one-off packages to manually upgrade to if you're on sid (not testing): https://apt.benthetechguy.net/debian/makemkv-sid-t64/

libdriveio0, libmakemkv1, and makemkvcon are required, makemkv if you're using the GUI, libmmbd0 if you're using MakeMKV libaacs emulation, and dbgsym packages if you're debugging. I can do this build for other architectures if needed.
odysseus
Posts: 2
Joined: Fri Mar 15, 2024 6:17 pm

Re: Unofficial packaging for Debian available

Post by odysseus »

Hi,

Trying to install on testing while also using the Debian Multimedia repo (https://www.deb-multimedia.org/) and I get dependency issues:

Code: Select all

The following packages have unmet dependencies:
 libavcodec-extra60 : Depends: libavutil58 (= 7:6.1.1-1) but 10:6.1.1-dmo1 is to be installed
                      Conflicts: libavcodec60
I'm not a debian packaging expert, but I think the issue is that you have libmakemkv1 depending directly on the upstream reversion of libavcodec60 (=7:6.1.1-1) and not a slightly more generic version (>=7:6.1.1), i.e. drop the -1 so that the dmo package -dmo1 can be used, as you have for libavutil58 (>=7:6.0) which it seems to be happy with.

Thanks for your hard work!
BenTheTechGuy
Posts: 3
Joined: Sun Aug 28, 2022 5:42 pm

Re: Unofficial packaging for Debian available

Post by BenTheTechGuy »

odysseus wrote:
Fri Mar 15, 2024 6:33 pm
Hi,

Trying to install on testing while also using the Debian Multimedia repo (https://www.deb-multimedia.org/) and I get dependency issues:

Code: Select all

The following packages have unmet dependencies:
 libavcodec-extra60 : Depends: libavutil58 (= 7:6.1.1-1) but 10:6.1.1-dmo1 is to be installed
                      Conflicts: libavcodec60
I'm not a debian packaging expert, but I think the issue is that you have libmakemkv1 depending directly on the upstream reversion of libavcodec60 (=7:6.1.1-1) and not a slightly more generic version (>=7:6.1.1), i.e. drop the -1 so that the dmo package -dmo1 can be used, as you have for libavutil58 (>=7:6.0) which it seems to be happy with.

Thanks for your hard work!
I'm not deliberately choosing the strict dependency, that's something decided at build-time. Why libavcodec is the only one it gives a strict dependency, I don't know. I have been investigating this for a while as it causes me many headaches, but I'm pretty busy with life at the moment.

To make it depend on the special dmo package, you have to build with that repo enabled.
prahal
Posts: 8
Joined: Wed Mar 13, 2024 12:42 am

Re: Unofficial packaging for Debian available

Post by prahal »

Thanks. It turns out I just rebuilt the packages from your sources against the unstable repository and the dependencies were updated accordingly.
Only libssl3t64 dependency has changed so on next upgrade all packages were set back to your repository versions instead of my local builds except libmakemkv1 (which was rebuilt with a libssl3 or libssl3t64 dependency).

But in the meantime, I found that your repository's unstable version is (or at least was) a link to the testing one. I believe this will require to be split or wait until the t64 transition is migrated to testing before importing a rebuilt version of your package against unstable.
(I use cowbuilder to create the builder image for building the package against the unstable distribution, then git-buildpackage ie gbp to build the package (though I have a custom script, I don't know if the building would work with a fresh git-buildpackage/pbuilder install).

Good luck with life. No hurry.
odysseus
Posts: 2
Joined: Fri Mar 15, 2024 6:17 pm

Re: Unofficial packaging for Debian available

Post by odysseus »

BenTheTechGuy wrote:
Fri Mar 15, 2024 7:12 pm
I'm not deliberately choosing the strict dependency, that's something decided at build-time. Why libavcodec is the only one it gives a strict dependency, I don't know. I have been investigating this for a while as it causes me many headaches, but I'm pretty busy with life at the moment.

To make it depend on the special dmo package, you have to build with that repo enabled.
Ah, no worries then. Hopefully a solution presents itself in time :)

In the meantime, I've used dpkg-deb to edit the depend to be libavcodec60 (>= 7:6.1.1) and installed the modified deb manually, then everything else installs and runs fine. Well, at least until the next update!

For anyone wanting to do the same:

Code: Select all

apt download libmakemkv1
dpkg-deb -R libmakemkv1_1.17.6+ds-1_amd64.deb libmakemkv
cd libmakemkv
vim DEBIAN/control
# edit the depends to be libavcodec60 (>= 7:6.1.1), then :wq
find . -type f -not -path "./DEBIAN/*" -exec md5sum {} + | sort -k 2 | sed 's/\.\/\(.*\)/\1/' > DEBIAN/md5sums
cd ..
dpkg-deb -b libmakemkv libmakemkv1_1.17.6+ds-1_amd64.deb
sudo dpkg -i libmakemkv1_1.17.6+ds-1_amd64.deb
sudo apt install makemkv
Thanks again!

John.
prahal
Posts: 8
Joined: Wed Mar 13, 2024 12:42 am

Re: Unofficial packaging for Debian available

Post by prahal »

BenTheTechGuy wrote:
Fri Mar 15, 2024 7:12 pm
odysseus wrote:
Fri Mar 15, 2024 6:33 pm
I'm not a debian packaging expert, but I think the issue is that you have libmakemkv1 depending directly on the upstream reversion of libavcodec60 (=7:6.1.1-1) and not a slightly more generic version (>=7:6.1.1), i.e. drop the -1 so that the dmo package -dmo1 can be used, as you have for libavutil58 (>=7:6.0) which it seems to be happy with.

Thanks for your hard work!
I'm not deliberately choosing the strict dependency, that's something decided at build-time. Why libavcodec is the only one it gives a strict dependency, I don't know. I have been investigating this for a while as it causes me many headaches, but I'm pretty busy with life at the moment.

To make it depend on the special dmo package, you have to build with that repo enabled.
Made the analysis for the strict dependency to a debian version. It is due to libmakemkv1 using a private symbol from libavcodec60 and the libavcodec60:amd64.symbols file definition. That is /var/lib/dpkg/info/libavcodec60\:amd64.symbols starts with:

Code: Select all

libavcodec.so.60 libavcodec60 #MINVER#
| libavcodec60 (= 7:6.1.1-3)
(...)
 avpriv_mpegaudio_decode_header@LIBAVCODEC_60 0 1
and:

Code: Select all

nm out/libmakemkv.so.1 |grep LIBAV
(...)
U avpriv_mpegaudio_decode_header@LIBAVCODEC_60
which means that if this symbol is found (avpriv_mpegaudio_decode_header@LIBAVCODEC_60) the minimum version will be "0" and the deb symbol file id-of-dependency-template will be "1".
The deb symbol file being:

Code: Select all

library-soname main-dependency-template
        [| alternative-dependency-template]
(...)
 symbol minimal-version [id-of-dependency-template]
the id-of-dependency-template points to the first alternative dependency template which is number 1.
thuswhy "| libavcodec60 (= 7:6.1.1-3)" is added to the debian/libmakemkv1.substvars by dpkg-shlibdeps (called by "dh_shlibdeps -a" during the package build) which ends up in libmakemkv1 dependencies.

Seems the only way out is to get rid of the private function call from libmakemkv1:

Code: Select all

libffabi/src/ffabi.c:    err = avpriv_mpegaudio_decode_header(&s, hdr);
libffabi/src/mpegaudiodecheader.h:int avpriv_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header);
(the "avpriv_mpegaudio_decode_header(&s, hdr);" call is in libffabi/src/ffabi.c in ffm_mpa_decode_header)
Post Reply