Отсутствует атрибут версии в выводе Flatpak

Вопрос или проблема

Я хочу автоматизировать некоторые задачи, связанные с Flatpak, и моя текущая проблема заключается в том, что нужно перечислить все удаленные пакеты и их версии.

Для воспроизводимости я тестирую в Docker-контейнере (fedora, debian или ubuntu) и выполняю следующие команды:

# dnf install -y flatpak  # или apt
# flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

Теперь я могу перечислить приложения, но у них нет версий!

# flatpak remote-ls --columns=application,version | head -n 3
app.authpass.AuthPass
app.bbsync.BlackboardSync
app.bluebubbles.BlueBubbles

Также нет версии в деталях отдельного приложения:

# flatpak remote-info flathub org.gnome.Shotwell
        ID: org.gnome.Shotwell
       Ref: app/org.gnome.Shotwell/x86_64/stable
      Arch: x86_64
    Branch: stable
Collection: org.flathub.Stable
  Download: 15.7 MB
 Installed: 30.1 MB
   Runtime: org.gnome.Platform/x86_64/47
       Sdk: org.gnome.Sdk/x86_64/47

    Commit: 696f2d6c2e4021cd048794988f72247dd831497a47dc534a4a9574a35ae92657
    Parent: ea367aecbac42a00745e75ff2454cf84338f5379371f6a73870b4ab986a11ad5
   Subject: libportal: обновление libportal-0.8.1.tar.xz до 0.9.0 (#93) (d2613444)
      Date: 2024-12-22 12:31:43 +0000

Однако, если я выполняю поиск:

# flatpak search shotwell
Name            Description                   Application ID           Version       Branch       Remotes
Shotwell        Органайзер цифровых фотографий org.gnome.Shotwell       0.32.9        stable       flathub

Я вдруг вижу версии всех пакетов!

# flatpak remote-ls --columns=application,version | head -n 3
app.authpass.AuthPass   1.9.6_1904
app.bbsync.BlackboardSync   0.18.0
app.bluebubbles.BlueBubbles 1.15.0.0
# flatpak remote-info flathub org.gnome.Shotwell

Shotwell - Органайзер цифровых фотографий

        ID: org.gnome.Shotwell
       Ref: app/org.gnome.Shotwell/x86_64/stable
      Arch: x86_64
    Branch: stable
   Version: 0.32.9
   License: LGPL-2.1+
Collection: org.flathub.Stable
  Download: 15.7 MB
 Installed: 30.1 MB
   Runtime: org.gnome.Platform/x86_64/47
       Sdk: org.gnome.Sdk/x86_64/47

    Commit: 696f2d6c2e4021cd048794988f72247dd831497a47dc534a4a9574a35ae92657
    Parent: ea367aecbac42a00745e75ff2454cf84338f5379371f6a73870b4ab986a11ad5
   Subject: libportal: обновление libportal-0.8.1.tar.xz до 0.9.0 (#93) (d2613444)
      Date: 2024-12-22 12:31:43 +0000

Метаданные (flatpak --version; source /etc/os-release && echo $PRETTY_NAME):

Flatpak 1.16.0
Fedora Linux 41 (Container Image)
Flatpak 1.14.6
Ubuntu 24.04.1 LTS
Flatpak 1.14.10
Debian GNU/Linux 12 (bookworm)

Я понимаю, что использование Flatpak в контейнерах не очень полезно, но мои тесты используют контейнеры, и я не хочу, чтобы там было различное поведение.

  • Как мне инициализировать удаленную информацию Flatpak, чтобы она начала выдавать информацию о версиях в remote-ls?
  • Почему у меня есть эта проблема только в контейнерах, а не на рабочей станции Fedora?

Ответ или решение

Давайте разберем вопрос, связанный с недоступностью атрибута версии в выводе команд Flatpak. Ситуация довольно распространенная и требует подробного объяснения механизма работы Flatpak, а также специфики контейнерных сред, в которых наблюдается эта проблема.

Теория (Theory)

Основное предназначение Flatpak — это предоставление унифицированной среды для распространения приложений, которая независима от основного дистрибутива операционной системы. Flatpak использует централизованные репозитории, такие как Flathub, для хранения и управления приложениями. Однако вся информация о приложении, включая версию, хранится в метаданных Flatpak, которые могут быть не сразу доступны после первоначальной настройки репозитория.

Когда вы добавляете новый удаленный репозиторий с помощью flatpak remote-add, Flatpak загружает данные о приложениях из этого репозитория, но иногда метаинформация, такая как версии, может не быть сразу доступна. Это может быть связано с необходимостью дополнительной инициализации или обновления кэша метаданных приложения.

Пример (Example)

Как было описано в вашей ситуации, после выполнения команды для добавления репозитория и последующего списка приложений версии приложений не отображаются:

# flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# flatpak remote-ls --columns=application,version | head -n 3
app.authpass.AuthPass
app.bbsync.BlackboardSync
app.bluebubbles.BlueBubbles

Однако после выполнения поиска:

# flatpak search shotwell
Name            Description                   Application ID           Version       Branch       Remotes
Shotwell        Digital photo organizer       org.gnome.Shotwell       0.32.9        stable       flathub

Версии становятся видимыми:

# flatpak remote-ls --columns=application,version | head -n 3
app.authpass.AuthPass   1.9.6_1904
app.bbsync.BlackboardSync   0.18.0
app.bluebubbles.BlueBubbles 1.15.0.0

Применение (Application)

Теперь, чтобы устранить эту проблему и добиться, чтобы метаданные появлялись сразу, можно предпринять несколько шагов:

  1. Обновление кэша Flatpak:
    Используйте команду flatpak update, чтобы убедиться, что все метаданные обновлены. Это может восстановить кэш приложений и их версий.

    # flatpak update
  2. Инициализация метаданных:
    Выполнение команды flatpak search действительно может инициализировать или сбросить внутренние кэши Flatpak, инициировав загрузку недостающей информации.

  3. Особенности контейнеров:
    Контейнеры зачастую имеют ограниченные сетевые ресурсы и ограничения безопасности, которые могут препятствовать нормальной работе Flatpak. Если ваша рабочая станция Fedora не испытывает таких проблем, вероятно, сеть в контейнере имеет ограниченный доступ, что влияет на взаимодействие с репозиториями.

  4. Логирование и диагностика:
    Активируйте дополнительное логирование с помощью переменной среды FLATPAK_LOG для отладки процесса. Это поможет выявить, какие шаги Flatpak предпринимает или пропускает при взаимодействии с метаданными.

    # FLATPAK_LOG=debug flatpak remote-ls flathub
  5. Изоляция сетевого стека контейнера:
    Проверьте настройки сети и безопасность контейнера. Возможно, использование более полнофункционального контейнера или установка Flatpak на хост-системе позволит обойти ограничения контейнерных настроек и обеспечить более адекватную загрузку метаданных.

В заключении, проблема отсутствия версий в выводе Flatpak в контейнерных средах может быть разрешена путем указанных выше шагов. Основную роль здесь играет корректное обновление и инициализация метаданных Flatpak, а также настройка сетевых параметров контейнера для улучшения взаимодействия с удаленными репозиториями.

Оцените материал
Добавить комментарий

Капча загружается...