Installer Kotlin en toute sécurité, avec les signatures de package, la mise à jour automatique, etc.


10

Kotlin est de plus en plus considéré comme un excellent langage de programmation et est désormais officiellement pris en charge, par exemple pour le développement Android. Mais les options que je vois pour l'installer ne sont pas claires sur les problèmes de sécurité. Je ne sais pas si sdkman vérifie (ou prend même en charge) les signatures sur les packages, je ne sais pas s'il suit automatiquement les mises à jour de sécurité sur Kotlin et les autres packages installés (comme apt-get le fait), je ne sais pas quelle taille l'installation va être, etc.

Pour résumer

Existe-t-il une approche d'installation pour Kotlin qui est relativement sécurisée (avec signatures de packages, mise à jour automatique, etc.)?

Par exemple, existe-t-il un AAE pour cela? (Quelqu'un travaille-t-il même pour l'empaqueter pour Debian / Ubuntu?).

Ou est-ce que sdkman a les propriétés nécessaires?

Ou existe-t-il une autre approche?

Mise à jour: je vois que ubuntu-make (umake) est une option. Pour IDEA et Kotlin, il semble que la version de leur ppa soit toujours nécessaire, comme expliqué sur Ubuntu Make 16.03 publié avec Eclipse JEE et IntelliJ IDEA EAP Support, Plus

Mais je suis surpris de ne pas pouvoir trouver facilement d'informations sur les aspects de sécurité d'umake, et il semble qu'ils ne fassent pas encore de mises à jour ( outils de mise à jour · Numéro # 74 ), donc ma question reste ouverte.


@ Alban Merci de m'avoir donné un coup de pouce pour clarifier la question sous-jacente.
nealmcb

Réponses:


2

Le compilateur Kotlin en ligne de commande développé par JetBrains peut être installé en tant que package snap dans toutes les versions actuellement prises en charge d'Ubuntu. Pour l'installer, ouvrez le terminal et tapez:

sudo apt install snapd  
sudo snap install kotlin --classic 

Outils disponibles:

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

Exemple

  1. Créez une application simple dans Kotlin qui s'affiche Hello, World!. Créez un nouveau fichier avec l'autorisation exécutable appelé hello.kt avec les éléments suivants:

    fun main(args: Array<String>) {
        println("Hello, World!")
    }
    
  2. Compilez l'application à l'aide du compilateur Kotlin.

    kotlinc hello.kt -include-runtime -d hello.jar  
  3. Exécutez l'application.

    java -jar hello.jar

1
Ahh merci! Il semble également qu'avec la version 14.04, vous devez installer le nouveau backport de snapd sur trusty: sudo apt install snapd avant de pouvoir exécuter snap.
nealmcb

L'installation instantanée a bien fonctionné. Mais "l'homme fait" ne fonctionne pas. Quand je regarde sous / snap / kotlin, je vois un tas de pages de manuel. Snap aurait-il dû également les installer?
steven smith

kotlin -hfonctionne bien pour commencer. L' -hoption fonctionne également pour tous les snaps. Après cela, j'utilise des tutoriels et de la documentation en ligne.
karel

1
Merci. Je viens de découvrir que l'installation de man est également le bogue # 1575593 pour snap.
steven smith

Merci! Lien pour le dernier état du bogue de page de manuel pour snap: bugs.launchpad.net/snapd/+bug/1575593
nealmcb

2

Je ne sais pas pour umake. Je viens d'écrire un petit script bash pour générer un paquet deb minimal à partir de l'archive zip distribuée.

Créez un nouveau fichier 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}

Et puis exécutez:

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

Après cela, vous pouvez installer le kotlinc_1.1.51_all.debpackage deb généré comme d'habitude.


Merci! Cela ressemble à un excellent point de départ pour un vrai paquet Debian, ou au moins un ppa Ubuntu, qu'une organisation pourrait s'engager à maintenir à jour. Mais mon objectif principal est de l'installer d'une manière qui est et reste sécurisée, et qui nécessite à la fois des signatures et une approche de packaging appuyée par un engagement fiable et crédible pour le maintenir à jour.
nealmcb

1
OK, cette réponse donne un moyen d'installer . La question d'OP était "Existe-t-il une approche d'installation pour Kotlin qui soit relativement sécurisée". Alors ... comment sécuriser un paquet de lit à partir d'un fichier zip? Cette réponse ne traite pas de cette partie. Je ne veux pas voter contre, mais la réponse ne répond pas au cœur de la question
Sergiy Kolodyazhnyy

@SergiyKolodyazhnyy, nous définissons peut-être la «sécurité» différemment. Il a écrit "RELATIVE secure". Et je crois que mon approche est plus sûre que de le faire curl -s https://get.sdkman.io | bash && sdk install kotlin. Lors de la génération d'un package .deb moi-même, j'obtiens un package directement à partir d'un amont, sans intermédiaire (sdkman). Ainsi, je le vois plus sûr. Bien sûr, l'approche sous la forme actuelle manque de mises à jour entièrement automatiques (y compris sécurisées), mais il ne sera pas difficile de l'automatiser davantage.
Des Nerger

1
@DesNerger OK, l'obtenir en amont est OK, mais le fait est que 1) vous n'avez pas mentionné d'où vient le paquet zip; 2) il n'y a aucune mention de sécurité dans votre réponse; il ne fait que parler du script que vous avez créé. C'est cool et tout, mais le site est de type question-réponse, vous devez donc respecter un format spécifique. OP a demandé une chose, vous avez fourni un script et aucune explication sur la façon dont il se rapporte aux questions originales. Ne soyez pas frustré, modifiez simplement votre réponse, vous pourriez probablement y inclure des éléments de votre commentaire.
Sergiy Kolodyazhnyy

1
@DrBeco, ils le publient généralement là: github.com/JetBrains/kotlin/releases/latest
Des Nerger
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.