Instalando o Kotlin com segurança, com assinaturas de pacotes, atualização automática etc.

10

O Kotlin está ganhando atenção generalizada como uma ótima linguagem de programação e agora é oficialmente suportado, por exemplo, no desenvolvimento de Android. Mas as opções que eu vejo para instalá-lo não são claras sobre problemas de segurança. Não sei se o sdkman verifica (ou até suporta) assinaturas nos pacotes, não sei se ele rastreia automaticamente as atualizações de segurança no Kotlin e outros pacotes instalados (como o apt-get), não sei o tamanho do arquivo. instalação vai ser, etc.

Entao, para resumir

Existe uma abordagem de instalação para o Kotlin que seja relativamente segura (com assinaturas de pacotes, atualização automática etc)?

Por exemplo, existe um PPA para isso? (Alguém está trabalhando para empacotá-lo para o Debian / Ubuntu?).

Ou o sdkman tem as propriedades necessárias?

Ou existe alguma outra abordagem?

Atualização: Vejo que o ubuntu-make (umake) é uma opção. Para o IDEA e o Kotlin, parece que a versão do seu ppa ainda é necessária, conforme explicado no Ubuntu Make 16.03 lançado com o Eclipse JEE e o IntelliJ IDEA EAP Support, Mais

Mas estou surpreso por não encontrar facilmente nenhuma informação sobre os aspectos de segurança do umake e parece que eles ainda não fazem atualizações ( ferramentas de atualização · Edição nº 74 ), por isso minha pergunta permanece em aberto.

nealmcb
fonte
@ Alban Obrigado por me cutucar para esclarecer a questão subjacente.
Nealmcb 20/05

Respostas:

2

O compilador Kotlin da linha de comando desenvolvido pela JetBrains pode ser instalado como um pacote instantâneo em todas as versões atualmente suportadas do Ubuntu. Para instalá-lo, abra o terminal e digite:

sudo apt install snapd  
sudo snap install kotlin --classic 

Ferramentas disponíveis:

  • kotlinc
  • kotlinc-jvm
  • kotlinc-js
  • kotlin-dce-js

Exemplo

  1. Crie um aplicativo simples no Kotlin que seja exibido Hello, World!. Crie um novo arquivo com permissão executável chamada hello.kt com o seguinte:

    fun main(args: Array<String>) {
        println("Hello, World!")
    }
  2. Compile o aplicativo usando o compilador Kotlin.

    kotlinc hello.kt -include-runtime -d hello.jar  
  3. Execute o aplicativo

    java -jar hello.jar
karel
fonte
11
Ahh obrigado! Parece também que, com o 14.04, você precisa instalar o novo backport do snapd para o confiável: sudo apt install snapd antes de executar o snap.
Nealmcb 4/04
Instalação instantânea funcionou bem. No entanto, "o homem faz" não funciona. Quando olho para / snap / kotlin, vejo várias páginas de manual. O snap também deve ter instalado esses?
steven smith
kotlin -hfunciona bem para iniciantes. A -hopção também funciona para todos os snaps. Depois disso, uso tutoriais e documentação on-line.
Karel
11
Obrigado. Acabei de descobrir que a instalação do homem também é o bug # 1575593 para snap.
steven smith
Obrigado! Fazer a ligação para o estado mais recente do homem página bug para SNAP: bugs.launchpad.net/snapd/+bug/1575593
nealmcb
2

Eu não sei sobre umake. Acabei de escrever um pequeno script bash para gerar um pacote deb mínimo a partir do arquivo zip distribuído.

Crie um novo arquivo kotlinc-deb :

#!/usr/bin/env bash
if [ -z "$1" ]; then echo "Error: no input zip file is specified"; exit 1; fi
version=${1#kotlin-compiler-}
version=${version%.zip}
unzip $1 -d kotlinc_${version}_all/
cd kotlinc_${version}_all/
mkdir -v opt
mv -v kotlinc opt/
rm -rv 'opt/kotlinc/bin/'*.bat
mkdir -vp usr/{bin,share/doc}
mv -v opt/kotlinc/license usr/share/doc/kotlinc
sed -i $'s/\r$//' 'opt/kotlinc/bin/'* #The new 1.2.0 version has shell scripts in
                                      # CRLF format. That causes issues when running
                                      # them. So I added this CRLF to LF conversion
cd usr/bin
ln -svt . '../../opt/kotlinc/bin/'*
cd ../..
mkdir -v DEBIAN
cat >DEBIAN/control <<EOF
Package: kotlinc
Version: ${version}
Section: java
Priority: optional
Maintainer: ${LOGNAME} <${LOGNAME}@localhost>
Architecture: all
Description: The Kotlin compiler
 The compiler for the Kotlin programming language.
EOF
dpkg-deb -b ../kotlinc_${version}_all{,.deb}

E então execute:

$ chmod +x kotlinc-deb
$ ./kotlinc-deb kotlin-compiler-1.1.51.zip

Depois disso, você pode instalar o kotlinc_1.1.51_all.debpacote deb gerado como de costume.

Des Nerger
fonte
Obrigado! Isso soa como um excelente ponto de partida para um pacote Debian real, ou pelo menos um Ubuntu ppa, que alguma organização poderia comprometer em manter atualizada. Mas meu principal objetivo é instalá-lo de uma maneira que seja e permaneça segura, e que exija assinaturas e uma abordagem de empacotamento apoiada por um compromisso confiável e credível para mantê-lo atualizado.
N
11
OK, esta resposta fornece uma maneira de instalar . A pergunta do OP foi "Existe uma abordagem de instalação para o Kotlin que é relativamente segura". Então ... como exatamente tornar seguro um pacote de cama de arquivo zip? Esta resposta não aborda essa parte. Não quero downvote, mas a resposta não é abordar o cerne da questão
Sergiy Kolodyazhnyy
@SergiyKolodyazhnyy, talvez possamos definir "segurança" de maneira diferente. Ele escreveu "RELATIVO seguro". E acredito que minha abordagem é mais segura do que fazer curl -s https://get.sdkman.io | bash && sdk install kotlin. Ao gerar um pacote .deb eu mesmo, recebo um pacote diretamente de um montante, sem um intermediário (sdkman). Assim, eu vejo isso como mais seguro. É claro que a abordagem no formulário atual carece de atualizações totalmente automáticas (inclusive seguras), mas não será difícil automatizá-la ainda mais.
Des Nerger 04/04
11
@DesNerger OK, obtê-lo do upstream está OK, no entanto, o fato é que 1) você não mencionou a origem do pacote zip; 2) não há menção à segurança em sua resposta; apenas fala sobre o roteiro que você criou. É legal e tudo, mas o site é do tipo pergunta-resposta, então você precisa aderir a um formato específico. O OP perguntou uma coisa: você forneceu um script e não explicou como ele se relaciona às perguntas originais. Não fique frustrado, basta editar sua resposta, você provavelmente pode incluir coisas do seu comentário lá.
Sergiy Kolodyazhnyy
11
@DrBeco, eles costumam publicá-lo lá: github.com/JetBrains/kotlin/releases/latest
Des Nerger