Sichere Installation von Kotlin mit Paketsignaturen, automatischer Aktualisierung usw.


10

Kotlin erlangt als großartige Programmiersprache breite Aufmerksamkeit und wird jetzt offiziell unterstützt, z. B. für die Android-Entwicklung. Aber die Optionen, die ich für die Installation sehe, sind nicht klar über Sicherheitsprobleme. Ich weiß nicht, ob sdkman Signaturen für Pakete überprüft (oder sogar unterstützt). Ich weiß nicht, ob Sicherheitsupdates für Kotlin und andere installierte Pakete automatisch nachverfolgt werden (wie bei apt-get). Ich weiß nicht, wie groß die Installation wird sein, etc.

Also um es zusammenzufassen

Gibt es einen Installationsansatz für Kotlin, der relativ sicher ist (mit Paketsignaturen, automatischer Aktualisierung usw.)?

Gibt es zum Beispiel eine PPA dafür? (Arbeitet jemand überhaupt daran, es für Debian / Ubuntu zu verpacken?).

Oder hat sdkman die notwendigen Eigenschaften?

Oder gibt es einen anderen Ansatz?

Update: Ich sehe, dass Ubuntu-make (umake) eine Option ist. Für IDEA und Kotlin scheint die Version von ihrem ppa noch erforderlich zu sein, wie unter Ubuntu Make 16.03 erläutert. Veröffentlicht mit Eclipse JEE und IntelliJ IDEA EAP Support, More

Aber ich bin überrascht, dass ich keine Informationen zu den Sicherheitsaspekten von umake leicht finden kann, und es scheint, dass sie noch keine Updates durchführen ( Aktualisierungstools · Problem Nr. 74 ), daher bleibt meine Frage offen.


@Alban Danke, dass du mich angestupst hast, um die zugrunde liegende Frage zu klären.
Nealmcb

Antworten:


2

Der von JetBrains entwickelte Befehlszeilen-Kotlin-Compiler kann in allen derzeit unterstützten Ubuntu-Versionen als Snap-Paket installiert werden. Um es zu installieren, öffnen Sie das Terminal und geben Sie Folgendes ein:

sudo apt install snapd  
sudo snap install kotlin --classic 

Verfügbare Werkzeuge:

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

Beispiel

  1. Erstellen Sie eine einfache Anwendung in Kotlin, die angezeigt wird Hello, World!. Erstellen Sie eine neue Datei mit ausführbarer Berechtigung namens hello.kt mit den folgenden Angaben:

    fun main(args: Array<String>) {
        println("Hello, World!")
    }
  2. Kompilieren Sie die Anwendung mit dem Kotlin-Compiler.

    kotlinc hello.kt -include-runtime -d hello.jar  
  3. Führen Sie die Anwendung aus.

    java -jar hello.jar

1
Ahh danke! Es scheint auch, dass Sie mit 14.04 den neuen Backport von snapd auf trusty installieren müssen: sudo apt install snapd bevor Sie snap ausführen können.
Nealmcb

Snap-Installation hat gut funktioniert. "Mann tut" funktioniert jedoch nicht. Wenn ich unter / snap / kotlin nachschaue, sehe ich eine Reihe von Manpages. Sollte snap diese auch installiert haben?
Steven Smith

kotlin -hfunktioniert für den Anfang OK. Die -hOption funktioniert auch für alle Schnappschüsse. Danach benutze ich Online-Tutorials und Dokumentation.
Karel

1
Vielen Dank. Ich habe gerade entdeckt, dass man install auch Fehler # 1575593 für Snap ist.
Steven Smith

Vielen Dank! Link für den neuesten Status der Manpage Bug für Snap: bugs.launchpad.net/snapd/+bug/1575593
Nealmcb

2

Ich weiß nichts über umake. Ich habe gerade ein kleines Bash-Skript geschrieben, um ein minimales Deb-Paket aus dem verteilten Zip-Archiv zu generieren.

Erstellen Sie eine neue Kotlinc-Deb- Datei:

#!/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}

Und dann laufen:

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

Danach können Sie das generierte kotlinc_1.1.51_all.debDeb-Paket wie gewohnt installieren .


Vielen Dank! Das klingt nach einem guten Ausgangspunkt für ein echtes Debian-Paket oder zumindest einen Ubuntu-ppa, den einige Organisationen auf dem neuesten Stand halten könnten. Mein Hauptziel ist es jedoch, es auf eine Weise zu installieren, die sicher ist und bleibt und die sowohl Signaturen als auch einen Verpackungsansatz erfordert, der durch eine vertrauenswürdige und glaubwürdige Verpflichtung unterstützt wird, um es auf dem neuesten Stand zu halten.
Nealmcb

1
OK, diese Antwort bietet eine Möglichkeit zur Installation . Die Frage von OP lautete: "Gibt es einen Installationsansatz für Kotlin, der relativ sicher ist?". Also ... wie genau macht man ein Bettpaket aus einer Zip-Datei sicher? Diese Antwort spricht diesen Teil nicht an. Ich möchte nicht abstimmen, aber die Antwort spricht nicht den Kern der Frage an
Sergiy Kolodyazhnyy

@SergiyKolodyazhnyy, vielleicht definieren wir "Sicherheit" anders. Er schrieb "RELATIVE sicher". Und ich glaube, dass mein Ansatz sicherer ist als dies zu tun curl -s https://get.sdkman.io | bash && sdk install kotlin. Wenn ich selbst ein .deb-Paket generiere, erhalte ich ein Paket direkt von einem Upstream ohne einen Middle Man (sdkman). Daher sehe ich es als sicherer an. Natürlich fehlen dem Ansatz in der aktuellen Form vollautomatische (inkl. Sichere) Updates, aber es wird nicht schwer sein, ihn weiter zu automatisieren.
Des Nerger

1
@DesNerger OK, es ist in Ordnung, es vom Upstream zu bekommen, aber Tatsache ist, dass 1) Sie nicht erwähnt haben, woher das Zip-Paket kommt; 2) In Ihrer Antwort wird die Sicherheit nicht erwähnt. Es geht nur um das Skript, das Sie erstellt haben. Es ist cool und alles, aber die Seite ist vom Typ Frage-Antwort, also muss man sich an ein bestimmtes Format halten. OP hat eine Frage gestellt: Sie haben ein Skript bereitgestellt und keine Erklärung, wie es sich auf die ursprünglichen Fragen bezieht. Seien Sie nicht frustriert, bearbeiten Sie einfach Ihre Antwort, Sie könnten wahrscheinlich Dinge aus Ihrem Kommentar dort einfügen.
Sergiy Kolodyazhnyy

1
@ DrBeco, sie veröffentlichen es normalerweise dort: github.com/JetBrains/kotlin/releases/latest
Des Nerger
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.