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을 오프라인으로 사용하는 것을 어렵게 만드는 두 가지 문제에 유의하세요.


오프라인 Flatpak 리포지토리 사용을 어렵게 만드는 두 가지 문제에 유의하세요.

  1. 오프라인 저장소 확장을 사용하여 Flatpak을 설치할 때 문제를 일으키는 버그가 있습니다.두 개의 저장소에 동일한 확장 참조가 있으면 Flatpak이 혼란스러워집니다.오프라인으로 작업할 때 온라인 저장소를 미러링하는 두 번째 저장소를 생성하므로 이 오류를 피할 수 있는 방법이 없습니다. 이는 필요한 확장이 오프라인 컴퓨터에 설치되어 있지 않음을 의미합니다. 이것이 사실인지 확인하는 가장 좋은 방법은 정상적인 온라인 시스템과 오프라인 시스템에 설치된 것을 비교하는 것입니다 flatpak list. 상당한 차이점은 오프라인 시스템에 추가 확장이 필요함을 나타낼 수 있습니다. 무언가를 설치할 때 Flatpak은 설치할 항목을 나열하므로 그런 식으로 비교할 수도 있습니다. 오프라인 시스템에서는 확장 프로그램을 나열하지 못합니다.

  2. 일부 Flatpak은 설치 중에 파일(추가 데이터) 다운로드를 시도하며 호스트가 항상 오프라인이면 실패합니다.flatpak create-usb에서 오프라인으로 설치할 때 libopenh264를 다운로드할 수 없습니다 한 가지 예로는 설치 중에 cisco.com에서 다운로드되는 openh264 확장이 있습니다. flatpak이 다운로드하지 않고도 찾을 수 있도록 필요한 다운로드를 올바른 위치에 배치하면 이 문제를 피할 수 있습니다: "~/.local/share/platpak/extra-data/$SHA256/$FILENAME". 그러나 정확한 파일 이름은 flatpak 구성에 따라 다릅니다. 문제를 찾는 한 가지 방법은 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.

또한 이러한 디렉터리 중 하나에서 심볼릭 링크를 사용하고 실제 파일을 다른 곳에 넣을 수도 있습니다.

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실제로 무엇이 들어 있는지 확인할 수 있습니다.

답변2

flatpak을 오프라인으로 설치하는 방법은 이 블로그를 참조하세요. https://blogs.gnome.org/mclasen/2018/08/26/about-platpak-installations/

원래 Flatpaks 문서에서는 다음을 인용합니다. https://docs.Flatpak.org/en/latest/usb-drives.html?highlight=offline

즐기다;-)

관련 정보