[SOLVED] how come yt-dlp on a terminal returns bash: yt-dlp: command not found even though I installed it with wget? debian 13
from arsus5478@lemmy.ml to linux@lemmy.ml on 20 Aug 17:33
https://lemmy.ml/post/34965741

debian 13.0, downloaded yt-dlp with wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O ~/.local/bin/yt-dlp

the python script is in that directory, but if I execute yt-dlp on the terminal it returns bash: yt-dlp: command not found

what should I do?

SOLVED: add .local/bin to your $PATH

#linux

threaded - newest

NauticalNoodle@lemmy.ml on 20 Aug 17:39 next collapse

Have you consulted the ‘README’ that is both in the yt-dlp directory as well as the github regarding installation?

imsufferableninja@sh.itjust.works on 20 Aug 17:39 next collapse

Is ~.local/bin in your PATH?

7EP6vuI@feddit.org on 20 Aug 20:55 collapse

i think this is the correct question to ask. did you just create ~/.local/bin folder? you can look at the end of ~/.profile that this will only be added to $PATH if the folder exists.

the easiest way is to log out and log in (no restart necessary!)

otherwise you can also execute source ~/.profile and then yt-dlp should be available.

the chmod +x tip from the other comments could also be necessary!

anamethatisnt@sopuli.xyz on 20 Aug 17:42 next collapse

Did you make it executable?
chmod a+rx ~/.local/bin/yt-dlp # Make executable

What is the output of your $PATH? (feel free to anonymise usernames)
echo $PATH

Vittelius@feddit.org on 20 Aug 18:25 next collapse

I found pipx the easiest way to install and manage a current ytdlp installation

sudo apt install pipx
pipx ensurepath

pipx install yt-dlp

Yes I know, it’s an additional package manager, but it actually is a package manager and will therefore ensure the setup is correct

onlooker@lemmy.ml on 20 Aug 18:30 next collapse

I’ll assume you’re new to Debian, so apologies if this is not true. The reason I say this is because generally speaking, “installing with wget” isn’t how one is supposed to install software in Debian, using a program called apt is. yt-dlp is available in Debian 13’s repositories. What I suggest doing is running apt install yt-dlp as root. That way the app will be installed globally, meaning it’ll work without the system spitting out the error you’ve described. And on another positive note, the app will get updated automatically whenever you upgrade the system.

If this isn’t for you, suggestions from other users here are valid and helpful.

data1701d@startrek.website on 20 Aug 20:23 collapse

Do note that the yt-dlp version in stable will go out of date; I recommend installing it from the backports repo so it keeps updating.

Auster@lemmy.world on 20 Aug 18:37 next collapse

Don’t Python scripts need python at the beginning of the command that summons them?

Alternatively, you can make an alias to ~/.bashrc: alias yt-dl="python3 /path/to/yt-dlp [options] " And replace [options] for flags you may want to always use, if any. Or delete if you just want the raw script to be tied to a terminal command.

Then reload .bashrc by running either source .bashrc or . .bashrc

SteveTech@programming.dev on 20 Aug 23:48 collapse

Don’t Python scripts need python at the beginning of the command that summons them?

Not if the script has a python shebang (e.g. #!/usr/bin/env python3), then it will run like any other script.

Auster@lemmy.world on 21 Aug 18:32 collapse

Wasn’t aware of that. Thanks for explaining!

Llituro@hexbear.net on 20 Aug 18:57 next collapse

what you should do: delete that file and then listen to onlooker’s advice about using apt to install software when you can

what is happening: an arbitrary file you create to hold the contents of some data you streamed off the internet, for very good reason, is not automatically treated as an executable, partly because for all wget knows, it’s just a photograph or some text. to mark a file as executable, you need to run chmod +x /path/to/script/file to add to the file’s permissions. to learn more, and you should, please learn about file permissions and how those work on linux systems.

BombOmOm@lemmy.world on 20 Aug 19:43 next collapse

I believe you simply downloaded the file to ~/.local/bin/yt-dlp, you did not install it. You need to either add that location to your path or you need to cd to that folder in terminal, then run the command. It will check things in the current folder when trying to run executables.

ferric_carcinization@lemmy.ml on 20 Aug 19:55 collapse

Unlike Windows, on Linux you need to run ./<command> instead of just <command> for executables in you current directory.

joyjoy@lemmy.zip on 20 Aug 20:09 next collapse

You also need to chmod +x path files downloaded from the internet to make it executable.

Tanoh@lemmy.world on 21 Aug 02:14 collapse

Unless you have . in your $PATH

lemming741@lemmy.world on 21 Aug 02:43 collapse

What a mad lad idea

infjarchninja@lemmy.ml on 20 Aug 20:54 next collapse

Hey arsus5478

There are instructions to install with wget on the git page as you mention and you seem to have folowed that guide, but the easiest way is to use APT.

For debian I would add the PPA repo:

There are clear instruction on the git page to install from apt.

About half way down the page you will see APT.

github.com/yt-dlp/yt-dlp/wiki/Installation

APT

You can download and install yt-dlp for recent Ubuntu and other related Debian-based distributions by adding this PPA

Add ppa repo to apt

sudo add-apt-repository ppa:tomtomtom/yt-dlp

Update package list

sudo apt update

Install yt-dlp

sudo apt install yt-dlp

Your system’s package manager will now automatically download the correct dependencies and keep the package updated with the rest of your system whenever you update:

Done

this is a good introduction to adding an external PPA repo to apt and getting to know debian

Mikelius@lemmy.ml on 21 Aug 05:31 next collapse

Add

PATH="${PATH}:~/.local/bin"

To your .zhrc or .bashrc (whatever you use) and either source the file or open a new terminal. Should be as simple as that (assuming +x permissions)

Nemoder@lemmy.ml on 21 Aug 06:50 next collapse

um, isn’t it easier to just:
sudo apt install yt-dlp
yt-dlp -U

stupid_asshole69@hexbear.net on 21 Aug 16:09 collapse

The people telling you to use apt are pointing you in the wrong direction. Usually it’s better to use apt but sometimes with software that updates very often for a good reason like yt-dlp you can end up with old nonfunctional versions. Apt versions of yt-dlp are often several steps behind the arms race and just fail to work in weird ways.

The person telling you to add .local/bin to your $PATH is the one you should be listening to. The program isn’t launching because when you type it in, the terminal only looks in the places defined in the environment variable $PATH to see if the thing you typed corresponds to a program.

Once you have added the install location to path, be sure to add -U to your invocations of yt-dlp especially if they’re running automatically. The -U flag causes yt-dlp to try to update itself before attempting to do whatever you asked so things will almost never fail because of an old version.

arsus5478@lemmy.ml on 21 Aug 18:43 collapse

thank you. I did what you suggested

stupid_asshole69@hexbear.net on 21 Aug 19:05 collapse

Hell yeah

Thanks @Mikelius@lemmy.ml