-
-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Criar um instalador automático #161
Comments
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? |
Não tenho muita criatividade para pensar em outras coisas. Desculpe 😬 |
@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.
The text was updated successfully, but these errors were encountered: