Flatpakアプリをオフラインでインストール

Flatpakアプリをオフラインでインストール

私は閉鎖された企業環境で働いており、最新のMonoDevelop(http://www.monodevelop.com/download/linux/)完全にオフライン環境で。ネットワークにアクセスして必要な操作をすべて実行できますが、RHEL 7.2システムでインストールを実行するには、フラッシュドライブやその他のメディアを使用して持ち運ぶことができる一連のファイルを作成する必要があります。 。

このflatpak build-bundleコマンドは有望に見えますが、オンラインストアでは機能しないようです。 MonoDevelopはflatpakrefからインストールされたため、これを行う方法を正確に知ることはできませんでした。ストレージ全体をローカルにミラーリングする必要がありますか?もしそうなら、flatpakrefファイルはランタイムGnomeリポジトリも参照するので、それをミラーリングする必要がありますか?

私が本当に望むのは、これをインストールしてから何らかの方法でパッケージをエクスポートすることです。以前のバージョンのMonoDevelopでは、repotrackを使用してすべての関連RPMを見つけて手動でインポートすることができましたが、今はflatpakに移動したので簡単ではないようです。

ベストアンサー1

--sideload-repo2020年11月の更新:Flatpak 1.7.1+には、新しいcmdlineオプションとさまざまなオフラインストレージパスがあります。また、全体のサイズを縮小しようと回答を書き直しました。


2020年6月の更新:オフラインストレージの場所については十分に具体的ではありませんでした。疑いを避けるために、オフラインリポジトリにあるダイジェストファイルのフルパスは次のようにする必要があります/.ostree/repos.d/myoffline_repo/summary。以下のガイドラインを明確にしました。また、オフラインリポジトリへのリンクが同じファイルシステム上にあることがわかりました。


2020年5月の更新:Flatpakをオフラインで使用するのが難しくなる2つの問題に注意してください。


オフラインFlatpakリポジトリの使用を困難にする2つの問題に注意してください。

  1. オフラインストレージ拡張を使用してFlatpakをインストールすると問題を引き起こすバグがあります。2つのリポジトリに同じ拡張参照がある場合、Flatpakは混乱します。オフラインで作業しているときにオンラインストアをミラーリングする2番目のストレージを作成するため、このエラーを回避する方法はありません。これは、必要な拡張がオフラインコンピュータにインストールされていないことを意味します。これが真であることを確認する最善の方法は、通常のオンラインシステムとオフラインシステムにインストールされているものを比較することですflatpak list。大きな違いは、オフラインシステムに追加の拡張が必要であることを示している可能性があります。何かをインストールすると、Flatpakはインストールする項目を一覧表示するので、そのように比較することもできます。オフラインシステムでは拡張機能の一覧は表示されません。

  2. 一部のFlatpakはインストール中にファイル(追加データ)をダウンロードしようとし、ホストが常にオフラインの場合は失敗します。flatpak create-usbからオフラインでインストールするとlibopenh264をダウンロードできません 一例として、インストール中にcisco.comからダウンロードされるopenh264拡張があります。 flatpakがダウンロードしなくても見つけるために必要なダウンロードを正しい場所に配置すると、この問題を回避できます。「~/.local/share/platpak/extra-data/$SHA256/$FILENAME」ただし、正確なファイル名はflatpakの設定によって異なります。問題を見つける1つの方法は、straceを使用して問題のflaptakをインストールし、追加のデータパスにENOENTを見つけることです。 shaとファイル名はバージョン/アップデート間で変更されるため、更新を続行する必要があります。

ブログ投稿「Flatpakインストール情報」(blogs.gnome.org) 公式GNOMEブログのmclasenは、これがまさにこれが使用される用途であると言います。flatpak create-usbこれにより、アプリケーションのリモートリポジトリを含むミラーが作成され、すべての依存関係がバンドルされます。create-usbオフラインホストに移動する前に、この手順を数回繰り返して、より多くのアプリケーションを新しいリポジトリにプッシュすることもできます。また、USBスティックを使用する必要はなく、必要に応じてストレージをターゲットコンピュータに転送できます。

オフラインリポジトリを構築するマシンから始めましょう。ミラーリングするリモートサーバーには、コレクションIDと後続のFlatpakアップデートが必要です。作成者は、flathubでアプリをパッケージ化したい場合の例を提供します。

# Configure the remote
flatpak remote-modify --collection-id=org.flathub.Stable flathub
# Force an update
flatpak update
# Package up GIMP (for example)
flatpak create-usb ./ org.gimp.GIMP

著者は、これらのステップが必要な理由を説明します。

リモート設定にコレクションIDを追加しないと、「リモート 'フラットハブ'にコレクションIDが設定されていません」というエラーメッセージが表示されます。 flatpakの更新が省略された場合、エラーは「ストアに対応するブランチ(org.plathub.Stable、ostree-metadata)がありません」と表示されます。

.ostree USBスティックについて話しますが、現在のディレクトリにリポジトリが残ります。

オフラインストアがあるので、フラットパックをインストールするときにそれを使用しようとしています。 Flatpakのバージョンによって違いがあります。

フラットパック 1.7.1+

Flatpak 1.7.1で始まる最新のドキュメントUSBドライブオフラインストアをサイドロードストアと呼びます。ドキュメントは、--sideload-repo 新しいシステムデバイスを使用してコマンドラインで指定できることを示しています。

あるいは、サイドロードソースは、システム全体またはユーザー固有のディレクトリにあるシンボリックリンクを使用して指定できます。これらのソースは、--sideload-repoオプションなしですべてのFlatpak操作に使用されます。

これは以下を指します。flatpak コマンドリファレンス 内容は次のとおりです。

これらのリポジトリは、インストールディレクトリのsideload-reposサブディレクトリ(つまり、/var/lib/platpak/sideload-repos)にサイドロードソースへのシンボリックリンクを作成することによって構成されます。また、/run/platpak/sideload-repos でシンボリックリンクを作成することもできます。これは非永続ソースに適した場所です(再起動時に削除されるため)。これらのシンボリックリンクは、flatpak create-usb(デフォルトではサブパス.ostree / repoに書き込まれます)で指定されたディレクトリを指すか、ostreeリポジトリを直接指すことができます。

永久設定のための最良のオプションは、下にシンボリックリンクを作成することです /var/lib。たとえば、Flatpakはoffline_flatpakここでリポジトリの概要を見つけることができるはずです。/var/lib/flatpak/sideload-repos/offline_flatpak/summary

前述のシステムデバイスは、新しく挿入されたドライブを検索し、その下にシンボリックリンクを配置するようです。/run/flatpak/...これは実際にUSBドライブを使用している場合は十分です。

フラットパック<1.7.1

Flatpakには、リポジトリやミラーを見つけるときにリモートパスだけでなく、特定のローカルパスも考慮するリポジトリ検索メカニズムがあります。あなたがしなければならないのは、ストレージをターゲットコンピュータの正しい場所に配置することだけです。その後、Flatpakはそれを使用します。 Flatpakは、すべてのインストール時に次のディレクトリからリポジトリを検索します。

.ostree/repo
ostree/repo
.ostree/repos.d/
ostree/repos.d/

したがって、ストレージをUSBにコピーしてターゲットコンピュータに貼り付けるか、/.ostree/repoルートファイルシステムを使用するためにファイルをコピーすることができます。

明確に言うと、を使用することを選択した場合は、/.ostree/repos.dオフラインリポジトリの要約ファイルはにある必要があります/.ostree/repos.d/myoffline_repo/summary

また、これらのディレクトリの1つでシンボリックリンクを使用し、物理ファイルを別の場所に配置することもできます。

mkdir -p /.ostree/repos.d
ln -s /home/user/Downloads/.ostree/repo /.ostree/repos.d/myoffline_repo

ただし、リンクは同じファイルシステムを指す必要があり、そうでなければflatpakはそれを使用しません。

さらに、Flatpakは、どのリポジトリでも見つけることができる最新のリポジトリを好みます。

ついに

もちろん、ソースリポジトリをターゲットコンピュータ(この場合はflathub)に追加し、コレクションIDを設定することを忘れないでください。これは、ミラーストアのすべてのコンテンツが元のコレクションIDを参照して保存されるためです。ターゲットマシンで:

flatpak remote-add flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak remote-modify --collection-id=org.flathub.Stable flathub

ターゲットが実際にオフラインの場合は、URLを使用する代わりに.Flatpakrepoファイルからリモートを追加できます。

flatpak remote-add --if-not-exists flathub flathub.flatpakrepo
# Download file from https://flathub.org/repo/flathub.flatpakrepo

その後、ターゲットマシンで正常にインストールを続行できます。

flatpak install flathub org.gimp.GIMP

質問がある場合:

  • その権限でflatpakがリポジトリに到達できない場合は、cmdの前にsudoを試してください。
  • flatpak cmd にスイッチを追加することで、--ostree-verbose考えられる問題に対する ostree のデバッグを確認できます。
  • ostreeリポジトリをチェックして、ostree summary -v --repo=REPO実際に何が含まれているかを確認できます。

おすすめ記事