Instalación segura de Kotlin, con firmas de paquetes, actualización automática, etc.

10

Kotlin está ganando mucha atención por ser un gran lenguaje de programación y ahora es oficialmente compatible, por ejemplo, para el desarrollo de Android. Pero las opciones que veo para instalarlo no están claras sobre los problemas de seguridad. No sé si sdkman comprueba (o incluso admite) firmas en los paquetes, no sé si rastrea automáticamente las actualizaciones de seguridad en Kotlin y otros paquetes instalados (como lo hace apt-get), no sé qué tan grande es el la instalación va a ser, etc.

Así que para resumir

¿Existe un enfoque de instalación para Kotlin que sea relativamente seguro (con firmas de paquetes, actualización automática, etc.)?

Por ejemplo, ¿hay un PPA para ello? (¿Alguien está trabajando para empaquetarlo para Debian / Ubuntu?).

¿O sdkman tiene las propiedades necesarias?

¿O hay algún otro enfoque?

Actualización: veo que ubuntu-make (umake) es una opción. Para IDEA y Kotlin, parece que todavía se necesita la versión de su ppa, como se explicó en Ubuntu Make 16.03 lanzado con Eclipse JEE e IntelliJ IDEA EAP Support, más

Pero me sorprende que no pueda encontrar fácilmente ninguna información sobre los aspectos de seguridad de umake, y parece que todavía no realizan actualizaciones ( herramientas de actualización · Problema # 74 ), por lo que mi pregunta sigue abierta.

nealmcb
fuente
@Alban Gracias por empujarme para aclarar la pregunta subyacente.
nealmcb

Respuestas:

2

El compilador Kotlin de línea de comandos desarrollado por JetBrains se puede instalar como un paquete instantáneo en todas las versiones compatibles de Ubuntu. Para instalarlo, abra el terminal y escriba:

sudo apt install snapd  
sudo snap install kotlin --classic 

Herramientas disponibles:

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

Ejemplo

  1. Cree una aplicación simple en Kotlin que se muestre Hello, World!. Cree un nuevo archivo con permiso ejecutable llamado hello.kt con lo siguiente:

    fun main(args: Array<String>) {
        println("Hello, World!")
    }
  2. Compile la aplicación usando el compilador Kotlin.

    kotlinc hello.kt -include-runtime -d hello.jar  
  3. Ejecuta la aplicación.

    java -jar hello.jar
karel
fuente
1
Ahh gracias! También parece que con 14.04, necesita instalar el nuevo backport de snapd a trusty: sudo apt install snapd antes de poder ejecutar snap.
nealmcb
La instalación rápida funcionó bien. Sin embargo, "el hombre sí" no funciona. Cuando miro debajo de / snap / kotlin veo un montón de páginas de manual. ¿Snap también debería haber instalado estos?
Steven Smith
kotlin -hfunciona bien para empezar. La -hopción también funciona para todas las instantáneas. Después de eso, uso tutoriales y documentación en línea.
karel
1
Gracias. Acabo de descubrir que man install también es el error # 1575593 para snap.
Steven Smith
¡Gracias! Enlace para el último estado del error de la página de manual para snap: bugs.launchpad.net/snapd/+bug/1575593
nealmcb
2

No sé sobre umake. Acabo de escribir un pequeño script bash para generar un paquete de deb mínimo del archivo zip distribuido.

Cree un nuevo archivo 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}

Y luego corre:

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

Después de eso, puede instalar el generado kotlinc_1.1.51_all.debcomo un paquete deb habitual.

Des Nerger
fuente
¡Gracias! Eso suena como un gran punto de partida para un paquete Debian real, o al menos un ppa de Ubuntu, que algunas organizaciones podrían comprometerse a mantener actualizado. Pero mi objetivo principal es instalarlo de una manera que sea y siga siendo segura, y que requiera firmas y un enfoque de empaque respaldado por un compromiso confiable y creíble para mantenerlo actualizado.
nealmcb
1
OK, esta respuesta da una forma de instalar . La pregunta de OP fue "¿Existe un enfoque de instalación para Kotlin que sea relativamente seguro". Entonces ... ¿cómo exactamente hacer un paquete de cama de archivo zip seguro? Esta respuesta no aborda esa parte. No quiero hacer un voto negativo, pero la respuesta no aborda el núcleo de la pregunta
Sergiy Kolodyazhnyy
@SergiyKolodyazhnyy, tal vez definimos "seguridad" de manera diferente. Escribió "RELATIVO seguro". Y creo que mi enfoque es más seguro que hacerlo curl -s https://get.sdkman.io | bash && sdk install kotlin. Al generar un paquete .deb yo mismo, obtengo un paquete directamente de una cadena arriba, sin un intermediario (sdkman). Por eso lo veo más seguro. Por supuesto, el enfoque en la forma actual carece de actualizaciones totalmente automáticas (incluidas las seguras), pero no será difícil automatizarlo aún más.
Des Nerger
1
@DesNerger OK, obtenerlo desde arriba está bien, sin embargo, el hecho es que 1) no mencionaste de dónde viene el paquete zip; 2) no hay mención de seguridad en su respuesta; solo habla del guión que hiciste. Es genial y todo, pero el sitio es del tipo de preguntas y respuestas, por lo que debe cumplir con un formato específico. OP preguntó una cosa, proporcionó un guión y no explica cómo se relaciona con las preguntas originales. No se frustre, solo edite su respuesta, probablemente podría incluir cosas de su comentario allí.
Sergiy Kolodyazhnyy
1
@DrBeco, generalmente lo publican allí: github.com/JetBrains/kotlin/releases/latest
Des Nerger