Well, not sure where I messed up, or how to fix it, but here I am.
Authentication failed to initialize
CAN'T_LOCATE_MAKEMKVCON
Any ideas?
BTW, I'm a long-time Leawo user just come to Linux. All roads and many recommendations have brought me here.
Bob
Installation Error
Re: Installation Error
What distro are you using? I've been using OpenSUSE Tumbleweed for a long time and just had to do a fresh install, after trying to install the previous way I've found the only way I can install it now is using the Flatpak.
Re: Installation Error
Was your error similar to mine above?
viewtopic.php?f=3&t=31488
viewtopic.php?f=3&t=31488
Re: Installation Error
I see this too. It happens on distros like Nix (no relation to me
) where the makemkvcon and makemkv binaries are in different directories (usually with contents symlinked to /usr/bin). makemkv by default looks for the makemkvcon binary purely in the same directory as the makemkv binary, but can be coerced with a one-byte code change to do a crude but (barely) adequate path search for the binary in /bin, /usr/bin and /usr/local/bin: but even then it requires that the binary not be a symlink, which *again* breaks Nix and similar distros (like Guix).
I don't know why people persist in doing things like this rather than just using execvp(): it's not even reliable, as there are many reasons execve() or posix_spawn() can fail other than merely the file type being wrong (wrong architecture, ACLs, SELinux rules, etc), and you can perfectly well execute things that aren't regular files (such as symlinks, as here).
Best fixed by just using path searches for attempts to execute binaries with no path (like "makemkvcon"), which is literally a matter of calling posix_spawnp() in the appropriate place: to minimize risk we do it only if the binary name doesn't contain a slash, so execution using absolute paths and even relative paths don't do a path search (as now). The existing handrolled hardwired path search can be torn out later on: this is enough to make it work again.
Trivial patch against makemkv-oss 1.17.4:
I don't know why people persist in doing things like this rather than just using execvp(): it's not even reliable, as there are many reasons execve() or posix_spawn() can fail other than merely the file type being wrong (wrong architecture, ACLs, SELinux rules, etc), and you can perfectly well execute things that aren't regular files (such as symlinks, as here).
Best fixed by just using path searches for attempts to execute binaries with no path (like "makemkvcon"), which is literally a matter of calling posix_spawnp() in the appropriate place: to minimize risk we do it only if the binary name doesn't contain a slash, so execution using absolute paths and even relative paths don't do a path search (as now). The existing handrolled hardwired path search can be torn out later on: this is enough to make it work again.
Trivial patch against makemkv-oss 1.17.4:
Code: Select all
Index: 1.17.4/makemkvgui/src/api_posix.cpp
===================================================================
--- 1.17.4.orig/makemkvgui/src/api_posix.cpp 2023-05-29 22:06:31.000000000 +0100
+++ 1.17.4/makemkvgui/src/api_posix.cpp 2023-07-28 15:02:00.713239038 +0100
@@ -82,28 +82,8 @@
{
return -4;
}
- } else {
- char* p;
- int app_len;
-
- app_len = SYS_posix_getmyname(app_path,(int)(sizeof(app_path)-1));
- if (app_len<=0)
- {
- return -2;
- }
- app_path[app_len]=0;
- p=app_path+app_len;
- while(p!=app_path)
- {
- if(*p=='/')
- {
- p++;
- break;
- }
- p--;
- }
- strcpy(p,AppName);
- }
+ } else
+ strcpy(app_path, AppName);
strcpy(str_guiserver,"guiserver");
Index: 1.17.4/makemkvgui/src/spawn_posix.cpp
===================================================================
--- 1.17.4.orig/makemkvgui/src/spawn_posix.cpp 2023-05-29 22:06:31.000000000 +0100
+++ 1.17.4/makemkvgui/src/spawn_posix.cpp 2023-07-28 15:05:02.313416368 +0100
@@ -21,6 +21,7 @@
#include <sys/mman.h>
#include <fcntl.h>
#include <sys/time.h>
+#include <cstring>
#include <stdio.h>
#include <spawn.h>
#include <lgpl/sysabi.h>
@@ -100,7 +101,10 @@
}
}
- err = posix_spawn(&pid,argv[0],&spawn_actions,&spawn_attr,argv,envp);
+ if (strchr(argv[0], '/') != NULL)
+ err = posix_spawn(&pid,argv[0],&spawn_actions,&spawn_attr,argv,envp);
+ else
+ err = posix_spawnp(&pid,argv[0],&spawn_actions,&spawn_attr,argv,envp);
if (ppid)
{
Re: Installation Error
In Guix, using the default 'make install' targets for both the oss and bin components of makemkv, the binaries both end up under bindir, and using 'makemkv' just works:
However if you use 'libmmbd.so' standalone, it does its own weird binary search (not using $PATH) and the problem surfaces, and we can't do anything about that one since its code is not available for patching. The ugly workaround is to set the MAKEMKVCON environment variable, which it honors:
I hope the MakeMKV developers see this and can use execlp instead of their hand-rolled search, which would consider PATH when the executable file name does not contain a slash (see 'man 3 exec').
Code: Select all
$ find /gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/bin
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/bin/.makemkv-real
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/bin/makemkv
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/bin/makemkvcon
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/bin/mmccextr
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/bin/mmgplsrv
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/bin/sdftool
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/etc
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/etc/ld.so.cache
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/lib
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/lib/libdriveio.so.0
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/lib/libmakemkv.so.1
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/lib/libmmbd.so.0
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/MakeMKV
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/MakeMKV/appdata.tar
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/MakeMKV/blues.jar
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/MakeMKV/blues.policy
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/MakeMKV/eula_en_linux.txt
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/applications
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/applications/makemkv.desktop
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/doc
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/doc/makemkv-1.17.7
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/doc/makemkv-1.17.7/License.txt
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/128x128
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/128x128/apps
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/128x128/apps/makemkv.png
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/16x16
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/16x16/apps
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/16x16/apps/makemkv.png
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/22x22
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/22x22/apps
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/22x22/apps/makemkv.png
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/256x256
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/256x256/apps
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/256x256/apps/makemkv.png
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/32x32
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/32x32/apps
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/32x32/apps/makemkv.png
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/64x64
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/64x64/apps
/gnu/store/4bjvq007f6bfkskc3z19kvwfny77shwm-makemkv-1.17.7/share/icons/hicolor/64x64/apps/makemkv.png
Code: Select all
guix install makemkv vlc
export MAKEMKVCON=$(which makemkvcon) # get its location from PATH
export LIBAACS_PATH=$HOME/.guix-profile/lib/libmmbd
export LIBBDPLUS_PATH=$HOME/.guix-profile/lib/libmmbd
vlc /dev/sr0