원문 보기: https://dawoum.duckdns.org/wiki/Electron_(software_framework)
이전 게시에서 스크립트에 오류가 있습니다. 여러 버전을 설치해서 선택을 하기 위해서는 패키지 이름이 달라야 합니다. 아래 스크립트에서 pkgdir을 변경해야 하고, control 파일에서 패키지이름에 electron34-bin과 같이 만들어야 합니다.
Electron (이전에 Atom Shell으로 알려져 있음)은 OpenJS Foundation에 의해 개발되고 유지 관리되는 자유와 오픈-소스 소프트웨어 프레임워크입니다. 그 프레임워크는 Chromium 웹 브라우저 엔진의 버전을 사용하고 Node.js 런타임 환경을 사용하여 렌더링되는 웹 기술 (비록 프론트-엔드 프레임워크와 WebAssembly와 같은 다른 기술이 가능할지라도, 주로 HTML, CSS, 및 JavaScript)을 사용하여 데스크탑 응용 프로그램을 작성하도록 설계되었습니다. 그것은 역시 다양한 API를 Node.js 서비스와의 기본 통합과 프로세스-사이 통신 모듈과 같은 기능을 활성화하기 위해 사용합니다.
Electron은 원래 Atom에 대해 제작되었고 GitHub Desktop, Light Table, Visual Studio Code, WordPress Desktop, 및 Eclipse Theia를 포함한 여러 다른 오픈-소스 프로젝트 뒤의 주요 GUI 프레임 워크입니다.
Installation
데비안에서 패키지를 제공하지 않기 때문에, Building binary deb packages를 사용해서 패키지를 만들 수 있습니다.
2025년 2월 기준, 34.2.0 버전을 받을 수 있습니다.
- chromedirver-v34.2.0-linux-x64.zip
- electron-v34.2.0-linux-x64.zip
그런-다음 2개의 파일을 하나의 디렉토리에 풉니다. 이때, LICENSE 파일들이 같이 존재하므로 하나만 있어도 상관없습니다.
이제, 패키지로 만들 스크립트를 만드는데, 아치 패키지를 참조할 수 있습니다:
그것으로부터 소스를 푼 디렉토리에 electron-bin.install 파일을 만듭니다:
#!/bin/bash
_projectname=electron
_major=34
_pkgname="${_projectname}${_major}"
pkgname="${_pkgname}"-bin
_subver='2.0'
_pkgver="${_major}.${_subver}"
pkgver="${_pkgver/-/.}"
pkgrel=1
pkgdir=electron34-bin_34.2.0_amd64
install -Dm755 -d "${pkgdir}/usr/"{bin,lib/"${_pkgname}"}
find . -mindepth 1 -maxdepth 1 -type f ! -name "*.zip" ! -name "LICENSE*" -exec cp -r --no-preserve=ownership --preserve=mode -t "${pkgdir}/usr/lib/${_pkgname}/." {} +
cp -r --no-preserve=ownership --preserve=mode {locales,resources} "${pkgdir}/usr/lib/${_pkgname}"
chmod u+s "${pkgdir}/usr/lib/${_pkgname}/chrome-sandbox"
ln -nfs "/usr/lib/${_pkgname}/${_projectname}" "${pkgdir}/usr/bin/${_pkgname}"
install -Dm644 LICENSE* -t "${pkgdir}/usr/share/licenses/${pkgname}"
mkdir -p "$pkgdir/DEBIAN"
다음으로 control 파일을 적당히 만듭니다.
파일을 묶고 설치합니다.
Multi-version
여러 개의 바이너리 버전을 설치할 수 있기 때문에, 아치 패키지에서는 메타 패키지를 별도로 만듭니다.
데비안에서는 데비안 방식으로 적용할 수 있습니다:
- sudo update-alternatives --install /usr/bin/electron electron /usr/bin/electron34 34
- sudo update-alternatives --config electron
나중에 다른 버전을 설치할 경우에 숫자만 바꾸어서 설치하고, 두 번째 명령으로 원하는 버전을 선택할 수 있습니다.
Architecture
Electron 응용 프로그램에는 "main" 프로세스와 여러 "renderer" 프로세스가 포함됩니다. 주요 프로세스는 응용 프로그램에 대해 논리 (예를 들어, 메뉴, 쉘 명령, 수명주기 이벤트)를 실행하고 그런-다음 BrowserWindow 클래스의 인스턴스를 인스턴스화함으로써 여러 렌더러 프로세스를 시작할 수 있으며, 이는 HTML과 CSS를 렌더링함으로써 화면에 나타나는 윈도우를 로드합니다.
주요 프로세스에서 nodeIntegration 필드가 true로 설정되면, 주요 프로세서와 렌더러 프로세스가 모두 Node.js 통합으로 실행될 수 있습니다.
Electron의 API의 대부분은 C++ 또는 Objective-C로 작성되었고 JavaScript 바인딩을 통해 응용 프로그램 코드에 직접 노출됩니다.
History
2021년 9월, Electron은 크로미엄 확장 안정의 릴리스 주기와 일치하고 주요 버전과 브라우저-기반 앱에게 브라우저 엔진의 최신 릴리스의 두 가지 주요 버전 내에 있어야 하는 Microsoft Store로부터 새로운 요구 사항을 준수하기 위해 주요 버전 사이에 8주 릴리스 주기로 이전했습니다.
Electron는 종종 다른 모든 각 크로미엄 릴리스를 따라 새로운 주요 버전을 출시합니다. 최신 3 가지 안정 버전은 Electron 팀에 의해 지원됩니다.
Usage
Electron으로 구축된 데스크탑 응용 프로그램에는 Atom, balenaEtcher, Eclipse Theia, Microsoft Teams before 2.0, Slack, 및 Visual Studio Code이 있습니다.[31][32] Brave 브라우저는 크로미엄을 직접 사용하도록 다시 작성하기 전에 Electron을 기반으로 했습니다.
Reception
Electron에 대한 가장 공통적인 비판은 간단한 프로그램에 대해 사용될 때 소프트웨어 블로트가 필요하다는 것입니다. 결과로써, Michael Larabel은 프레임워크를 "대부분의 리눅스 데스크탑 사용자들 중에서도 자원이 많고, 대부분의 데스크탑과 잘 통합되지 않고, 일반적으로 멸시하는 것으로 유명한 것"으로 언급해 왔습니다. 연구자들은 Electron의 대규모 기능의 모음이 소스 JavaScript 파일에 대한 쓰기 접근을 갖는 악의적인 행위자에 의해 하이재킹될 수 있음을 보여주었습니다. 이것은 *nix 시스템에서 루트 접근을 요구하고 Electron 개발자에 의해 취약점으로 고려되지 않습니다. Electron이 항상 최신 버전의 크로미엄을 기반으로 하는 것은 아니라는 점을 우려하는 사람들은 프로그레시브 웹 응용 프로그램을 대안으로 권장해 왔습니다.