A new user here, please do excuse me if I’m not in the proper category. For context, I’m using Ubuntu Noble. The current yt-dlp version on the repository is at version 2024.04.09. I’ve attempted to download media using the utility as intended but it fails to go through.
[youtube] Extracting URL: https://www.youtube.com/watch?v=V9Wsm0hlLUI
[youtube] V9Wsm0hlLUI: Downloading webpage
[youtube] V9Wsm0hlLUI: Downloading ios player API JSON
[youtube] V9Wsm0hlLUI: Downloading android player API JSON
[youtube] V9Wsm0hlLUI: Downloading player 9599b765
WARNING: [youtube] V9Wsm0hlLUI: Signature extraction failed: Some formats may be missing
ERROR: [youtube] V9Wsm0hlLUI: Sign in to confirm you’re not a bot. This helps protect our community. Learn more
I’ve noted similar issues before, with a different message.
My intuition told me that maybe this is an issue that the project have already dealt with on their newer versions. It doesn’t seem that I was far off either. I’ve installed Graham Morrison’s Snap build that was available, which was at version 2025.01.26 (stable channel). The download went through as intended.
I do recognize that there is likely a Personal Package Archive available for this, and this is relatively not that complex in comparison with the other Snap-only packages that Ubuntu deliver. Nonetheless, could this fall under the similar logic as this?
These packages cannot have a dependency on a Snap package as .deb packages, by policy, cannot have dependencies on Snap packages, mostly because most packages are automatically synced from Debian, which doesn’t use Snaps by default, but also because there’s simply no mechanism to have a .deb package have a Snap package as a dependency.
The difference for chromium, firefox, and thunderbird here is that they had no reverse dependencies, and the .deb packages of those packages simply use a script to install the Snaps because they’re now meant as transitional packages to install those Snaps.
So, unfortunately, what you’re ultimately asking for is impossible. While the yt-dlp snap is kept more up-to-date, updating it in the repositories of stable releases is a much more difficult task since stable releases only allow for security and bugfix updates as opposed to whole feature updates which yt-dlp often contains.
A wholesale backport of the .deb package is possible, and has been suggested, but the maintenance requirement on that would be high.
Another way of installing yt-dlp and keeping it up to date is to use pip since yt-dlp is written in Python and available in the PyPI .
A simple pip3 install yt-dlp installs the program into ~/.local/bin (and it’s dependencies into ~/.local/lib).
To update you’d use pip3 install -U yt-dlp. Do not use ‘sudo’ with either of those commands, doing so would install it into system directories and potentially mess up your system’s python libraries to the point where some quite important things no longer work.
Using this method I just upgraded my yt-dlp to yt-dlp-2025.3.31
One is the Advanded Package Tool for Debian and Ubuntu, the other is the Package Installer for Python which can install packages from Python’s repository. The selection there is somewhat limited by comparison, and should never be done using sudo. pip is best used to install to your user.
As yt-dlp is python-based, you can install it from pip, but a word of warning: you will end up with two versions of yt-dlp installed if you have any .deb packages (installed using apt) that Depend or Recommend yt-dlp. Additionally, those packages may not be compatible with a newer version of yt-dlp, or even use it as they might want an absolute path to where all binary packages are contained (/usr/bin).