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

"AM" 7.8: goodbye libfuse2! #856

Merged
merged 17 commits into from
Aug 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion APP-MANAGER
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash

AMVERSION="7.7"
AMVERSION="7.8"

# Determine main repository and branch
AMREPO="https://raw.githubusercontent.com/ivan-hc/AM/main"
Expand Down
45 changes: 35 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1004,21 +1004,46 @@ https://github.com/ivan-hc/AM/assets/88724353/4d26d2d7-4476-4322-a0ab-a0a1ec14f7

__________________________________________________________________________
### Convert Type2 AppImages requiring libfuse2 to New Generation AppImages
Option `nolibfuse` "just tries" to convert old Type2 AppImages asking for "libfuse2" into new generation AppImages:
Option `nolibfuse` converts old Type2 AppImages asking for "libfuse2" into new generation AppImages:
```
am nolibfuse $PROGRAM
```
or
```
appman nolibfuse $PROGRAM
```
in this example, I'll convert Libreoffice and Kdenlive:

https://github.com/user-attachments/assets/494d0d92-f46c-4d4e-b13d-f1d01168fb8f

As you can see, the file sizes are also smaller than before.

This process only works for old AppImages that still depend on "libfuse2", other files will be ignored.

The original AppImage will be extracted using the `--appimage-extract` option, and then repackaged using `appimagetool` from https://github.com/AppImage/appimagetool

#### Updating converted AppImages
The `nolibfuse` option adds the following lines at the end of the AM-updater script
```
echo y | am nolibfuse $APP
notify-send "$APP has been converted too! "
```
or
```
echo y | appman nolibfuse $APP
notify-send "$APP has been converted too! "
```
so if an update happens through "comparison" of versions, the converted AppImage will be replaced by the upstream version and then the `nolibfuse` option will automatically start the conversion (prolonging the update time, depending on the size of the AppImage). In this example, I update all the apps, including the original Avidemux, that is an old Type2 AppImage:

https://github.com/ivan-hc/AM/assets/88724353/06b8e946-ef02-4678-a5a0-d8c2c24c22f9
https://github.com/user-attachments/assets/03683d8b-32d8-4617-83e3-5278e33b46f4

First the selected program type is checked, if it is a Type2 AppImage, it will be extracted and repackaged using the new version of `appimagetool` from https://github.com/probonopd/go-appimage :
- if the update occurs through "comparison" of versions, the converted AppImage will be replaced by the upstream version and the command is added within the application's AM-updater script, so as to automatically start the conversion at each update (prolonging the update time, depending on the size of the AppImage);
- instead, if the installed AppImage can be updated via `zsync`, **this may no longer be updatable**.
Instead, if the installed AppImage can be updated via `zsync`, **this may no longer be updatable**, anyway a solution may be the use of `appimageupdatetool`, at https://github.com/AppImageCommunity/AppImageUpdate .

**I suggest anyone to contact the developers to update the packaging method of their AppImage!**
The `nolibfuse` option has been improved since version 7.8, so everyone can say goodbye to the old "libfuse2" dependence.

NOTE, the conversion is not always successful, a lot depends on how the program is packaged. The conversion occurs in two steps:
1. if in the first case it succeeds without problems, the package will be repackaged as a new generation one;
2. if the script encounters problems (due to Appstream validation), it will attempt to delete the contents of the /usr/share/metainfo directory inside the AppImage, as a workaround.
Anyway, **I suggest anyone to contact the developers to update the packaging method of their AppImage!** This is also a way to keep open source projects alive: your participation through feedback to the upstream.

If also the second step does not succeed either, the process will end with an error and the AppImage will remain Type2.
The `nolibfuse` option is not intended to replace the work of the owners of these AppImage packages, but to encourage the use of AppImage packages on systems that do not have "libfuse2", a library that is now obsolete and in fact no longer available out-of-the-box by default in many distributions, first and foremost Ubuntu and Fedora.

------------------------------------------------------------------------

Expand Down
Loading