Безпечна установка Kotlin, з підписами пакета, автоматичним оновленням тощо


10

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

Отже, підводячи підсумки

Чи існує відносно безпечний підхід до встановлення Kotlin (з підписами пакета, автоматичним оновленням тощо)?

Наприклад, чи є для нього ППА? (Хтось навіть працює над тим, щоб упакувати його для Debian / Ubuntu?).

Або sdkman має необхідні властивості?

Або є якийсь інший підхід?

Оновлення: я бачу, що ubuntu-make (umake) - це варіант. Для IDEA та Kotlin, здається, версія від їхнього пакету досі потрібна, як пояснено в Ubuntu Make 16.03, випущеному за допомогою Eclipse JEE та IntelliJ IDEA EAP, більше

Але я здивований, що я не можу легко знайти будь-яку інформацію про аспекти безпеки umake, і, здається, вони ще не роблять оновлення ( інструменти для оновлення · Випуск № 74 ), тому моє питання залишається відкритим.


@Alban Дякую, що підштовхнув мене до уточнення основного питання.
nealmcb

Відповіді:


2

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

sudo apt install snapd  
sudo snap install kotlin --classic 

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

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

Приклад

  1. Створіть у Котліні просту програму, яка відображатиметься 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 вам потрібно встановити новий backport snapd до надійного: sudo apt install snapd перед тим, як запустити оснастку.
nealmcb

Пристосований монтаж справно працював Однак "людина робить" не працює. Коли я заглядаю під / snap / kotlin, я бачу купу чоловічих сторінок. Чи повинні вони також встановити їх?
Стівен Сміт

kotlin -hпрацює добре для початківців. Цей -hваріант також працює для всіх знімків. Після цього я користуюся онлайн-підручниками та документацією.
карел

1
Дякую. Щойно я виявив, що встановити людину - це також помилка # 1575593 для оснащення.
Стівен Сміт

Дякую! Посилання для останнього статусу помилки на сторінці чоловіка для оснащення: bugs.launchpad.net/snapd/+bug/1575593
nealmcb

2

Я не знаю про умаке. Я щойно написав невеликий сценарій bash для створення мінімального пакету дебютів із розподіленого 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як звичайний пакет дебютів.


Дякую! Це здається чудовою відправною точкою для справжнього пакета Debian або, принаймні, Ppa Ubuntu, який деякі організації можуть взяти на себе зобов’язання постійно оновлювати. Але моя головна мета - встановити його таким чином, який є і залишається захищеним, і для цього потрібні як підписи, так і підхід до упаковки, підкріплений надійним і надійним зобов'язанням, щоб воно було актуальним.
nealmcb

1
Добре, ця відповідь дає спосіб встановити . Питання ОП було "Чи є відносно безпечний підхід до встановлення Kotlin". Отже ... як саме зробити пакет ліжок із захищеного zip-файлу? Ця відповідь не стосується цієї частини. Не хочу оскаржувати, але відповідь не стосується суті питання
Сергій Колодяжний

@SergiyKolodyazhnyy, можливо, ми визначаємо "безпеку" по-різному. Він написав "ВІДПОВІДНО захищений". І я вважаю, що мій підхід безпечніший, ніж робити curl -s https://get.sdkman.io | bash && sdk install kotlin. Коли я генерую сам .deb пакет, я отримую пакунок безпосередньо з висхідного потоку, без середнього чоловіка (sdkman). Тому я вважаю це більш безпечним. З іншого боку, підходу в поточній формі не вистачає повністю автоматичних (у тому числі захищених) оновлень, але автоматизувати його не буде складно.
Des Nerger

1
@DesNerger ОК, отримувати його з висхідного потоку добре, однак факт полягає в тому, що 1) ви не змогли вказати, звідки походить поштовий пакет; 2) у вашій відповіді нульова згадка про безпеку; він просто говорить про зроблений вами сценарій. Це круто і все, але сайт має тип відповіді на питання, тому вам доведеться дотримуватися конкретного формату. ОП запитав одне, ви надали сценарій і не пояснюєте, як це стосується оригінальних питань. Не засмучуйтесь, просто відредагуйте свою відповідь, ви, можливо, туди включите речі з вашого коментаря.
Сергій Колодяжний

1
@DrBeco, вони зазвичай публікують її там: github.com/JetBrains/kotlin/releases/latest
Des Nerger
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.