Шаги ==== 1. # apt-get install -y gearlever 2. $ curl \ --location "https://download.kde.org/Attic/krita/5.2.6/krita-5.2.6-x86_64.appimage" \ --output "krita-5.2.6-x86_64.appimage" 3. $ gearlever 4. Нажать Открыть (+) > выбрать скачанный файл. 5. Если появится сообщение "Пожалуйста, проверьте источник этого приложения, прежде чем открывать его", нажать Разблокировать. 6. Нажать Добавить в меню приложений. 6. Выполнить любое действие, которое приведёт к попытке заново прочитать метаданные AppImage (для чего требуется его распаковать), например нажать Обновить метаданные, попробовать открыть другой файл AppImage и т. п. Фактический результат ===================== В логе первое извлечение успешно (хотя проваливаются попытки извлечения с помощью 7zz и unsquashfs): > ==> /home/test/.cache/logs/gearlever.log <== > DEBUG [AppImageProvider.py:677] Created temporary folder at /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_xdz2rp51b7 > DEBUG [terminal.py:42] Running ['dwarfsck', '--input=/home/test/krita-5.2.6-x86_64.appimage', '-q', '-detail=0', '--no-check'] > INFO [AppImageProvider.py:694] Filesystem is not dwarfsck > INFO [AppImageProvider.py:702] Exctracting with p7zip to /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_xdz2rp51b7/squashfs-root > DEBUG [terminal.py:42] Running ['7zz', 't', '/home/test/krita-5.2.6-x86_64.appimage', '-y', '-bso0', '-bsp0'] > ERROR [AppImageProvider.py:714] Extraction with 7zz failed > ERROR [AppImageProvider.py:715] [Errno 2] Нет такого файла или каталога: '7zz' > DEBUG [AppImageProvider.py:719] Testing with unsquashfs > DEBUG [terminal.py:42] Running ['/usr/lib/gearlever/get_appimage_offset', '/home/test/krita-5.2.6-x86_64.appimage'] > DEBUG [terminal.py:60] Done ['/usr/lib/gearlever/get_appimage_offset', '/home/test/krita-5.2.6-x86_64.appimage'] > DEBUG [terminal.py:42] Running ['unsquashfs', '-o', '2048', '-l', '/home/test/krita-5.2.6-x86_64.appimage'] > ERROR [AppImageProvider.py:726] Extraction with unsquashfs failed > ERROR [AppImageProvider.py:727] [Errno 2] Нет такого файла или каталога: 'unsquashfs' > INFO [AppImageProvider.py:731] Extracting with appimage-extract > DEBUG [utils.py:74] Copying /home/test/krita-5.2.6-x86_64.appimage to /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_xdz2rp51b7/app.appimage > DEBUG [terminal.py:42] Running ['chmod', '+x', '/tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_xdz2rp51b7/app.appimage'] > DEBUG [terminal.py:60] Done ['chmod', '+x', '/tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_xdz2rp51b7/app.appimage'] > DEBUG [terminal.py:42] Running ['/tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_xdz2rp51b7/app.appimage', '--appimage-extract'] > DEBUG [terminal.py:60] Done ['/tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_xdz2rp51b7/app.appimage', '--appimage-extract'] > DEBUG [utils.py:74] Copying /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_xdz2rp51b7/squashfs-root/org.kde.krita.desktop to /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_appimage_32fd472fdd41b148bad8162182ff82a4/app.desktop > DEBUG [AppImageProvider.py:808] Looking for icon in: /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_xdz2rp51b7/squashfs-root/usr/share/icons/hicolor/scalable/apps/krita.svg > DEBUG [AppImageProvider.py:808] Looking for icon in: /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_xdz2rp51b7/squashfs-root/usr/share/icons/hicolor/512x512/apps/krita.png > DEBUG [utils.py:74] Copying /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_xdz2rp51b7/squashfs-root/usr/share/icons/hicolor/512x512/apps/krita.png to /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_appimage_32fd472fdd41b148bad8162182ff82a4/icon.png > DEBUG [terminal.py:42] Running ['arch'] > DEBUG [terminal.py:60] Done ['arch'] > INFO [AppImageProvider.py:264] Installing appimage: /home/test/krita-5.2.6-x86_64.appimage > DEBUG [utils.py:74] Copying /home/test/krita-5.2.6-x86_64.appimage to /home/test/AppImages/krita.appimage > DEBUG [AppImageProvider.py:339] file copied to /home/test/AppImages > DEBUG [AppImageProvider.py:65] Chmod file /home/test/AppImages/krita.appimage > DEBUG [utils.py:74] Copying /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_appimage_32fd472fdd41b148bad8162182ff82a4/icon.png to /home/test/AppImages/.icons/krita.png > INFO [AppImageProvider.py:451] Deleting original appimage file from: /home/test/krita-5.2.6-x86_64.appimage > DEBUG [terminal.py:18] Running ['update-desktop-database', '/home/test/.local/share/applications', '-q'] > DEBUG [terminal.py:35] Done ['update-desktop-database', '/home/test/.local/share/applications', '-q'] > DEBUG [AppImageProvider.py:456] > DEBUG [terminal.py:42] Running ['arch'] > DEBUG [terminal.py:60] Done ['arch'] > DEBUG [json_config.py:16] Reading config from /home/test/.config/apps.json > DEBUG [json_config.py:16] Reading config from /home/test/.config/apps.json > DEBUG [json_config.py:16] Reading config from /home/test/.config/apps.json > DEBUG [terminal.py:42] Running ['readelf', '--string-dump=.upd_info', '--wide', '/home/test/AppImages/krita.appimage'] > DEBUG [terminal.py:60] Done ['readelf', '--string-dump=.upd_info', '--wide', '/home/test/AppImages/krita.appimage'] При втором извлечении воспроизводятся те же проблемы, но и appimage-extract уже не работает: > INFO [AppImageProvider.py:464] Reloading metadata for /home/test/AppImages/krita.appimage > DEBUG [utils.py:74] Copying /home/test/AppImages/krita.appimage to /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_3qxd72r9r6/tmp.appimage > INFO [AppImageProvider.py:203] Removing /home/test/AppImages/krita.appimage > INFO [AppImageProvider.py:211] Trashing /home/test/AppImages/krita.appimage > INFO [AppImageProvider.py:219] Removing /home/test/.local/share/applications/krita.desktop > INFO [AppImageProvider.py:264] Installing appimage: /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_3qxd72r9r6/tmp.appimage > DEBUG [AppImageProvider.py:677] Created temporary folder at /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_28d9q9dca1 > DEBUG [terminal.py:42] Running ['dwarfsck', '--input=/tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_3qxd72r9r6/tmp.appimage', '-q', '-detail=0', '--no-check'] > INFO [AppImageProvider.py:694] Filesystem is not dwarfsck > INFO [AppImageProvider.py:702] Exctracting with p7zip to /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_28d9q9dca1/squashfs-root > DEBUG [terminal.py:42] Running ['7zz', 't', '/tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_3qxd72r9r6/tmp.appimage', '-y', '-bso0', '-bsp0'] > ERROR [AppImageProvider.py:714] Extraction with 7zz failed > ERROR [AppImageProvider.py:715] [Errno 2] Нет такого файла или каталога: '7zz' > DEBUG [AppImageProvider.py:719] Testing with unsquashfs > DEBUG [terminal.py:42] Running ['/usr/lib/gearlever/get_appimage_offset', '/tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_3qxd72r9r6/tmp.appimage'] > DEBUG [terminal.py:60] Done ['/usr/lib/gearlever/get_appimage_offset', '/tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_3qxd72r9r6/tmp.appimage'] > DEBUG [terminal.py:42] Running ['unsquashfs', '-o', '2048', '-l', '/tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_3qxd72r9r6/tmp.appimage'] > ERROR [AppImageProvider.py:726] Extraction with unsquashfs failed > ERROR [AppImageProvider.py:727] [Errno 2] Нет такого файла или каталога: 'unsquashfs' > INFO [AppImageProvider.py:731] Extracting with appimage-extract > DEBUG [utils.py:74] Copying /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_3qxd72r9r6/tmp.appimage to /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_28d9q9dca1/app.appimage > ERROR [AppImageProvider.py:446] Appimage installation error: g-io-error-quark: Ошибка выполнения splice для файла: На устройстве не осталось свободного места (12) В терминале: > Exception in thread Thread-5 (on_refresh_metadata_btn_clicked): > Traceback (most recent call last): > File "/usr/lib64/python3.12/threading.py", line 1075, in _bootstrap_inner > self.run() > File "/usr/lib64/python3.12/threading.py", line 1012, in run > self._target(*self._args, **self._kwargs) > File "/usr/share/gearlever/gearlever/AppDetails.py", line 719, in on_refresh_metadata_btn_clicked > self.provider.reload_metadata(self.app_list_element) > File "/usr/share/gearlever/gearlever/providers/AppImageProvider.py", line 481, in reload_metadata > self.install_file(el) > File "/usr/share/gearlever/gearlever/providers/AppImageProvider.py", line 447, in install_file > raise e > File "/usr/share/gearlever/gearlever/providers/AppImageProvider.py", line 270, in install_file > extracted_appimage = self._load_appimage_metadata(el) > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/share/gearlever/gearlever/providers/AppImageProvider.py", line 758, in _load_appimage_metadata > mounted_appimage_path = self._extract_appimage(el) > ^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/share/gearlever/gearlever/providers/AppImageProvider.py", line 733, in _extract_appimage > gio_copy(file, cloned_file) > File "/usr/share/gearlever/gearlever/lib/utils.py", line 75, in gio_copy > return file.copy( > ^^^^^^^^^^ > gi.repository.GLib.GError: g-io-error-quark: Ошибка выполнения splice для файла: На устройстве не осталось свободного места (12) При этом на / доступно >15 GB места: > # lsblk -f > NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS > sda > ├─sda1 swap 1 5e3df10b-de36-4d1b-810e-f01406264277 [SWAP] > └─sda2 ext4 1.0 16ad7332-e58d-4e81-9adb-d7b3170b48b8 16,8G 42% / > sr0 iso9660 Joliet Extension ALT Workstation 11.0 x86_64 2025-04-19-14-59-13-00 Что-то связанное с appimage-extract монтируется неправильно / повторно использует смонтированное расположение, не предназначенное для повторного использования. Исправляется после перезапуска приложения. Однако эта ошибка приводит к следующим результатам: * После перезапуска Gear Lever или возврата к главной странице файл AppImage теряется (если, как по умолчанию, стоит опция перемещать AppImage). В ~/AppImages его уже нет. * Если попробовать установить приложение, метаданные которого не удалось получить, установка зависает; в логе > ERROR [AppImageProvider.py:446] Appimage installation error: 'NoneType' object has no attribute 'getExec' > ERROR [AppDetails.py:275] 'NoneType' object has no attribute 'getExec' * Один раз приложение удалось установить (конкретно, параллельно другую версию Krita из https://download.kde.org/stable/krita/5.2.9/krita-5.2.9-x86_64.AppImage по аналогии с https://bugzilla.altlinux.org/54913), однако при попытке запуска приложения с версией из меню упала виртуальная машина в среде Proxmox Virtual Environment. Возможно, было связано с самим PVE. После загрузки системы AppImage оказался испорченный, при попытке запуска выводилось уведомление с ошибкой FUSE. Ожидаемый результат =================== Успешное извлечение метаданных неограниченное количество раз. Дополнительно ============= Если установить пакеты: # apt-get install -y 7-zip squashfs-tools после воспроизведения ошибки с appimage-extract, то 7zz и unsquashfs не работают: > DEBUG [AppImageProvider.py:677] Created temporary folder at /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_cbz27zqza3 > DEBUG [terminal.py:42] Running ['dwarfsck', '--input=/home/test/AppImages/gearlever_krita529x86_64appimage.appimage', '-q', '-detail=0', '--no-check'] > INFO [AppImageProvider.py:694] Filesystem is not dwarfsck > INFO [AppImageProvider.py:702] Exctracting with p7zip to /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_cbz27zqza3/squashfs-root > DEBUG [terminal.py:42] Running ['7zz', 't', '/home/test/AppImages/gearlever_krita529x86_64appimage.appimage', '-y', '-bso0', '-bsp0'] > DEBUG [terminal.py:60] Done ['7zz', 't', '/home/test/AppImages/gearlever_krita529x86_64appimage.appimage', '-y', '-bso0', '-bsp0'] > DEBUG [terminal.py:42] Running ['7zz', 'x', '/home/test/AppImages/gearlever_krita529x86_64appimage.appimage', '-o/tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_cbz27zqza3/squashfs-root', '-y', '-bso0', '-bsp0', '*.png', '*.svg', '*.desktop', '.DirIcon', '-r'] > ERROR [AppImageProvider.py:714] Extraction with 7zz failed > ERROR [AppImageProvider.py:715] Command '['7zz', 'x', '/home/test/AppImages/gearlever_krita529x86_64appimage.appimage', '-o/tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_cbz27zqza3/squashfs-root', '-y', '-bso0', '-bsp0', '*.png', '*.svg', '*.desktop', '.DirIcon', '-r']' returned non-zero exit status 2. > DEBUG [AppImageProvider.py:719] Testing with unsquashfs > DEBUG [terminal.py:42] Running ['/usr/lib/gearlever/get_appimage_offset', '/home/test/AppImages/gearlever_krita529x86_64appimage.appimage'] > DEBUG [terminal.py:60] Done ['/usr/lib/gearlever/get_appimage_offset', '/home/test/AppImages/gearlever_krita529x86_64appimage.appimage'] > DEBUG [terminal.py:42] Running ['unsquashfs', '-o', '2048', '-l', '/home/test/AppImages/gearlever_krita529x86_64appimage.appimage'] > ERROR [AppImageProvider.py:726] Extraction with unsquashfs failed > ERROR [AppImageProvider.py:727] Command '['unsquashfs', '-o', '2048', '-l', '/home/test/AppImages/gearlever_krita529x86_64appimage.appimage']' returned non-zero exit status 1. > INFO [AppImageProvider.py:731] Extracting with appimage-extract > DEBUG [utils.py:74] Copying /home/test/AppImages/gearlever_krita529x86_64appimage.appimage to /tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_cbz27zqza3/app.appimage Лог 7zz не выводится в файл лога, как происходит при успешном извлечении с помощью него. И appimage-extract также не завершается из-за ошибки, описанной выше. При выполнении вручную команд из лога: > $ 7zz x /home/test/AppImages/gearlever_krita529x86_64appimage.appimage -o/tmp/.private/test/it.mijorus.gearlever/appimages/gearlever_cbz27zqza3/squashfs-root -y -bso0 -bsp0 *.png *.svg *.desktop .DirIcon -r > System ERROR: > errno=28 : На устройстве не осталось свободного места > $ unsquashfs -o 2048 -l /home/test/AppImages/gearlever_krita529x86_64appimage.appimage > FATAL ERROR: Can't find a valid SQUASHFS superblock on /home/test/AppImages/gearlever_krita529x86_64appimage.appimage Только после перезапуска приложения начинает корректно использоваться 7zz (до unsquashfs уже не доходит, видимо предполагается работа с любым из 7zz, unsquashfs, appimage-extract). Отмечу, что уже добавлялась зависимость на пакет p7zip (https://bugzilla.altlinux.org/53225), однако пакет p7zip не предоставляет /usr/bin/7zz. Его предоставляет только пакет 7-zip. Воспроизводимость ================= Воспроизводится на виртуальных машинах: [sisyphus] ALT Workstation 11.0 x86_64 gearlever-3.3.3-alt1.noarch [p11+386229.3] ALT Workstation 11.0 x86_64 gearlever-3.3.3-alt1.noarch
gearlever-3.3.3-alt2 -> sisyphus: Wed Jul 09 2025 Semen Fomchenkov <armatik@altlinux> 3.3.3-alt2 - Remove user manual (ALT #55037). - Added 7-zip dependency (ALT #55043).