Bezpieczna instalacja Kotlin z podpisami pakietów, automatyczną aktualizacją itp


10

Kotlin zyskuje szeroką uwagę jako świetny język programowania i jest teraz oficjalnie wspierany np. W programowaniu Androida. Ale opcje instalacji, które widzę, nie są jasne w kwestiach bezpieczeństwa. Nie wiem, czy sdkman sprawdza (a nawet obsługuje) podpisy na pakietach, nie wiem, czy to automatycznie śledzi aktualizacje zabezpieczeń Kotlina i innych zainstalowanych pakietów (jak robi to apt-get), nie wiem, jak duże będzie instalacja itp.

Więc by podsumować

Czy istnieje metoda instalacji Kotlina, która jest stosunkowo bezpieczna (z podpisami pakietów, automatyczną aktualizacją itp.)?

Np. Czy istnieje na to PPA? (Czy ktoś w ogóle pracuje nad tym, aby spakować go dla Debiana / Ubuntu?).

A może sdkman ma niezbędne właściwości?

Czy jest jakieś inne podejście?

Aktualizacja: Widzę, że ubuntu-make (umake) jest opcją. W przypadku IDEA i Kotlin wydaje się, że wersja z ich ppa jest nadal potrzebna, jak wyjaśniono w Ubuntu Make 16.03 wydanym z obsługą Eclipse JEE i IntelliJ IDEA EAP, Więcej

Ale jestem zaskoczony, że nie mogę łatwo znaleźć żadnych informacji na temat aspektów bezpieczeństwa umake i wydaje się, że nie robią jeszcze aktualizacji ( narzędzia do aktualizacji · Problem nr 74 ), więc moje pytanie pozostaje otwarte.


@Alban Dziękuję za szturchanie mnie, aby wyjaśnić podstawowe pytanie.
nealmcb

Odpowiedzi:


2

Kompilator Kotlin z linii poleceń opracowany przez JetBrains można zainstalować jako pakiet przystawek we wszystkich obecnie obsługiwanych wersjach Ubuntu. Aby go zainstalować, otwórz terminal i wpisz:

sudo apt install snapd  
sudo snap install kotlin --classic 

Dostępne narzędzia:

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

Przykład

  1. Utwórz prostą aplikację w Kotlin, która wyświetli się Hello, World!. Utwórz nowy plik z uprawnieniami do wykonywania o nazwie hello.kt w następujący sposób:

    fun main(args: Array<String>) {
        println("Hello, World!")
    }
  2. Skompiluj aplikację za pomocą kompilatora Kotlin.

    kotlinc hello.kt -include-runtime -d hello.jar  
  3. Uruchom aplikację.

    java -jar hello.jar

1
Ahh dzięki! Wydaje się również, że w 14.04 musisz zainstalować nowy backport snapd do zaufanego: sudo apt install snapd zanim będziesz mógł uruchomić snapd .
nealmcb

Instalacja Snap działała poprawnie. Jednak „człowiek nie działa”. Kiedy patrzę pod / snap / kotlin, widzę kilka stron podręcznika. Czy Snap również powinien je zainstalować?
Steven Smith

kotlin -hdziała OK na początek. Ta -hopcja działa również dla wszystkich snapów. Następnie korzystam z samouczków i dokumentacji online.
karel

1
Dzięki. Właśnie odkryłem, że instalacja człowieka jest również błędem # 1575593 do przystawki.
Steven Smith

Dzięki! Link do najnowszego statusu błędu strony podręcznika
nealmcb

2

Nie wiem o umake. Właśnie napisałem mały skrypt bash, aby wygenerować minimalny pakiet deb z rozproszonego archiwum zip.

Utwórz nowy plik 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}

A następnie uruchom:

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

Następnie możesz zainstalować wygenerowany kotlinc_1.1.51_all.debjako zwykły pakiet deb.


Dzięki! To brzmi jak świetny punkt wyjścia dla prawdziwego pakietu Debiana, a przynajmniej ppa Ubuntu, który pewna organizacja może zobowiązać się do aktualizowania. Ale moim głównym celem jest zainstalowanie go w sposób, który jest i pozostanie bezpieczny, a to wymaga zarówno podpisów, jak i podejścia do pakowania popartego wiarygodnym i wiarygodnym zobowiązaniem do aktualizacji.
nealmcb

1
OK, ta odpowiedź daje sposób na instalację . Pytanie OP brzmiało: „Czy istnieje podejście instalacyjne dla Kotlina, które jest względnie bezpieczne”? Więc ... jak dokładnie zabezpieczyć pakiet łóżka z pliku zip? Ta odpowiedź nie dotyczy tej części. Nie chcę głosować negatywnie, ale odpowiedź nie dotyczy sedna pytania
Sergiy Kolodyazhnyy

@SergiyKolodyazhnyy, może inaczej definiujemy „bezpieczeństwo”. Napisał „RELATIVE bezpieczne”. I wierzę, że moje podejście jest bezpieczniejsze niż robienie curl -s https://get.sdkman.io | bash && sdk install kotlin. Kiedy sam generuję pakiet .deb, otrzymuję pakiet bezpośrednio z góry, bez pośrednika (sdkman). Dlatego uważam to za bezpieczniejsze. Oczywiście podejście w obecnej formie nie ma w pełni automatycznych (w tym bezpiecznych) aktualizacji, ale nie będzie trudno zautomatyzować je dalej.
Des Nerger,

1
@DesNerger OK, pobieranie z góry jest OK, jednak faktem jest, że 1) nie wspomniałeś, skąd pochodzi pakiet zip; 2) w Twojej odpowiedzi nie ma wzmianki o bezpieczeństwie; mówi tylko o skrypcie, który stworzyłeś. To fajne i wszystko, ale strona ma typ pytania i odpowiedzi, więc musisz przestrzegać określonego formatu. OP zadał jedno pytanie, podałeś skrypt i nie wyjaśniłeś, w jaki sposób odnosi się on do oryginalnych pytań. Nie denerwuj się, po prostu edytuj swoją odpowiedź, prawdopodobnie mógłbyś tam zamieścić fragment komentarza.
Sergiy Kolodyazhnyy

1
@DrBeco, zazwyczaj publikują go tam: github.com/JetBrains/kotlin/releases/latest
Des Nerger
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.