Installare Kotlin in modo sicuro, con firme dei pacchetti, aggiornamento automatico ecc


10

Kotlin sta guadagnando una diffusa attenzione come ottimo linguaggio di programmazione e ora è ufficialmente supportato, ad esempio per lo sviluppo di Android. Ma le opzioni che vedo per installarlo non sono chiare sui problemi di sicurezza. Non so se sdkman controlla (o addirittura supporta) le firme sui pacchetti, non so se tiene traccia automaticamente degli aggiornamenti di sicurezza su Kotlin e altri pacchetti installati (come apt-get), non so quanto sia grande il l'installazione sarà, ecc.

Quindi per riassumere

Esiste un approccio di installazione per Kotlin relativamente sicuro (con firme dei pacchetti, aggiornamento automatico ecc.)?

Ad esempio, c'è un PPA per questo? (Qualcuno sta persino lavorando per impacchettarlo per Debian / Ubuntu?).

O sdkman ha le proprietà necessarie?

O c'è qualche altro approccio?

Aggiornamento: vedo che ubuntu-make (umake) è un'opzione. Per IDEA e Kotlin, sembra che la versione del loro ppa sia ancora necessaria, come spiegato in Ubuntu Make 16.03 Rilasciato con Eclipse JEE e IntelliJ IDEA EAP Support, Altro

Ma sono sorpreso che non riesco a trovare facilmente alcuna informazione sugli aspetti di sicurezza di umake e sembra che non facciano ancora aggiornamenti ( strumenti di aggiornamento · Numero 74 ), quindi la mia domanda rimane aperta.


@Alban Grazie per avermi spinto a chiarire la domanda di fondo.
nealmcb,

Risposte:


2

Il compilatore Kotlin da riga di comando sviluppato da JetBrains può essere installato come pacchetto snap in tutte le versioni attualmente supportate di Ubuntu. Per installarlo, apri il terminale e digita:

sudo apt install snapd  
sudo snap install kotlin --classic 

Strumenti disponibili:

  • kotlinc
  • kotlinc-jvm
  • kotlinc-js
  • Kotlin-DCE-js

Esempio

  1. Crea una semplice applicazione in Kotlin che viene visualizzata Hello, World!. Crea un nuovo file con autorizzazione eseguibile chiamato hello.kt con il seguente:

    fun main(args: Array<String>) {
        println("Hello, World!")
    }
  2. Compilare l'applicazione utilizzando il compilatore Kotlin.

    kotlinc hello.kt -include-runtime -d hello.jar  
  3. Esegui l'applicazione.

    java -jar hello.jar

1
Ah grazie! Sembra anche che con 14.04, sia necessario installare il nuovo backport di snapd su fidato: sudo apt install snapd prima di poter eseguire snap.
nealmcb,

L'installazione di Snap ha funzionato bene. Comunque "l'uomo fa" non funziona. Quando guardo sotto / snap / kotlin vedo un mucchio di pagine man. Snap dovrebbe aver installato anche questi?
Steven Smith,

kotlin -hfunziona bene per i principianti. L' -hopzione funziona anche per tutti gli snap. Successivamente utilizzo tutorial e documentazione online.
Karel

1
Grazie. Ho appena scoperto che man install è anche bug # 1575593 per snap.
Steven Smith,

Grazie! Link per l'ultimo stato del bug della pagina man per snap: bugs.launchpad.net/snapd/+bug/1575593
nealmcb

2

Non so di Umake. Ho appena scritto un piccolo script bash per generare un pacchetto deb minimo dall'archivio zip distribuito.

Crea un nuovo file 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 poi esegui:

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

Successivamente, è possibile installare il kotlinc_1.1.51_all.debpacchetto deb generato come al solito.


Grazie! Sembra un ottimo punto di partenza per un vero pacchetto Debian, o almeno un ppa di Ubuntu, che alcune organizzazioni potrebbero impegnarsi a mantenere aggiornato. Ma il mio obiettivo principale è installarlo in un modo che sia e rimanga sicuro, e che richieda sia le firme che un approccio al packaging supportato da un impegno affidabile e credibile per mantenerlo aggiornato.
nealmcb,

1
OK, questa risposta consente di installare . La domanda di OP era "Esiste un approccio all'installazione per Kotlin relativamente sicuro"? Quindi ... come rendere sicuro un pacchetto bed da file zip sicuro? Questa risposta non riguarda quella parte. Non voglio sottovalutare, ma la risposta non sta affrontando il nocciolo della domanda
Sergiy Kolodyazhnyy,

@SergiyKolodyazhnyy, forse definiamo la "sicurezza" in modo diverso. Ha scritto "RELATIVO sicuro". E credo che il mio approccio sia più sicuro che fare curl -s https://get.sdkman.io | bash && sdk install kotlin. Quando si genera un pacchetto .deb, ottengo un pacchetto direttamente da un upstream, senza un intermediario (sdkman). Quindi lo vedo più sicuro. Ovviamente l'approccio nella forma attuale è privo di aggiornamenti completamente automatici (incl. Sicuri) ma non sarà difficile automatizzarlo ulteriormente.
Des Nerger,

1
@DesNerger OK, ottenerlo da upstream è OK, tuttavia è un dato di fatto che 1) non sei riuscito a menzionare la provenienza del pacchetto zip; 2) non c'è nessuna menzione di sicurezza nella tua risposta; parla solo della sceneggiatura che hai realizzato. È fantastico e tutto, ma il sito è di tipo domanda-risposta, quindi devi aderire a un formato specifico. OP ha chiesto una cosa, hai fornito uno script e nessuna spiegazione su come si collega alle domande originali. Non essere frustrato, basta modificare la tua risposta, probabilmente potresti includere cose dal tuo commento lì.
Sergiy Kolodyazhnyy il

1
@DrBeco, di solito lo pubblicano lì: github.com/JetBrains/kotlin/releases/latest
Des Nerger
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.