chaldea-center / chaldea

Chaldea - Yet Another Material Planner and Battle Simulator for Fate/Grand Order aka FGO
https://docs.chaldea.center
GNU Affero General Public License v3.0
347 stars 26 forks source link

[Bug]: libappindicator3.so.1 missing #85

Closed Hoithmach closed 1 year ago

Hoithmach commented 1 year ago

What happened?

This may be outside the scope of the project. The application will fail to run if the libappindicator package is not installed.

$ tar -xzvf chaldea-2.3.0-linux.tar.gz
$ ./chaldea
./chaldea: error while loading shared libraries: libappindicator3.so.1: cannot open shared object file: No such file or directory

Resolved by installing libappindicator and then the application will launch as intended.

I am unable to select Linux as the platform on the bug report form.

Platform

All

Device Info

Linux 6.1

Which game server is related to this issue?

No response

App Version

2.3.0+938

Relevant log output

No response

narumi147 commented 1 year ago

It seems libappindicator is removed in some Debian systems recent years. This is used by a plugin to show icon in system tray. The feature is requested by one user. But I wonder does the app should keep it in system tray and background? 🤔

Hoithmach commented 1 year ago

Thank you for your quick response. The system tray does work correctly if libappindicator is installed. I can put the application into the background by selecting "Hide", and then return it to foreground with "Show". There are no problems with this.
If libappindicator is not installed the application will not start. For users that launch the program graphically (e.g. by clicking on the executable) the cause of the problem may not be obvious.

There could be an additional line in README.md that warns the user they need to have the package. Alternatively, a popup window or notification when the application is launched to tell the user it is not installed may be more appropriate. The problem with these solutions is if the user updates from 2.2.6 to 2.3.0 using the in-app update dialog then they will not see the additional requirement and may be confused as to why the application does not run afterwards (this is what happened to me). I am not sure what the preferred way of addressing this is. What do you think?

I did not realise libappindicator package is named differently in Debian repositories to how it is on my distribution, so some of my comment in the issue post was incorrect. Apologies. I have edited it.

narumi147 commented 1 year ago

Your original solution by installing libappindicator-gtk3 is correct. libappindicator I talked here is just its common name, libappindicator-gtk3 is the actual distribution package.

Didn't check(don't have linux) but sudo apt install libappindicator3-1 may also work. If you can check it by uninstall gtk3 and install 3-1, that would help!

I do add a readme.txt besides the chaldea executable just now. There may be more exceptions when running on linux. But we know linux users are much fewer and I don't have desktop Linux, so few feedback yet.

Hoithmach commented 1 year ago

Thank you for the clarification of the naming.

I have just tested and the libappindicator3-1 package does work as a solution and the application launches successfully afterwards (although it seems to alias to libayatana-appindicator3-1 which is the actual package that installs).

$ ./chaldea
./chaldea: error while loading shared libraries: libappindicator3.so.1: cannot open shared object file: No such file or directory
$ sudo apt install libappindicator3-1
...
Note, selecting 'libayatana-appindicator3-1' instead of 'libappindicator3-1'
The following additional packages will be installed:
  libayatana-ido3-0.4-0 libayatana-indicator3-7 libdbusmenu-glib4 libdbusmenu-gtk3-4
...
$ ./chaldea
(success)

A readme note should hopefully alert any other users of how to solve the issue if they encounter it. Perhaps it would also be appropriate to go in the Attentions section of your installation documentation?

Your continued support of the linux version of this program despite its small numbers of users is much appreciated. I am not currently aware of any other linux-specific issues, but will keep a look out for anything.

narumi147 commented 1 year ago

Added the readme, you can have a check in beta release after building completed.

Will also update docs later.

If you find any more linux specific setups/exceptions, be glad to receive your message!

Hoithmach commented 1 year ago

I've just tested once more and verified the package naming properly. libappindicator-gtk3 is the package name on ArchLinux, but does not carry over to Debian-based environments. Debian, Ubuntu and Mint all definitely have libappindicator3-1 in their repositories, and installing it on Debian (11) as I described here does successfully fix the issue. I should've clarified this before, sorry.

As libayatana-appindicator3-1 is pulled by installing libappindicator3-1 and the project only officially supports Debian, maybe it would be best to state only sudo apt install libappindicator3-1 and remove the other two lines entirely?

narumi147 commented 1 year ago

Then just follow your sense, I have few experience on linux and only use server version ubuntu.

Hoithmach commented 1 year ago

In that case, if you are happy with the adjustments I made, I think we have resolved this issue fully. Should I open a PR for the commit above or would you rather just make the changes alongside when you update the docs? Thank you for your time.

narumi147 commented 1 year ago

pr please, I will check again tomorrow. 😪

narumi147 commented 1 year ago

In flutter's doc Supported Platforms, it said supports Linux Debian, so I assume it's not supported in any non-debian system such as Arch/Fedora, right? But in the flutter installation doc for dev, it only said Linux 64-bit. If it is truly only available for Debian, then is's fine to just declare libappindicator3-1 in readme.

Hope you can help figure it out, thanks!

Hoithmach commented 1 year ago

Unfortunately I'm not sure I can give a completely definitive answer. It officially states support for Debian as a "deployment platform" but I am unsure of actual cross-distribution support for simply running the application. I've never encountered any issues running chaldea on Arch besides this one, however that's not to say for certain that it counts as actual support.

If the application is built and tested within a Debian-based environment (Ubuntu, I think) then perhaps it is safest to keep the official statement as only Debian? I have seen software projects before that state that they only officially support Debian, but the software may be run in other Linux environments at the individual user's own discretion. Likely not the answer you were looking for but I hope some of what I said might be helpful. What are your thoughts on this?

narumi147 commented 1 year ago

Since you are using ArchLinux and chaldea can run on it, so I think it's fine to add it as an extra hint? similar with the first time I did.

# Debian
sudo apt install libappindicator3-1
# ArchLinux
# sudo apt install  libappindicator-gtk3
Hoithmach commented 1 year ago

If you are happy to extend support to Arch then that's great, and by all means go ahead. Even still, it is worth keeping potential caveats in mind going forward:

Since there are occasionally strange incompatibilities between different Linux environments I think it is up to how willing you are to offer wider support to other distributions. I don't want to inadvertently create more work for you if, for example in 6 months' time hypothetically, a future update makes some things break on a non-Debian system. I could list reasons why I think it will probably be okay but I by no means have complete understanding, nor foresight into the direction of future development, so I don't want to offer false confidence. I hope that makes some sense?

I could check Fedora too later if you would like, since you mentioned it before?

narumi147 commented 1 year ago

You should be right. I have no guarantee to make it work on other linux distributions. Eeven for Debian, still lack of testing.

Would be better to leave it debian only in linux/readme.txt. But add another warning in docs below Installation-Supported platforms. sth like "Other linux distributions are not tested, may be not well supported." what do you think?

Hoithmach commented 1 year ago

Yes, something like that sounds sensible. It could even be an extra note such as:

Platform Minimum Version

... | Linux | Debian 10 & above¹| ...

¹ Chaldea on Linux is not officially supported outside of Debian-based Linux environments at this time, however users of other Linux variants may be successful in running the application on their system.

I'm sure you can phrase it better than I can.

This invites users of other flavors of Linux to attempt using Chaldea, but also hands off responsibility to the user of an unsupported distribution to make sure they have the correct environment for running the application.

Since v2.3.0, desktop app can be shown in system tray, and libappindicator is required in linux system. If it doesn't exist in your system, please install it before launching chaldea app, otherwise startup will fail silently.

This line from the docs you have written is already helpful for all Linux users as it prompts them to look for the libappindicator package in their repositories. For Arch, this is as simple as searching that keyword with pacman -Qs and I find what I'm looking for. Then for the officially supported Debian environments you have the tested example with the correct package name for Debian below in the README itself.

narumi147 commented 1 year ago

Slightly updated in docs-installation according to your suggestion.

And what about add the docs-installation link in linux/README under the headline?

Hoithmach commented 1 year ago

The changes in docs-installation look good. I'd agree about adding a link in the readme; the more visibility the better. Thank you for taking the time to work on the documentation in such detail.

narumi147 commented 1 year ago

Added link in pr, if that's fine, I will merge it

Hoithmach commented 1 year ago

Looks good to me. :+1:

narumi147 commented 1 year ago

Thanks for testing and updating 💯