Instalacja programów za pomocą menadżerów pakietów takich jak Snap, czy Flatpak wiąże się czasem z problemem w komunikacji. Programy mogą czasem nie mieć dostępu do zamontowanych woluminów, lub nie mogą komunikować się wzajemnie. Ma to miejsce zarówno w przypadku Snapa, jak i Flatpaka, gdy zainstaluje się wspomniane w tytule programy.
W przypadku tego pierwszego menadżera pakietów, problem został rozwiązany przez samych developerów, którzy zdając sobie sprawę z problemu, udostępnili wykonywalny plik, który naprawia w/w problem.
Wg opisu wystarczy pobrać plik keepassxc-snap-helper.sh, nadać mu uprawnienia (chmod +x) i wykonać go za pomocą terminala. Wszystko zadziała i potwierdzę to, jako użytkownik Snapa.
Obejście problemu Flatpak
Niestety developerzy nie przygotowali stosownego obejścia dla menadżera Flatpak, ale w sieci takowe powstało, a sam problem związany jest tak samo z brakiem komunikacji dwóch programów ze sobą – czyli Flatpak robi to, do czego został stworzony (izoluje).
Nadanie uprawnień KeePassXC do bibliotek KDE i proxy KeePassXC (KeePassXC-Browser)
flatpak override --user \
--filesystem={/var/lib,xdg-data}/flatpak/{app/org.keepassxc.KeePassXC,runtime/org.kde.Platform}:ro \
--filesystem=xdg-run/app/org.keepassxc.KeePassXC:create \
org.mozilla.firefox
Utworzenie skryptu wrappera, który będzie uruchamiał KeePassXC-proxy z KeePassXC Flatpak i uzyskał dostęp do Firefoxa Flatpak
mkdir ~/.var/app/org.mozilla.firefox/data/bin
cd ~/.var/app/org.mozilla.firefox/data/bin
cd bin
nano keepassxc-proxy-wrapper.sh
W pliku wklejamy zawartość:
#!/bin/bash
APP_REF="org.keepassxc.KeePassXC/x86_64/stable"
for inst in "$HOME/.local/share/flatpak" "/var/lib/flatpak"; do
if [ -d "$inst/app/$APP_REF" ]; then
FLATPAK_INST="$inst"
break
fi
done
[ -z "$FLATPAK_INST" ] && exit 1
APP_PATH="$FLATPAK_INST/app/$APP_REF/active"
RUNTIME_REF=$(awk -F'=' '$1=="runtime" { print $2 }' < "$APP_PATH/metadata")
RUNTIME_PATH="$FLATPAK_INST/runtime/$RUNTIME_REF/active"
exec flatpak-spawn \
--env=LD_LIBRARY_PATH=/app/lib \
--app-path="$APP_PATH/files" \
--usr-path="$RUNTIME_PATH/files" \
-- keepassxc-proxy "$@"
Ctrl+o, ctrl+x, zapisujemy plik, nadajemy mu uprawnienia do wykonania chmod +x keepassxc-proxy-wrapper.sh.
Utworzenie pliku json, który dokończy „komunikację”
Skrypt ten jest zawarty w skrypcie dla Snapa, na stronie projektu KeePassXC (nawiązywałem do niego na wstępie).
cd ~/.var/app/org.mozilla.firefox/.mozilla/
mkdir native-messaging-hosts
cd native-messaging-hosts
nano org.keepassxc.keepassxc_browser.json
W pliku wklejamy zawartość:
{
"allowed_extensions": [
"keepassxc-browser@keepassxc.org"
],
"description": "KeePassXC integration with native messaging support",
"name": "org.keepassxc.keepassxc_browser",
"path": "/home/UŻYTKOWNIK/.var/app/org.mozilla.firefox/data/bin/keepassxc-proxy-wrapper.sh",
"type": "stdio"
}
Zamieniamy słowo UŻYTKOWNIK na nazwę naszego użytkownika, aka. katalog użytkownika, ctrl+o, ctrl+x, zapisujemy plik.
Po wszystkim należy od nowa uruchomić Firefoxa i KeePassXC.
Opis problemu wraz z dyskusją i oryginalnym rozwiązaniem od gasinvein znajduje się pod linkiem.
Dodaj komentarz