Cài đặt Kotlin an toàn, với chữ ký gói, tự động cập nhật, v.v.


10

Kotlin đang thu hút được sự chú ý rộng rãi như là một ngôn ngữ lập trình tuyệt vời và hiện được hỗ trợ chính thức, ví dụ như để phát triển Android. Nhưng các tùy chọn tôi thấy để cài đặt nó không rõ ràng về các vấn đề bảo mật. Tôi không biết nếu sdkman kiểm tra (hoặc thậm chí hỗ trợ) chữ ký trên các gói, tôi không biết nếu nó tự động theo dõi các cập nhật bảo mật trên Kotlin và các gói đã cài đặt khác (như apt-get không), tôi không biết mức độ lớn như thế nào cài đặt sẽ được, vv

Vì vậy, để tổng hợp

Có cách tiếp cận cài đặt nào cho Kotlin tương đối an toàn (với chữ ký gói, tự động cập nhật, v.v.) không?

Ví dụ, có một PPA cho nó? (Có ai còn làm việc để gói nó cho Debian / Ubuntu không?).

Hoặc sdkman có các thuộc tính cần thiết?

Hoặc có một số cách tiếp cận khác?

Cập nhật: Tôi thấy rằng ubfox-make (umake) là một tùy chọn. Đối với IDEA và Kotlin, có vẻ như phiên bản từ ppa của họ vẫn cần thiết, như đã giải thích tại Ubuntu Make 16.03 Được phát hành với Eclipse JEE và IntelliJ IDEA EAP Support, More

Nhưng tôi ngạc nhiên rằng tôi không thể dễ dàng tìm thấy bất kỳ thông tin nào về các khía cạnh bảo mật của umake và dường như họ chưa cập nhật ( công cụ cập nhật · Vấn đề # 74 ), vì vậy câu hỏi của tôi vẫn mở.


@Alban Cảm ơn bạn đã thúc giục tôi làm rõ câu hỏi cơ bản.
nealmcb

Câu trả lời:


2

Trình biên dịch dòng lệnh Kotlin do JetBrains phát triển có thể được cài đặt dưới dạng gói snap trong tất cả các phiên bản Ubuntu hiện được hỗ trợ. Để cài đặt nó, mở terminal và gõ:

sudo apt install snapd  
sudo snap install kotlin --classic 

Công cụ có sẵn:

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

Thí dụ

  1. Tạo một ứng dụng đơn giản trong Kotlin hiển thị Hello, World!. Tạo một tệp mới với quyền thực thi được gọi là hello.kt bằng cách sau:

    fun main(args: Array<String>) {
        println("Hello, World!")
    }
  2. Biên dịch ứng dụng bằng trình biên dịch Kotlin.

    kotlinc hello.kt -include-runtime -d hello.jar  
  3. Chạy ứng dụng.

    java -jar hello.jar

1
À cảm ơn! Dường như với 14.04, bạn cần cài đặt backport mới của snapd để tin cậy: sudo apt install snapd trước khi bạn có thể chạy snap.
nealmcb

Cài đặt Snap hoạt động tốt. Tuy nhiên "người đàn ông" không làm việc. Khi tôi nhìn dưới / snap / kotlin, tôi thấy một loạt các trang người đàn ông. Snap cũng nên cài đặt những thứ này?
steven smith

kotlin -hhoạt động tốt cho người mới bắt đầu. Các -htùy chọn cũng làm việc cho tất cả các snaps. Sau đó tôi sử dụng các hướng dẫn và tài liệu trực tuyến.
karel

1
Cảm ơn. Tôi mới phát hiện ra rằng người đàn ông cài đặt cũng là lỗi # 1575593 cho snap.
steven smith

Cảm ơn! Liên kết cho tình trạng mới nhất của lỗi man page của snap: bugs.launchpad.net/snapd/+bug/1575593
nealmcb

2

Tôi không biết về umake. Tôi vừa mới viết một tập lệnh bash nhỏ để tạo gói gỡ lỗi tối thiểu ra khỏi kho lưu trữ zip phân tán.

Tạo một tệp kotlinc-deb mới :

#!/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}

Và sau đó chạy:

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

Sau đó, bạn có thể cài đặt gói được tạo kotlinc_1.1.51_all.debnhư một gói gỡ lỗi thông thường.


Cảm ơn! Nghe có vẻ như là một điểm khởi đầu tuyệt vời cho gói Debian thực sự, hoặc ít nhất là một ppa Ubuntu, mà một số tổ chức có thể cam kết tiếp tục cập nhật. Nhưng mục tiêu chính của tôi là cài đặt nó theo cách an toàn và bảo mật, và điều đó đòi hỏi cả chữ ký và phương pháp đóng gói được hỗ trợ bởi một cam kết đáng tin cậy và đáng tin cậy để luôn cập nhật.
nealmcb

1
OK, câu trả lời này đưa ra một cách để cài đặt . Câu hỏi của OP là "Có cách tiếp cận cài đặt nào cho Kotlin tương đối an toàn không". Vậy ... làm thế nào chính xác làm cho một gói giường ra khỏi tập tin zip an toàn? Câu trả lời này không giải quyết phần đó. Đừng muốn downvote, nhưng câu trả lời không giải quyết được cốt lõi của câu hỏi
Sergiy Kolodyazhnyy

@SergiyKolodyazhnyy, có thể chúng tôi định nghĩa "bảo mật" khác nhau. Anh ấy đã viết "ĐÁNG TIN CẬY". Và tôi tin rằng cách tiếp cận của tôi an toàn hơn là làm curl -s https://get.sdkman.io | bash && sdk install kotlin. Khi tự tạo gói .deb, tôi nhận được gói trực tiếp từ thượng nguồn, không có người trung gian (sdkman). Vì vậy, tôi thấy nó là an toàn hơn. Về phương pháp tiếp cận trong hình thức hiện tại thiếu các cập nhật hoàn toàn tự động (bao gồm bảo mật) nhưng sẽ không khó để tự động hóa hơn nữa.
Des Nerger

1
@DesNerger OK, nhận nó từ thượng nguồn là OK, tuy nhiên thực tế là 1) bạn đã không đề cập đến việc gói zip đến từ đâu; 2) không có đề cập đến bảo mật trong câu trả lời của bạn; nó chỉ nói về kịch bản bạn đã thực hiện. Thật tuyệt vời, nhưng trang web thuộc loại câu hỏi, vì vậy bạn phải tuân thủ định dạng cụ thể. OP đã hỏi một điều, bạn đã cung cấp một kịch bản và không có lời giải thích nào liên quan đến các câu hỏi ban đầu. Đừng nản lòng, chỉ cần chỉnh sửa câu trả lời của bạn, bạn có thể bao gồm những thứ từ nhận xét của bạn ở đó.
Sergiy Kolodyazhnyy

1
@DrBeco, họ thường xuất bản nó ở đó: github.com/JetBrains/kotlin/release/latest
Des Nerger
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.