Open RayneYoruka opened 9 months ago
Oh, no wonder. Was having the same issue but had no idea how to properly report it.
@RayneYoruka How was libndi-get.sh
run?
By design, if you just run it with no parameters then all it does is literally "get" the libndi and extract it into a tmp folder.
If you want to install it you have to run libndi-get.sh install
https://github.com/obs-ndi/obs-ndi/blob/master/CI/libndi-get.sh
if [ "$1" == "install" ]; then
sudo cp -P /tmp/ndisdk/lib/x86_64-linux-gnu/* /usr/local/lib/
sudo ldconfig
echo "libndi installed to /usr/local/lib"
ls -la /usr/local/lib/libndi*
echo
fi
install
copies the files to /usr/local/lib/
I don't see any need to symlink any files.
And yes, it leaves the tmp folder there; it would not make sense to "get" libndi and then delete it. User is responsible to deleting tmp on an as needed basis.
libndi-get.sh is just a simple script that is really just an example of how to get this working on most Linux systems. If something is unique to a distribution then a user is free to update the script and/or create a PR.
@RayneYoruka How was
libndi-get.sh
run? By design, if you just run it with no parameters then all it does is literally "get" the
sudo ./libndi-get.sh
Altho maybe it's worth trying with "sudo bash libndi-get.sh" there is some debate of what's the best way to run the scripts...
@RayneYoruka How was
libndi-get.sh
run? By design, if you just run it with no parameters then all it does is literally "get" the
sudo ./libndi-get.sh
Altho maybe it's worth trying with "sudo bash libndi-get.sh" there is some debate of what's the best way to run the scripts...
If sudo ./libndi-get.sh
is the only thing run, then this is working as expected.
Again, sudo ./libndi-get.sh
just literally "gets" the lib and leaves it in the tmp folder for the user to do whatever they want with it.
If the user wants to install libndi they need to sudo ./libndi-get.sh install
.
This should be added to the wiki / main page, it will avoid confusion!
@RayneYoruka How was
libndi-get.sh
run? By design, if you just run it with no parameters then all it does is literally "get" the
sudo ./libndi-get.sh
Altho maybe it's worth trying with "sudo bash libndi-get.sh" there is some debate of what's the best way to run the scripts...
I ran it like this also.
This should be added to the wiki / main page, it will avoid confusion!
Maybe.
The libndi-get.sh
is just my variation of Palakis' original https://github.com/obs-ndi/obs-ndi/commits/4d83c22d7ad4eefde7d259e6ad11b9e5a68e17f2/CI/package-ubuntu.sh
Even before I ever got involved in this project I always just looked at that script as an example of how to get libndi onto a Linux system. NDI/NewTek does not really make this very easy for Linux.
The libndi-get.sh
script was never intended to be a "supported product".
It is just an example.
The script is simple and I always assumed that any Linux user that is going to sudo
some random script would first look at it.
The contents of the script are simple and self explanatory.
Someone can tweak its intention however they want to install on their system.
I would not want to make any presumptions or indicate that the script as written is the one and only way to install libndi on all Linux systems.
I intentionally left these brittle steps vague so that others can tinker with it and figure it out on their own.
I also intentionally did not want it to default to installing the libs.
If someone wants to alter their system they have to intentionally specify the install
parameter knowing what it does based on the contents of the script.
I consider Linux a fairly expert system.
Experts should look at and understand a script before they blindly sudo
it.
Just my opinion.
This should be changed on the install page or more people will come seeking help as the plugin being requested by obs needs to be put on X folder, it's best to not complicate things more.
I consider Linux a fairly expert system. Experts should look at and understand a script before they blindly
sudo
it. Just my opinion.
Sadly this is not true and it's best to not have this type of approach, regardless of the user skill, using sudo is almost the same as "run with admin", you can't expect everyone to learn everything about it unless they are veteran admins or even even sysadmins.
if [ "$1" == "install" ]; then
sudo cp -P /tmp/ndisdk/lib/x86_64-linux-gnu/* /usr/local/lib/
sudo ldconfig
echo "libndi installed to /usr/local/lib"
ls -la /usr/local/lib/libndi*
echo
fi
You cannot expect people to read the code and figure out that it won't install the libs unless ran with "install" when the script is put in the github as "download and install", it's misleading, and even less to expect people to know bash scripting.
Okay so I'm gonna update this since we're "delayed".. (I mean since we can't release 6.0.0)
The script libndi-get.sh was updated and fixed but the .deb package still points to the old /usr/lib/libndi.so.5
and /usr/local/lib/libndi.so.5
...
My "temporary fix" before would work because the files "were" kept in /tmp/ and that was defintiely not the way to go so here is the next "fix" with the new ndi6 locations:
sudo ln -s /usr/local/lib/libndi.so.6 /usr/lib/libndi.so.5
sudo ln -s /usr/local/lib/libndi.so.6 /usr/local/lib/libndi.so.5
Okay so I'm gonna update this since we're "delayed".. (I mean since we can't release 6.0.0)
The script libndi-get.sh was updated and fixed but the .deb package still points to the old
/usr/lib/libndi.so.5
and/usr/local/lib/libndi.so.5
...My "temporary fix" before would work because the files "were" kept in /tmp/ and that was defintiely not the way to go so here is the next "fix" with the new ndi6 locations:
sudo ln -s /usr/local/lib/libndi.so.6 /usr/lib/libndi.so.5
sudo ln -s /usr/local/lib/libndi.so.6 /usr/local/lib/libndi.so.5
Hi! This works on my machine, thanks!
Okay so I'm gonna update this since we're "delayed".. (I mean since we can't release 6.0.0)
The script libndi-get.sh was updated and fixed but the .deb package still points to the old
/usr/lib/libndi.so.5
and/usr/local/lib/libndi.so.5
...My "temporary fix" before would work because the files "were" kept in /tmp/ and that was defintiely not the way to go so here is the next "fix" with the new ndi6 locations:
sudo ln -s /usr/local/lib/libndi.so.6 /usr/lib/libndi.so.5
sudo ln -s /usr/local/lib/libndi.so.6 /usr/local/lib/libndi.so.5
Thank you, this is what I needed. libndi 6 is installed, but obs-ndi is apparently looking for 5. I wish the error popup were more explicit about the exact file it can't find.
Update for everyone with this issue : This is fixed int he develop branch already. https://github.com/DistroAV/DistroAV/blob/develop/CI/libndi-get.sh
Waiting for the new release to have this available.
I create this issue https://github.com/DistroAV/DistroAV/issues/1038 and also try with @RayneYoruka suggestion and I still got NDI Runtime not found issue :(
Oh nvm, I tried this https://github.com/DistroAV/DistroAV/issues/949#issuecomment-2143513159 and it's working now
I fixed the wrong symlink statement in #1040
Operating System Version
Linux mint 21 / Ubuntu 22.04
OBS Version
30.x
NDI Tools Version
No response
Describe the bug
Obs fails to load the NDI runtime in a clean distro install after running the libndi-get.sh script
Obs loading log: [obs-ndi] load_ndilib: Trying '/usr/lib/libndi.so.5' [obs-ndi] load_ndilib: Trying '/usr/local/lib/libndi.so.5'
After you run the libndi-get.sh it leaves the libraries on /tmp/ndisdk/lib/x86_64-linux-gnu/ ,
sudo ln -s /tmp/ndisdk/lib/x86_64-linux-gnu/libndi.so /usr/lib/libndi.so.5 sudo ln -s /tmp/ndisdk/lib/x86_64-linux-gnu/libndi.so /usr/local/lib/libndi.so.5
Adding a symlink from the tmp files might not be the best practice, perhaps moving them to the folder that OBS is trying to load them from?
This might be the best to add to the libndi script to streamline the install for Linux users
Steps to reproduce
Clean distro install, obs via repository, dpkg obs-ndi 4.13
Expected behavior
No response
Screenshots
No response
Additional context
No response