Falha no módulo de carregamento do GTK para aplicativo instalado com snap que é executado corretamente

2

Meu aplicativo instalado por encaixe é um aplicativo wxWidgets. Ele corre bem após compilação e linkage, mas não funciona depois de instalado a partir de um piscar de olhos. Estou assumindo que, quando eu digito o nome do meu aplicativo, talvez o 'snapd' vá e execute o wrapper no diretório /snap/<myappname>/x1/ . De qualquer forma, eu recebo ...

Gtk-Message: Failed to load module "overlay-scrollbar"
Gtk-Message: Failed to load module "gail"
Gtk-Message: Failed to load module "atk-bridge"
Gtk-Message: Failed to load module "unity-gtk-module"
23:11:06: Error: Unable to initialize GTK+, is DISPLAY set properly?

Meu único palpite é que nem todas as dependências são encontradas e colocadas dentro do diretório /snap/<mayappname>/x1/usr/lib/x86_64-linux-gnu/ por snap install. Eu tentei testar essa hipótese de duas maneiras. Primeiro, esgotando o diretório prime antes da instalação, mas o erro não é reproduzível lá. E segundo, copiando o que eu acreditava serem as bibliotecas necessárias para o dito diretório, mas ele é somente de leitura, mesmo se eu mudar o confinamento do snapcraft para devmode e usar o --devmode durante a instalação, e mesmo se eu tente chmod 777 . como root para chorar em voz alta.

Se alguém estiver interessado em dar uma olhada no meu projeto estúpido, ele pode ser clonado de ...

link

O arquivo snapcraft.yaml está configurado para executar o scons. Eu não tentaria snapcrafting na raiz do projeto. Eu copio o arquivo snapcraft.yaml para algum outro diretório antes de tentar isso.

Eu já percorreu um longo caminho e me sinto tão perto de realmente fazer essa coisa funcionar ... apenas uma estrada atrás da outra ... eu sou uma droga.

    
por Spencer Parkin 09.09.2016 / 07:31

1 resposta

1

Então, vamos pegar este appart, pois há muitos problemas aqui:

Em execução a partir de prime

Quando você corre de prime direto do seu sistema clássico, você verá todas as bibliotecas do seu sistema clássico, então não é a melhor maneira de fazê-lo. Quando executado como um snap , o sistema de arquivos raiz que é realmente visto é, nesse caso, ubuntu-core ou core .

Para experimentar como será o ambiente, talvez seja melhor entrar em um shell para esse ambiente, você pode fazer isso executando:

snap run --shell <snap-name>.<app-name>

Ler apenas snap

Snaps quando instalados para um snap real são uma montagem para um squashfs , este sistema de arquivos é somente leitura e o motivo pelo qual você não pode gravar e fazer modificações no snap instalado.

Durante o desenvolvimento, talvez seja melhor fazer a partir do diretório do seu projeto:

snap try prime [--devmode]

Ao fazer isso, você pode fazer edições ao vivo no diretório prime para testar variações de coisas.

Como o aplicativo é iniciado

Os avisos de carga do módulo não são tão ruins, eles também acontecem em alguns snaps. O que é ruim é que não é possível encontrar uma exibição. Para começar rapidamente, há lançadores de área de trabalho que podem ajudar você a fazer o bootstrap rapidamente.

Eles são entregues como partes, para ter uma ideia de como isso funciona com snapcraft, executar

snapcraft update
snapcraft search desktop

E para ver o que um desses parts executa,

snapcraft define <part-name>

Há mais informações sobre os lançadores de área de trabalho disponíveis em link

    
por sergiusens 09.09.2016 / 17:37