Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Appimage download #2991

Open
Tcll opened this issue Apr 29, 2024 · 4 comments
Open

Appimage download #2991

Tcll opened this issue Apr 29, 2024 · 4 comments

Comments

@Tcll
Copy link

Tcll commented Apr 29, 2024

Given the closed source client is downloadable as an appimage, this FOSS client should compete with them rather than restrict users to various package managers only

It's not even easy to build an appimage myself from the package list because most listed repos don't provide binary downloads of their packages, and the ones that do provide binaries that are too new for my glibc

The closed source appimage was bult in 2018, so it'll run for me, but I would like to use a client I can trust

Appimages are very easy to build, just compile to a directory (nicotine.AppDir/), and write an AppRun:

#!/usr/bin/sh

HERE=${0%/*} # bash sucks, if this doesn't work, readlink isn't a portable solution either
export PATH="${HERE}:${HERE}/usr/bin/:${HERE}/usr/sbin/:${HERE}/usr/games/:${HERE}/bin/:${HERE}/sbin/${PATH:+:$PATH}"
export LD_LIBRARY_PATH="${HERE}/usr/lib/:${HERE}/usr/lib/i386-linux-gnu/:${HERE}/usr/lib/x86_64-linux-gnu/:${HERE}/usr/lib32/:${HERE}/usr/lib64/:${HERE}/lib/:${HERE}/lib/i386-linux-gnu/:${HERE}/lib/x86_64-linux-gnu/:${HERE}/lib32/:${HERE}/lib64/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
DEFAULT_XDG_DATA_DIRS='./share/:/usr/share/gnome:/usr/local/share/:/usr/share/'
export XDG_DATA_DIRS="${HERE}/usr/share/:${XDG_DATA_DIRS:-$DEFAULT_XDG_DATA_DIRS}"

# Other env locations may need to be defined for GTK and the like

nicotine "$@" # nothing else works well

You may also need to provide a .DirIcon before the actual appimage may build

Additional context:

1: I don't use package managers because they've repeatedly proven to be broken and unreliable, every last one of them

2: I won't use a Linux kernel >= 6.0 because I don't agree with the Rust movements and forced additions (memory safety takes skill, and Rust is not a solution for that)

Currently the kernel I use is 5.15 from Artix with glibc 2.35
but I'm looking to switch to SliTaz 5 which is 3.16 allegedly

(older means less bloat (no additional nonsense), which may mean less exploits if the kernel is selected and other exploits patched with care)

@mathiascode
Copy link
Member

We could look into providing AppImage downloads if there's demand. Until then, it's fairly easy to run Nicotine+ from git: https://github.com/nicotine-plus/nicotine-plus/blob/master/doc/TESTING.md#git

Alternatively, download the source code here and run the nicotine file: https://github.com/nicotine-plus/nicotine-plus/releases

@Tcll
Copy link
Author

Tcll commented May 12, 2024

I have no idea how I missed the part about it being written in Python... sorry about that 💀

But the bit about the GUI being GTK is something you may need an appimage for

I personally don't have a system python, though I do have 7 python interpreters on my system in a portable location...
Sadly though, that portability excludes GTK since Gnome doesn't provide any portable binary modules for whatever user un-friendly reason

While I do have my system packages for python and GTK, sadly extracting those to a local AppDir doesn't seem to give me something runnable...
(I can try again here, but after 4 failures, I'm afraid I don't have much hope for these packages)

@slook
Copy link
Member

slook commented May 20, 2024

@mathiascode
Copy link
Member

cx_Freeze (which we use to create our Windows and macOS packages) also added support for AppImage recently. I haven't looked into it yet, but reusing our existing setup script would be great.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

3 participants