Безопасная установка Kotlin, подписи пакетов, автообновление и т. Д.

10

Kotlin привлекает всеобщее внимание как отличный язык программирования, и теперь официально поддерживается, например, для разработки под Android. Но параметры, которые я вижу для его установки , не совсем ясны в вопросах безопасности. Я не знаю, проверяет ли sdkman (или даже поддерживает) подписи на пакетах, я не знаю, отслеживает ли он автоматически обновления безопасности для Kotlin и других установленных пакетов (как это делает apt-get), я не знаю, насколько велика установка будет и т.д.

Итак, чтобы подвести итог

Существует ли подход к установке Kotlin, который является относительно безопасным (с сигнатурами пакетов, автообновлением и т. Д.)?

Например, есть ли PPA для этого? (Кто-нибудь даже работает, чтобы упаковать его для Debian / Ubuntu?).

Или sdkman обладает необходимыми свойствами?

Или есть какой-то другой подход?

Обновление: я вижу, что ubuntu-make (umake) является опцией. Для IDEA и Kotlin кажется, что версия из их ppa все еще нужна, как объясняется в Ubuntu Make 16.03, выпущенной с Eclipse JEE и поддержкой IntelliJ IDEA EAP, Подробнее

Но я удивлен, что не могу легко найти какую-либо информацию по аспектам безопасности umake, и кажется, что они еще не обновляют ( инструменты обновления · Выпуск # 74 ), поэтому мой вопрос остается открытым.

nealmcb
источник
@Alban Спасибо, что подтолкнули меня к разъяснению основного вопроса.
nealmcb

Ответы:

2

Компилятор командной строки Kotlin, разработанный JetBrains, может быть установлен как мгновенный пакет во всех поддерживаемых в настоящее время версиях Ubuntu. Чтобы установить его, откройте терминал и введите:

sudo apt install snapd  
sudo snap install kotlin --classic 

Доступные инструменты:

  • kotlinc
  • kotlinc-JVM
  • kotlinc-JS
  • Котлин-ДС-JS

пример

  1. Создайте простое приложение в Kotlin, которое отображает Hello, World!. Создайте новый файл с исполняемым разрешением с именем hello.kt со следующим:

    fun main(args: Array<String>) {
        println("Hello, World!")
    }
    
  2. Скомпилируйте приложение, используя компилятор Kotlin.

    kotlinc hello.kt -include-runtime -d hello.jar  
  3. Запустите приложение.

    java -jar hello.jar
Карел
источник
1
Ах, спасибо! Также кажется, что с 14.04 вам нужно установить новый бэкпорт snapd в trusty: sudo apt install snapd прежде чем вы сможете запустить snap.
nealmcb
Быстрая установка работала нормально. Однако "человек делает" не работает. Когда я смотрю в / snap / kotlin, я вижу кучу страниц руководства. Snap должен был также установить это?
Стивен Смит
kotlin -hработает хорошо для начала. -hВариант также работает для всех снимков. После этого я использую онлайн-уроки и документацию.
Карел
1
Спасибо. Я только что обнаружил, что man install также является ошибкой # 1575593 для привязки.
Стивен Смит
Спасибо! Ссылка на последнее состояние ошибки страницы справки
nealmcb
2

Я не знаю об умаке. Я только что написал небольшой скрипт bash для генерации минимального пакета deb из распределённого zip-архива.

Создайте новый файл 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}

А затем запустите:

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

После этого вы можете установить сгенерированный kotlinc_1.1.51_all.debкак обычный пакет deb.

Des Nerger
источник
Спасибо! Это звучит как отличная отправная точка для реального пакета Debian или, по крайней мере, для Ubuntu ppa, который некоторые организации могут взять на себя обязательство постоянно обновлять. Но моя главная цель - установить его так, чтобы он был и остается безопасным, и для этого требуются как подписи, так и пакетный подход, подкрепленный надежным и заслуживающим доверия обязательством поддерживать его в актуальном состоянии.
nealmcb
1
ОК, этот ответ дает возможность установить . Вопрос OP был «Есть ли подход к установке Kotlin, который является относительно безопасным». Итак ... как сделать безопасную упаковку из почтового файла? Этот ответ не касается этой части. Не хочу понижать голос, но ответ не касается сути вопроса
Сергей Колодяжный
@SergiyKolodyazhnyy, может быть, мы определяем «безопасность» по-другому. Он написал «ОТНОСИТЕЛЬНО безопасный». И я считаю, что мой подход более безопасен, чем делать curl -s https://get.sdkman.io | bash && sdk install kotlin. При создании пакета .deb я получаю пакет напрямую из апстрима, без посредника (sdkman). Таким образом, я считаю это безопаснее. Конечно, подход в текущей форме не имеет полностью автоматических (в том числе безопасных) обновлений, но автоматизировать его будет несложно.
Des
1
@DesNerger ОК, получить его из апстрима - ОК, но факт таков: 1) вы не упомянули, откуда взялся zip-пакет; 2) в вашем ответе нет упоминания о безопасности; это просто говорит о сценарии, который вы сделали. Это круто и все, но сайт типа вопрос-ответ, поэтому вы должны придерживаться определенного формата. ОП спросил одну вещь, вы предоставили сценарий и не объяснили, как он относится к исходным вопросам. Не расстраивайтесь, просто отредактируйте свой ответ, возможно, вы могли бы включить туда материал из своего комментария.
Сергей Колодяжный
1
@DrBeco, они обычно публикуют его там: github.com/JetBrains/kotlin/releases/latest
Des