Como integrar dependências de um appimage em um pendrive para rodar programas de forma portável?

Introdução: Appimage é, aparentemente, a melhor forma de rodar um programa de forma portável em um sistema Linux e, visto que quero inserir o formato appimage do programa BitWarden no meu pendrive, gostaria de saber o seguinte:

Questão: Cada vez que eu executar o arquivo como um programa diretamente do pendrive, o meu sistema operacional automaticamente alocará pastas em .config , .cache e outras relativas ao appimagem de forma automática na minha /home?

Caso sim, queria saber de um método de rodar o aplicativo diretamente pelo pendrive sem que seja criado essas outras pastas no meu sistema. Talvez integrando as dependências do appimage diretamente no pendrive, eu suponho? Assim, todas as modificações feitas no programa ficará estritamente armazenadas no pendrive.

2 curtidas

Eu não uso o AppImage do Bitwarden em específico, então não posso garantir que isso funciona, mas uma técnica que eu já usei para tornar a configuração do RetroArch portátil foi colocar o AppImage no pendrive, criar uma pasta nele (home) e iniciar o programa como:

env "HOME=/onde/fica/pendrive/home" ./RetroArch.AppImage

Assim, as pastas .cache e .config relevantes para o RetroArch ficam no pendrive.

Essa é a definição do formato, as dependências já estão na AppImage na hora que você baixa. A solução para seu problema (configurações salvas no PC em vez do pendrive) é ativar um modo portátil (se houver) ou tentar passar a perna no programa (o que eu sugeri).

2 curtidas

@emosqueti @Capezotte

Para que os dados do AppImage sejam portable vc precisa criar uma pasta com esse comando, no mesmo diretório onde fica o seu AppImage:
--appimage-portable-home

exemplo se vc quer usar o appimagepool com dados ‘portables’:
/caminho/do/seu/AppImage/appimagepool-x86_64.AppImage --appimage-portable-home

após criar essa pasta com esse comando, é só executar seu AppImage normalmente que ele salva as configurações nessa pasta criada.

2 curtidas

Usá-los em uma distro própria para pendrives ou cartões de memória (instalação persistente) não permitiria isso nativamente? Exemplo, Puppy Linux?

@Natanael.755 dá uma conferida nesse tópico.

1 curtida

Por partes:

Exatamente, o AppImage não ignora o padrão XDG

O AppImage já faz isso

Basicamente criando um lançador

#!/usr/bin/env bash

# Pegamos a pasta do script
HERE="$(dirname "$(readlink -f "${0}")")"

export XDG_CONFIG_HOME="${HERE}/PortableEnvironment/config"
export XDG_CACHE_HOME="${HERE}/PortableEnvironment/cache"
export XDG_DATA_HOME="${HERE}/PortableEnvironment/data"

mkdir -p "${XDG_CONFIG_HOME}"
mkdir -p "${XDG_CACHE_HOME}"
mkdir -p "${XDG_DATA_HOME}"

# Pegamos o nome do script
SELF=$(basename "${0}" .sh)

appimage_file="${HERE}/${SELF}.AppImage"

[ -f "${HERE}/${SELF}.appimage" ] && {
  appimage_file="${HERE}/${SELF}.appimage"
}

"${appimage_file}" ${@}

Você cria um script contendo o código acima na pasta do .AppImage, mas troca o .AppImage por .sh, por exemplo, se seu AppImage for SuperApp-x86_64.AppImage o script passa a se chamar SuperApp-x86_64.sh, ao executar o lançador será criada uma pasta PortableEnvironment e dentro dele terá as pastas config que é equivalente a .config na sua home, cache que é equivalente a .cache e data que é equivalente a .local/share.

Por que usar isso ao invés de simplesmente exportar a HOME (@Capezotte ) ou usar a configuração built-in do AppImage (@mrkalvin)

Fazer assim permite que você acesse seus arquivos na sua home normalmente pelo diálogo “abrir” e “salvar” ao mesmo tempo que os arquivos de configuração, cache e auxiliares fiquem no pendrive que é o que você pediu, exportar a HOME você geralmente precisa acessar o caminho completo além de ter que digitar o comando no terminal toda vez, com esse método não, cria um arquivo com o mesmo nome do AppImage e execute o arquivo ao invés do AppImage

7 curtidas

A única coisa que precisa de modificação no script para o meu uso pessoal é o nome do AppImage e o local dele (entre “here” e “self”, colando o diretório sobre eles), então?

Especificado aqui:

Tentei executar o appimage e o script pelo pen drive, porém não consigo dar permissão de execução para ambos.

Dei uma pesquisada, e aparentemente terei que remontar o pen drive em modo sudo.

Fórum do Ubuntu sobre o processo

SELF recebe o nome do script sem o diretório e sem o .sh, por exemplo, no geral o ${0} tem esse valor quando o Script executado dando dois cliques:

/caminho/para/o/script.sh

O que a variável SELF faz é ignorar o /caminho/para/o/ e o .sh, ficando apenas .sh, vc não precisa mexer em nada

Só um adendo: ainda não consegui dar permissão para o script rodar o appimage dentro do pen drive
Pelo visto, eu teria que dar permissão para ambos, certo?