list.pref.chroot
to install only mpv from unstable using APT Pinning in case somebody else is interested:"Package:
" line is way too long to post here, it includes about 400 packages in total, just to install mpv dependencies. (This does not include recommended or suggested packages)`apt-cache depends --recurse
` command I mentioned before fails to do this which is why it caused errors.Hey man,apparently APT Pinning really does not account for release specific dependencies. (which is insane)If you pin a package from a release (unstable) whose dependencies (versions) are not in the target release (stable), there will be a dependency error just like mine.The only reason why the Pinning example given in Debian Live Manual works is because all live-* packages (and their dependencies) in trixie have the same version numbers in unstable:Package: live-*
Pin: release n=sid
Pin-Priority: 600
Package: *
Pin: release n=sid
Pin-Priority: 1Any other time you want to build stable or an older target release, while including only a single or a few packages from unstable, you literally cannot use APT Pinning. Because it will either return the dependency error (if Priority is lower than target release), or simply install every single package from unstable (if Priority is higher than target release).So from what I understand, the only possible way to install only a single or couple packages from unstable, while installing everything else from stable is with a chroot hook that specifically installs the package from unstable with apt-get {/target_release} and gets all the dependencies from unstable too.APT Pinning cannot do this, if I am correct.Am I?RegardsOn Thursday, August 1st, 2024 at 7:19 AM, maria.shrivinski <maria.shrivinski@proton.me> wrote:
Hey man,apparently APT Pinning really does not account for release specific dependencies. (which is insane)If you pin a package from a release (unstable) whose dependencies (versions) are not in the target release (stable), there will be a dependency error just like mine.The only reason why the Pinning example given in Debian Live Manual works is because all live-* packages (and their dependencies) in trixie have the same version numbers in unstable:Package: live-*
Pin: release n=sid
Pin-Priority: 600
Package: *
Pin: release n=sid
Pin-Priority: 1Any other time you want to build stable or an older target release, while including only a single or a few packages from unstable, you literally cannot use APT Pinning. Because it will either return the dependency error (if Priority is lower than target release), or simply install every single package from unstable (if Priority is higher than target release).So from what I understand, the only possible way to install only a single or couple packages from unstable, while installing everything else from stable is with a chroot hook that specifically installs the package from unstable with apt-get {/target_release} and gets all the dependencies from unstable too.APT Pinning cannot do this, if I am correct.Am I?RegardsOn Thursday, August 1st, 2024 at 6:41 AM, Andreas Heinlein <aheinlein@gmx.com> wrote:
Hello,
it does make sense in the way that manually installing e.g. libavcodec61 with "apt-get install libavcodec61" and automatically installing it as a dependency produces the same results.
What was apt expected to do if something else already had pulled in libavcodec61 from bookworm? Upgrade it, potentially breaking the other package? Leave it alone? You need to tell it somehow.
I know this is sometimes tricky. I ended up multiple times downloading the source package from sid and rebuilding it for the current stable just to solve these dependency problems.
Bye
AndreasAm 1. August 2024 08:17:59 MESZ schrieb "maria.shrivinski" <maria.shrivinski@proton.me>:Hello Andreas, thanks for the reply!The problem with adding mpv's dependencies tolist.pref.chroot
is that the same error will occur again for the dependencies of those dependencies.libasound2t64 : Depends: libasound2-data (>= 1.2.12-1) but 1.2.8-1 is to be installedlibavcodec61 : Depends: libcodec2-1.2 (>= 1.2.0) but it is not installableDepends: libdav1d7 (>= 1.1.0) but it is not installableDepends: libglib2.0-0t64 (>= 2.12.0) but it is not installableDepends: libjxl0.9 (>= 0.8.0) but it is not installableDepends: librav1e0.7 (>= 0.5.1) but it is not installableDepends: libsnappy1v5 (>= 1.2.1) but 1.1.9-3 is to be installedDepends: libsvtav1enc2 (>= 2.1.0+dfsg) but it is not installableDepends: libvpl2 (>= 2023.3.0) but 2023.1.1-1 is to be installedDepends: libvpx9 (>= 1.12.0) but it is not installableDepends: libwebp7 (>= 1.4.0) but 1.2.4-0.2+deb12u1 is to be installedDepends: libwebpmux3 (>= 1.4.0) but 1.2.4-0.2+deb12u1 is to be installedDepends: libx264-164 (>= 2:0.164.3108+git31e19f9)............I tracked down every single dependency (and their dependencies) with this:apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances mpv | grep "^\w" | sort -u
Then I added them tolist.pref.chroot but the error always comes back for something else.
Package: mpv libasound2t64 libavcodec61 libavdevice61 libavfilter10 libavformat61 .......
I found a dirty fix with alive.chroot.hook
that installs mpv from unstable and includes the correct dependencies from unstable too:apt-get install -y mpv/unstableBut that's not a solution. I would really like to understand why APT Pinning does not or cannot include the dependencies of a package from the release it is pinned to. Doesn't even make any sense tbh.On Wednesday, July 31st, 2024 at 8:56 PM, Andreas Heinlein <aheinlein@gmx.com> wrote:
Hello,
you will have to manually pin the dependencies as well. So it should read:
Package: mpv libasound2t64 libavcodec61 libavdevice61 libavfilter10 libavformat61
Pin: release n=sid
Pin-Priority: 600
That should do the trick.
Bye
AndreasAm 31. Juli 2024 21:06:22 MESZ schrieb "maria.shrivinski" <maria.shrivinski@proton.me>:Hello, I would like to build with bookworm as the distribution while installing the package mpv and ffmpeg from sid (unstable).According to the Debian Live Manual this should do the trick:config/archives/live.list.chroot
deb http://deb.debian.org/debian sid mainconfig/archives/live.pref.chroot
Package: mpvPin: release n=sidPin-Priority: 600Package: *Pin: release n=sidPin-Priority: 1This gives a low version error because live-build tries to install mpv's dependencies from bookworm release, which has default Priority 500, while sid now only has Priority 1 for anything but mpv.The following packages have unmet dependencies:mpv : Depends: libarchive13t64 (>= 3.4.0) but it is not going to be installedDepends: libasound2t64 (>= 1.0.27)Depends: libavcodec61 (>= 7:7.0)Depends: libavdevice61 (>= 7:7.0) but it is not going to be installedDepends: libavfilter10 (>= 7:7.0)Depends: libavformat61 (>= 7:7.0).......If I set the sid Priority higher or equal to bookworm's, all packages are installed from sid because of higher version numbers.Is there a way to only install mpv including its dependencies from sid, while all other packages are still installed from bookworm release?Thank you so much and have a nice day!