flatpak 내에서 실행되는 GUI 애플리케이션이 /bin
별도로 바이너리에 액세스하고 실행하도록 허용할 수 있습니까 /var/bin
?
전체 시스템 액세스( )를 허용하더라도 --filesystem=host
거기에 있는 파일을 보거나 찾을 수도 없습니다.
내 사용 사례는 실행입니다 shellcheck
.
답변1
다양한 방법이 있습니다:
- Flatpak에 액세스할 수 있는 경우 .i.e . 에 설치를
host
실행할 수 있습니다 ./usr/local/bin/example
/var/run/host/usr/local/bin/example
/usr/local
/var/run/host/usr/local
- 그러나 라이브러리가 올바른 위치에 있지 않은 등의 이유로 인해 여전히 실패할 수 있습니다. 따라서 환경 변수가 작동하도록 조정하거나 아래 설명된 대로 수행해야 합니다.
flatpak 외부에서 명령 생성
당신은 그것을 사용할 수 있습니다flatpak-spawn
다양한 환경에서 명령을 실행하세요.
그러나 호스트 시스템에 명령을 전파하여 샌드박스에서 벗어나고 싶은 경우가 많습니다. 이를 위해서는 flatpak의 샌드박스를 약화시켜야 합니다. 다음 권한을 추가하세요.
flatpak override com.packagename.App --talk-name=org.freedesktop.Flatpak
flatpak-spawn --host
그런 다음 호스트 시스템에서 flatpak 외부에서 명령을 실행할 수 있습니다 .
이제 실제로 이것을 GUI에서 사용하려면 실행하려는 바이너리의 경로를 변경할 수 있는 방법이 필요합니다. 추가 매개변수를 전달해야 하고 결국 작은 래퍼 스크립트를 작성해야 하므로 이는 복잡해질 수 있습니다.
내 경우에는 그랬고,여기에서 찾을 수 있습니다.. 내 경우에는 Atom(그러나 모든 IDE와 함께 사용할 수 있음)을 실행 shellcheck
하거나 gpg
...
답변2
org.freedesktop.Flatpak.Development Dbus 인터페이스의 HostCommand 메서드를 사용할 수 있습니다.https://github.com/platpak/platpak/blob/master/data/org.freedesktop.Flatpak.xml#L43
Python을 사용한 예:https://stackoverflow.com/questions/39494813/pass-file-descriptor-via-a-dbus-function-call-from-python-aka-call-platpaks-ho