С чего начать

Установка

Ferret — настольное приложение для macOS, Windows и Linux. Сборка для macOS подписана Developer ID и нотаризована Apple. Сборки для Windows и Linux пока не подписаны, поэтому эти ОС просят подтвердить первый запуск.

#Скачивание

Скачайте файл для своей ОС и процессора на странице загрузки. Файлы раздаются из Cloudflare R2, а не из GitHub Releases, и хранятся только 10 последних версий.

ОСФайлы
macOS (Apple silicon / Intel)Ferret-<version>-mac-arm64.dmg, Ferret-<version>-mac-x64.dmg
Windows (x64 / arm64)Ferret-<version>-win-x64.exe, Ferret-<version>-win-arm64.exe (установщик NSIS)
Linux (x64)Ferret-<version>-linux-x86_64.AppImage, Ferret-<version>-linux-amd64.deb

Выпуски до 0.1.x публиковались под старым названием, как MOVIE-ADE-<version>-…. Имена Ferret-… используются начиная с 0.2.0.

Ferret поддерживает macOS, Windows и Linux. Сборки для Windows и Linux пока не подписаны, поэтому при первом запуске потребуется подтверждение (см. шаги ниже).

#Проверка загрузки (подписанный SHA256SUMS)

У каждого выпуска есть файл SHA256SUMS и его подпись SHA256SUMS.sig. Подпись делается ключом выпусков Ferret, который хранится отдельно от сервера загрузки, поэтому подменённый на сервере установщик не может получить действительную подпись. Открытый ключ не берётся с сервера загрузки: возьмите его из репозитория (build/release-signing/allowed_signers (откроется в новой вкладке)) или скопируйте отсюда:

[email protected] ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEpXERU8ST0MEOIMbzoL4zShkjIrMB4++NL3xBohKAS9

Его отпечаток — SHA256:c7dvwwJQyY9qSstkmrO8JoVZ90DCaFZBAzjqV04N8zQ. Те же файлы приложены к каждому выпуску на GitHub. Проверьте подпись с помощью ssh-keygen (входит в macOS, Windows 10 и новее и Linux), затем сравните хеш загруженного файла с подписанным списком:

# the download server (currently the R2 public URL; it may move to a custom domain)
BASE=https://pub-588d93b3e875464f98d6cf98dc711a0c.r2.dev
VERSION=$(curl -s $BASE/latest.json | jq -r .version)
curl -sO $BASE/releases/$VERSION/SHA256SUMS
curl -sO $BASE/releases/$VERSION/SHA256SUMS.sig

# save the public key above as allowed_signers, then:
ssh-keygen -Y verify -f allowed_signers -I [email protected] -n ferret-release -s SHA256SUMS.sig < SHA256SUMS
# → Good "ferret-release" signature for [email protected] …

# macOS
shasum -a 256 -c SHA256SUMS --ignore-missing
# Linux
sha256sum -c SHA256SUMS --ignore-missing
# Windows (PowerShell): compare with the line for your file in SHA256SUMS
Get-FileHash .\Ferret-<version>-win-x64.exe -Algorithm SHA256

Остановитесь, если ssh-keygen не выводит Good "ferret-release" signature или хеша нет в списке. Проверить обновления в Ferret выполняет ту же проверку с ключом, встроенным в приложение, и не предлагает версию, подпись которой не совпадает. На macOS можно также проверить подпись Developer ID и нотаризацию командой spctl -a -vv /Applications/Ferret.app. Установщики для Windows и Linux пока не подписаны ни Microsoft, ни каким-либо дистрибутивом Linux. Выпуски до 0.3.0 вышли до начала подписывания, и для них есть только неподписанные хеши в releases/<version>/manifest.json.

#macOS

  1. Откройте .dmg и перетащите Ferret.app в /Applications.
  2. Запустите приложение. Оно подписано Developer ID и нотаризовано Apple (тикет прикреплён), поэтому открывается без предупреждения.

Чтобы проверить подпись самостоятельно:

spctl -a -vv /Applications/Ferret.app
# accepted
# source=Notarized Developer ID

Только старые версии (0.2.0 build 2 и раньше) не были подписаны. Для них macOS сообщает, что не удаётся проверить разработчика: закройте диалог, откройте Системные настройки → Конфиденциальность и безопасность, нажмите Всё равно открыть рядом с сообщением о Ferret и подтвердите кнопкой Открыть. Если система сообщает, что приложение «повреждено», снимите атрибут карантина:

xattr -dr com.apple.quarantine /Applications/Ferret.app

#Windows

  1. Запустите Ferret-<version>-win-<arch>.exe.
  2. Когда SmartScreen покажет «Система Windows защитила ваш компьютер», нажмите Подробнее, затем Выполнить в любом случае.
  3. Выберите папку установки. Установщик создаст ярлык на рабочем столе.

#Linux

AppImage:

chmod +x Ferret-<version>-linux-x86_64.AppImage
./Ferret-<version>-linux-x86_64.AppImage

Debian / Ubuntu:

sudo apt install ./Ferret-<version>-linux-amd64.deb

Пакет deb устанавливает пакет и команду ferret.

В Ubuntu 23.10 и новее AppImage может остановиться при запуске с ошибкой песочницы, потому что AppArmor ограничивает пространства имён пользователей, которые использует песочница Electron. Установите вместо этого .deb: он настраивает вспомогательный модуль песочницы.

#Сборка из исходного кода

Нужны Node.js 20+ (в CI и при локальной разработке используется 22), pnpm и git.

git clone https://github.com/JapanMarketing-Dev/ferret.git
cd ferret
pnpm install          # postinstall prepares node-pty for Electron
pnpm dev              # run in development mode

Чтобы собрать установщики (результат в dist/release/, конфигурация в electron-builder.config.cjs). Сборка для Linux выполняется только в Linux.

pnpm dist:mac     # dmg (arm64, x64)
pnpm dist:win     # NSIS installers (x64, arm64)
pnpm dist:linux   # AppImage + deb (x64)

Скрипты build:<os>:dev собирают только распакованное приложение (--dir), что быстрее для локального тестирования.

В Windows pnpm install использует готовые бинарные файлы, поставляемые с node-pty, вместо пересборки (для неё понадобились бы инструменты сборки Visual Studio C++). Чтобы принудительно пересобрать, задайте ADE_FORCE_NATIVE_REBUILD=1.

Если терминал сообщает, что не удалось загрузить node-pty, выполните pnpm rebuild:native.

#Обновления

Ferret не обновляется автоматически. В нижней панели откройте Обновления и нажмите Проверить обновления. Ferret загрузит latest.json с сервера загрузки (R2), сравнит версии и даст ссылку на страницу загрузки. Начиная с 0.4.0 он также проверяет подпись SHA256SUMS этой версии ключом выпусков, встроенным в приложение, и не предлагает версию, подпись которой не удаётся проверить. Пока вы не нажмёте кнопку, ничего не проверяется, и ничего не устанавливается автоматически.

Помочь с переводом этой страницы на GitHub (откроется в новой вкладке)