Open guiscaranse opened 6 years ago
Para Debian/Ubuntu deve ser bem fácil.
Para macOS acho possível criar um script que instale tudo automaticamente.
Já para o Windows, a melhor opção me parece ser algo como o NSIS.
Vou tentar criar os instaladores e se conseguir eu respondo aqui.
O arquivo .travis.yml contém instruções de instalação que são testadas automaticamente no linux, através do travis.
Acho que uma solução interessante seria usar o Anaconda/Miniconda, que apesar de ligado ao python, serve como gerenciador de programas multiplataforma. Inclusive diferenciando a instalação do programas por plataforma (osx, Linux, Windows)
Olhei rapidamente, o Anaconda tem repositórios com o programas: pandoc, ruby, texlive (também há o miktex), Perl, latexmk.
Nunca mexi nessa parte de repositório, mas pelo o que sei, a maioria só clona/indica de repositórios mais usados (conda-forge e anaconda) pra instalar as dependências. No caso do limarka, só teria que adicionar num repositório a pasta com as gems.
Enfim. Criando um repositório "repo-limarka", dava pra instalar tudo com um único comando
conda install -c repo-limarka limarka
Eu usuária o miniconda, cujo instalador é pequeno (uns 40mb) e basicamente só instala o python. Depois é só o usuário usar o comando acima.
Hm, pode ser uma solução interessante. Na verdade, uma vez o limarka adicionado no repositório, podemos apenas criar um instalador leve com o miniconda que rode os comandos, verifique dependencias e etc. (Para usuários pouco experientes)
Justamente, é isso que o Anaconda/miniconda faz, @guiscaranse. Sempre instala os pacotes atuais, no momento da instalação /ou quando pedido pra atualizar. Em outras palavras, se o limarka lançar uma atualização ou se o usuário digitar "conda update limarka " (acho que é assim), ele atualiza os binários.
Terça feira, eu posso tentar vasculhar verificações. Do que eu testei, o limarka tem algumas dependências que precisam ser compiladas, quando instaladas com o "gem install" (precisam de compiladores (uns 70mb [gcc blá-blá-blá ]). Verei se colando o Ruby do Anaconda/Miniconda no path e substituindo o ruby do sistema pelo instalada, se funciona. Se funcionar, é só colocar no futuro repositório do limarka (não tenho experiência no assunto do Anaconda/Miniconda). Posso tentar criar esse repositório, mas estou sem tempo (tempo efetivo). Por isso dá pra colocar essa issue como uma implementação a ser considerada sem muita prioridade. Sinceramente, acho que é a situação mais trivial. Já fiz instalações quer eram triviais no Linux que era difíceis no windows (por exemplo, o jmol) e vice-versa, sem precisar de compilação. Além disso, dá pra adicionar instalacoes do osx, que não tenho contato.
Mas eu estou me referindo ao usuário básico @cauachagas, com pouca instrução e conhecimentos de linha de comandos. Estava me referindo a fazer um instalador visual que implementasse o miniconda/anaconda de fundo para que esse tipo de usuário também pudesse instalar o limarka sem precisar mexer no anaconda/miniconda.
Para auxiliar nos scripts de instalação:
#!/usr/bin/env sh
while getopts ":a:" opt; do
case $opt in
a)
echo "-a was triggered, Parameter: $OPTARG" >&2
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Opção -$OPTARG requer argumento." >&2
exit 1
;;
esac
done
@edusantana, pelo o que entendi, esse seu modelo serve para adicionar parâmetros, certo? Como adaptar esse meu script com o que você mandou?
#!/usr/bin/env sh
echo "Instalação do Pandoc..."
echo "Obs: Este script sempre instala a ultima versão do Pandoc"
# Adaptado de https://blog.markvincze.com/download-artifacts-from-a-latest-github-release-in-sh-and-powershell/
repo="jgm/pandoc"
releases="https://github.com/$repo/releases"
release=$(curl -L -s -H 'Accept: application/json' $releases/latest)
tag=$(echo $release | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/')
# Somente nos arquivos ".deb" é adicionado o "-1"
file="pandoc-$tag-1-amd64.deb"
wget echo $releases/download/$tag/$file && sudo dpkg -i $file.deb
echo "Instalação do TinyTeX..."
wget -qO- "https://yihui.name/gh/tinytex/tools/install-unx.sh" | sh
echo -e "\n\n# TinyTeX" >> ~/.bashrc
# Alguns binários não são linkados em "~/bin"
echo "export "PATH"=$"PATH":~/.TinyTeX/bin/x86_64-linux" >> ~/.bashrc
source ~/.bashrc
tlmgr install memoir abntex2 lastpage microtype lipsum pdfpages ifetex textcase enumitem xcolor babel-portuges listings
# Pacotes adicionais
# shipunov. Melhor quadros https://github.com/abntex/limarka/issues/183
# texliveonfly. Instalar pacotes automáticamente https://github.com/abntex/limarka/issues/184
# tlmgr install shipunov texliveonfly
versao=$( lsb_release -rs)
# Ubuntu 17.10 < já estão descontuados.
# Somente a LTS 16.04 é mantida
# Comparação de floats https://stackoverflow.com/questions/8654051/how-to-compare-two-floating-point-numbers-in-bash/31087503#31087503
if (( $(echo "${versao::4} < 18.1" |bc -l) )); then
if [ $( lsb_release -cs) == Bionic ]; then
sudo add-apt-repository ppa:malteworld/ppa
echo "Atualizando repositórios"
if ! sudo apt-get update
then
echo "Não foi possível atualizar os repositórios. Verifique seu arquivo /etc/apt/sources.list"
exit 1
fi
echo "Atualização de repositórios feita com sucesso"
fi
sudo apt-get install pdftk
else
# Ubuntu >= 18.10
sudo apt-get install pdftk-java
fi
sudo apt-get install ruby-full poppler-utils xclip make gcc
echo "Instalação das dependências do Limarka finalizada"
if ! sudo gem install limarka
then
echo "Não foi possível instalar o limarka"
exit 1
fi
# Se optar por não usar sudo deverá adicionar o caminho dos binários
# Um exemplo é dado abaixo
#gem install limarka
#echo -e "\n\n# RUBY GEMS BIN" >> ~/.bashrc
#echo export "PATH"=$"PATH":$~/.gem/ruby/2.x.x/bin >> ~/.bashrc
Quero colocar opções de adicionar pacotes adicionais no TinyTex, por exemplo.
Não cheguei a testar o script (usando Manjaro). Se alguém puder testar, seria uma boa contribuição.
@cauachagas quais as opções que gostaria que o seu script tenha?
script.sh -ARGUMENTO pacote1 pacote2
.Não tenho muita criatividade para pensar em outras coisas. Desculpe :grimacing:
@cauachagas fiz esse script bin/instalador.sh que estou utilizando nos testes do limarka. Basta atualizar para as outras alternativas.
Criar uma fórmula brew para instalação automática do limarka.
Criei essa issue para estudar a possibilidade de construir um instalador automático do Limarka. Acredito que o correto seria buscar e instalar os pacotes necessários, testá-los e instalar o Limarka por cima.