sebasmonia / nordvpn-client

Unofficial NordVPN client - an excuse to practice Common Lisp and a way to manage my VPN on Fedora Silverblue
MIT License
11 stars 0 forks source link

Steam Deck/SteamOS missing libcrypto.so.3 and libssl.so.3 #2

Open Art1f4ct opened 1 year ago

Art1f4ct commented 1 year ago

I apologize for the messy issue. I tried your prebuilt binary on Fedora Kinoite and it worked like a breeze, which made me hopeful that the binary would also work on SteamOS (which uses an immutable file system similar to Silverblue/Kinoite). Running the binary in the terminal gives me two errors, which I'm guessing are caused by SteamOS missing some libraries. I am prompted with the ability to continue program execution, and if I continue past these two errors the GUI appears (making me hopeful that all other dependencies are satisfied). I have basically no knowledge of programming so I don't know if this is the end of the road (besides modifying the SteamOS image) or if there's another way to solve these dependencies such as providing them directly.

The full output from my terminal is below. Note that I had not yet saved my NordVPN credentials, but I don't believe that affects the output.

(1)(deck@jSTOS ~)$ ~/.local/bin/nordvpn-client

debugger invoked on a SIMPLE-ERROR in thread

<THREAD "main thread" RUNNING {1000550083}>:

Error opening shared object "libcrypto.so.3": libcrypto.so.3: cannot open shared object file: No such file or directory.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name): 0: [CONTINUE ] Skip this shared object and continue. 1: [RETRY ] Retry loading this shared object. 2: [CHANGE-PATHNAME] Specify a different pathname to load the shared object from. 3: [ABORT ] Exit from the current thread.

(SB-SYS:DLOPEN-OR-LOSE #S(SB-ALIEN::SHARED-OBJECT :PATHNAME #P"libcrypto.so.3" :NAMESTRING "libcrypto.so.3" :HANDLE NIL :DONT-SAVE NIL)) 0] 0

debugger invoked on a SIMPLE-ERROR in thread

<THREAD "main thread" RUNNING {1000550083}>:

Error opening shared object "libssl.so.3": libssl.so.3: cannot open shared object file: No such file or directory.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name): 0: [CONTINUE ] Skip this shared object and continue. 1: [RETRY ] Retry loading this shared object. 2: [CHANGE-PATHNAME] Specify a different pathname to load the shared object from. 3: [ABORT ] Exit from the current thread.

(SB-SYS:DLOPEN-OR-LOSE #S(SB-ALIEN::SHARED-OBJECT :PATHNAME #P"libssl.so.3" :NAMESTRING "libssl.so.3" :HANDLE NIL :DONT-SAVE NIL)) 0] 0

sebasmonia commented 1 year ago

Hi Art1f4ct! I am over the moon that the binary worked in Kinoite :) Specially given the other open issue where it didn't work in Workstation :(

You are correct that this error is unrelated to the credentials. You are missing a package, OpenSSL, which I find strange is not installed in SteamOS. Looking for information on how to install packages on the Deck, I found these two:

https://www.reddit.com/r/SteamDeck/comments/xgslv9/howto_installing_pacman_packages_in_userspace/
https://steamdecktips.com/blog/install-archlinux-packages-on-the-steam-deck

It seems you can install packages but they do get wiped on updates. Link 2 seems the easiest to just try.

I really should (try to) make a Flatpak out of this thing...

sebasmonia commented 1 year ago

As per this article https://blog.cddr.org/posts/2023-02-20-distributing-binaries-cl-ffi/ the issue could also be that the version of SSL libs that I load when I build my binaries doesn't match the ones in SteamOS. Will keep digging...

sebasmonia commented 1 year ago

If the last issue is the problem, then building the binary yourself would make it work. Will keep looking into the Flatpak option!

Art1f4ct commented 1 year ago

That's a shame that it isn't working in Workstation, trying to make a graphical application run on so many different systems sounds like a pain. I'd hope Flatpak would make it easier for developers; as a user, it's great, besides many flatpaks restricting their own file access too much.

The second article you linked sounds akin to what most people needing to install Arch packages on their Deck do. I had no idea that it was possible to tell pacman to install things into a custom folder, but it's a shame that it's such a messy solution. The last link sounds more akin to what I was thinking of, kind of like how you bundle tclkit, but that is both more work for you and also messier than having working system libraries (and I'm guessing security issues because we're dealing with encryption?).

I wish I could help more but like I said I have little understanding of programming. LMK if I can help you test things though. I'll see if there's a reasonable way for me to try to build it on my Deck.

sebasmonia commented 1 year ago

Yep, like you suggest, bundling OpenSSL in this thing doesn't seem like the best approach. That said, it is exactly what I just did! LOL?

Check out in the latest version this subdirectory: https://github.com/sebasmonia/nordvpn-client/tree/main/bin that were generated using a different Common Lisp packaging tool. It pulled all dependencies automagically.

Art1f4ct commented 1 year ago

Tried it on my Deck by replacing the old bin folder with the new one (replaced binaries and added libraries), but got an error message that seems to suggest that the shared libraries don't exist where I put them? IDK computers are weird, see screenshot for terminal output. Screenshot_20230405_205442

sebasmonia commented 1 year ago

WOW that was fast. Try the following:

$ LD_LIBRARY_PATH=. ./nordvpn-client

(Source: https://serverfault.com/a/699902)

If that works we can figure out a script or desktop launcher to make it seamless.

Art1f4ct commented 1 year ago

Nope, same output as before. It's weird that it seems as though it's looking for the file in the correct location but not finding the file. I wonder if I'm doing something silly, but the terminal is definitely in the correct folder, everything is in that same folder, and nothing has been renamed. Screenshot_20230405_221805

sean-work commented 1 year ago

It's not as simple as renaming the 'libcrypto.so.3.0.8' file in your directory to libcrypto.so.3 ? As that's the name of the file it says it can't find? I'm running Bazzite on my deck, not steamos, otherwise I'd report my findings.

andyktaylor commented 1 year ago

Works well on SteamDeck running Bazzite.. thanks for this!

sebasmonia commented 1 year ago

Glad it works for you @andyktaylor !!! I never managed to make it work for @Art1f4ct, sadly, and nowadays I use to Mullvad. But if there are fixes to try, I am happy to give them a try.

andyktaylor commented 10 months ago

Just tested on a Steamdeck running a freshly installed SteamOS 3.5, the app runs fine, didn't have to install any dependancies or anything. Just saved the github folder to my SD card, copied the Nordvpn file in the Binary folder and dropped it on my desktop, run the scripts to save name and password and then opened the app. Works a treat!

andyktaylor commented 10 months ago

Nope, same output as before. It's weird that it seems as though it's looking for the file in the correct location but not finding the file. I wonder if I'm doing something silly, but the terminal is definitely in the correct folder, everything is in that same folder, and nothing has been renamed. Screenshot_20230405_221805

Working fine for me in SteamOS 3.5 - maybe give it another shot

sebasmonia commented 9 months ago

@Art1f4ct if you are running the latest version of SteamOS, maybe it will work now?

Thank you @andyktaylor for your help! And @sean-work too (I missed your earlier message it seems).