mirror of
https://github.com/Cheviiot/Nivora.git
synced 2026-08-03 15:51:12 +00:00
feat: rename Claude package
This commit is contained in:
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
package_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
repo_root="$(cd "${package_dir}/.." && pwd)"
|
||||
exec "${repo_root}/tools/package_updates.sh" check "$(basename "$package_dir")"
|
||||
@@ -0,0 +1,26 @@
|
||||
Сведения о лицензии пакета Claude
|
||||
|
||||
Лицензия: Proprietary.
|
||||
Исходный продукт: https://claude.ai/download
|
||||
Документация desktop-приложения Claude: https://code.claude.com/docs/en/desktop-quickstart
|
||||
Официальный Linux-репозиторий: https://downloads.claude.ai/claude-desktop/apt/stable
|
||||
|
||||
Нюансы пакета:
|
||||
- Пакет перепаковывает официальный Linux deb-артефакт `claude-desktop` из APT-репозитория Anthropic.
|
||||
- В пакет входит десктопное Electron-приложение Claude с поддержкой сценариев Claude Code.
|
||||
- Команда `claude-desktop` запускает основное desktop-приложение.
|
||||
- Для одновременной работы с двумя аккаунтами пакет добавляет самостоятельное приложение `ClaudeAlt` с командами `claude-alt` / `claude-code-alt`, отдельной app-иконкой, executable/resources tree и Electron-идентичностью `com.anthropic.ClaudeAlt`.
|
||||
- Tray-иконки основного Claude и ClaudeAlt являются перекрашенными вариантами штатного глифа Anthropic и регулируются теми же проприетарными условиями, что и исходный продукт.
|
||||
- ClaudeAlt использует отдельный каталог web-данных `${XDG_CONFIG_HOME:-~/.config}/ClaudeAlt`, чтобы не смешивать cookies, авторизацию, OAuth-кэш, IndexedDB, Local Storage и Chromium lock-файлы. При обновлении существующий `${XDG_CONFIG_HOME:-~/.config}/Claude-Account-2` продолжает использоваться для сохранения авторизации.
|
||||
- Путь профиля можно переопределить через `CLAUDE_ALT_DATA_DIR`; прежняя переменная `CLAUDE_DESKTOP_ACCOUNT2_DIR` поддерживается для совместимости.
|
||||
- Глобальная память и конфигурация Claude Code в `~/.claude` могут использоваться обоими приложениями, поскольку этот путь принадлежит Claude Code, а не Electron-профилю.
|
||||
- Облачные чаты и память Claude не объединяются пакетом: эти данные принадлежат конкретной учетной записи и хранятся на стороне Anthropic.
|
||||
- Команда `claude` намеренно не добавляется, чтобы не конфликтовать с отдельным Claude Code CLI.
|
||||
- Для полноценной работы требуется учетная запись Anthropic и подходящая подписка или доступ к сервису Claude.
|
||||
- Настройки, авторизация, история, рабочие каталоги и данные проектов создаются приложением после запуска и не поставляются внутри пакета.
|
||||
- Функции, зависящие от виртуализации или интеграции окружения, могут требовать дополнительные системные компоненты: QEMU, virtiofsd, portal backend, keyring/kwallet и аудиоподсистему.
|
||||
- Исходный продукт является проприетарным. Использование Claude, Claude Code, сетевых функций, моделей и учетной записи регулируется юридическими условиями Anthropic.
|
||||
- Внутри upstream-пакета также поставляются компоненты Electron/Chromium и virtiofsd со своими лицензиями; их тексты устанавливаются в `/usr/share/licenses/claude-desktop`.
|
||||
|
||||
Официальные условия:
|
||||
https://www.anthropic.com/legal/consumer-terms
|
||||
@@ -0,0 +1,138 @@
|
||||
name='claude'
|
||||
version=1.24012.0
|
||||
release=1
|
||||
summary='Claude desktop application'
|
||||
summary_ru='Десктопное приложение Claude'
|
||||
group='Development/Tools'
|
||||
desc='Claude is the Anthropic desktop application for Claude and Claude Code workflows with chat, project context, integrated terminal, editor and visual diff review.'
|
||||
desc_ru='Claude — десктопное приложение Anthropic для Claude и сценариев Claude Code: чат, контекст проекта, встроенный терминал, редактор и визуальный просмотр diff.'
|
||||
homepage='https://code.claude.com/docs/en/desktop-quickstart'
|
||||
maintainer='Anthropic PBC <support@anthropic.com>'
|
||||
|
||||
architectures=('amd64' 'arm64')
|
||||
|
||||
license=('Custom')
|
||||
nonfree=1
|
||||
nonfree_msg='Claude Desktop является проприетарным приложением Anthropic. Использование Claude, Claude Code, учетной записи, подписки, сетевых функций и моделей регулируется условиями Anthropic.'
|
||||
nonfree_url='https://www.anthropic.com/legal/consumer-terms'
|
||||
|
||||
provides=()
|
||||
replaces=('claude' 'claude-desktop')
|
||||
conflicts=()
|
||||
|
||||
auto_reqprov_method="dirty"
|
||||
auto_req=0
|
||||
auto_prov=0
|
||||
|
||||
deps=()
|
||||
deps_debian=('libgtk-3-0' 'libnotify4' 'libnss3' 'xdg-utils' 'libatspi2.0-0' 'libdrm2' 'libgbm1' 'libxcb-dri3-0' 'libsecret-1-0' 'libc6' 'libxtst6' 'libuuid1' 'xdg-desktop-portal' 'xdg-desktop-portal-gtk | xdg-desktop-portal-gnome | xdg-desktop-portal-kde')
|
||||
deps_ubuntu=("${deps_debian[@]}")
|
||||
deps_fedora=('gtk3' 'libnotify' 'nss' 'xdg-utils' 'at-spi2-core' 'libdrm' 'mesa-libgbm' 'libxcb' 'libsecret' 'glibc' 'libXtst' 'libuuid' 'xdg-desktop-portal' 'xdg-desktop-portal-gtk')
|
||||
deps_arch=('gtk3' 'libnotify' 'nss' 'xdg-utils' 'at-spi2-core' 'libdrm' 'libgbm' 'libxcb' 'libsecret' 'glibc' 'libxtst' 'libutil-linux' 'xdg-desktop-portal' 'xdg-desktop-portal-gtk')
|
||||
deps_opensuse=('gtk3' 'libnotify4' 'mozilla-nss' 'xdg-utils' 'at-spi2-core' 'libdrm2' 'libgbm1' 'libxcb-dri3-0' 'libsecret-1-0' 'glibc' 'libXtst6' 'libuuid1' 'xdg-desktop-portal' 'xdg-desktop-portal-gtk')
|
||||
deps_altlinux=('libgtk+3' 'libnotify' 'libnss' 'xdg-utils' 'libat-spi2-core' 'libdrm' 'libgbm' 'libxcb' 'libsecret' 'glibc' 'libXtst' 'libuuid' 'xdg-desktop-portal' 'xdg-desktop-portal-gtk')
|
||||
|
||||
opt_deps=()
|
||||
opt_deps_debian=('libasound2t64 | libasound2 | pulseaudio' 'libayatana-appindicator3-1 | libappindicator3-1' 'ca-certificates' 'gnome-keyring | kwalletd6 | kwalletd5' 'qemu-system-x86' 'ovmf' 'virtiofsd')
|
||||
opt_deps_ubuntu=("${opt_deps_debian[@]}")
|
||||
opt_deps_fedora=('alsa-lib' 'pulseaudio-libs' 'libappindicator-gtk3' 'ca-certificates' 'gnome-keyring' 'kwallet' 'qemu-system-x86' 'edk2-ovmf' 'virtiofsd')
|
||||
opt_deps_arch=('alsa-lib' 'pulseaudio' 'libappindicator-gtk3' 'ca-certificates' 'gnome-keyring' 'kwallet' 'qemu-system-x86' 'edk2-ovmf' 'virtiofsd')
|
||||
opt_deps_opensuse=('libasound2' 'libpulse0' 'libappindicator3-1' 'ca-certificates' 'gnome-keyring' 'kwallet6' 'qemu-x86' 'ovmf' 'virtiofsd')
|
||||
opt_deps_altlinux=('libalsa' 'libappindicator-gtk3' 'ca-certificates' 'gnome-keyring' 'qemu-system-x86' 'virtiofsd')
|
||||
|
||||
build_deps=('binutils')
|
||||
build_deps_debian=('binutils' 'python3')
|
||||
build_deps_ubuntu=("${build_deps_debian[@]}")
|
||||
build_deps_fedora=('binutils' 'python3')
|
||||
build_deps_arch=('binutils' 'python')
|
||||
build_deps_opensuse=('binutils' 'python3')
|
||||
build_deps_altlinux=('binutils' 'python3')
|
||||
|
||||
sources=(
|
||||
"https://downloads.claude.ai/claude-desktop/apt/stable/pool/main/c/claude-desktop/claude-desktop_${version}_amd64.deb?~archive=false&~name=claude-desktop.deb"
|
||||
"local:///claude-tray-orange.png"
|
||||
'local:///LICENSE'
|
||||
)
|
||||
|
||||
sources_arm64=(
|
||||
"https://downloads.claude.ai/claude-desktop/apt/stable/pool/main/c/claude-desktop/claude-desktop_${version}_arm64.deb?~archive=false&~name=claude-desktop.deb"
|
||||
"local:///claude-tray-orange.png"
|
||||
'local:///LICENSE'
|
||||
)
|
||||
|
||||
checksums=(
|
||||
'sha256:1096a8063956f8430fdbe504bb1c5e02985f31d0f45d082e4966e5d30ea7e3ac'
|
||||
'sha256:be51081c0e0b2eec3489c25da38194dccf68fe7445928b32c30e1b8051eb557b'
|
||||
'sha256:40efe7a2755d02c9fe13f98cae18705e2d31e5bbb24816ebbd4951c5e3a56b3f'
|
||||
)
|
||||
|
||||
checksums_arm64=(
|
||||
'sha256:37dd5dc1b0bfcb3192561acbd33cb59037806fe9b95221a3ddf38244203196f1'
|
||||
'sha256:be51081c0e0b2eec3489c25da38194dccf68fe7445928b32c30e1b8051eb557b'
|
||||
'sha256:40efe7a2755d02c9fe13f98cae18705e2d31e5bbb24816ebbd4951c5e3a56b3f'
|
||||
)
|
||||
|
||||
scripts=(
|
||||
['postinstall']='postinstall.sh'
|
||||
['postremove']='postremove.sh'
|
||||
)
|
||||
|
||||
package() {
|
||||
cd "${srcdir}"
|
||||
|
||||
mkdir -p "${srcdir}/extracted"
|
||||
ar x claude-desktop.deb
|
||||
tar -xf data.tar.* -C "${srcdir}/extracted"
|
||||
|
||||
install -dm755 "${pkgdir}/usr/lib"
|
||||
cp -a "${srcdir}/extracted/usr/lib/claude-desktop" "${pkgdir}/usr/lib/"
|
||||
chmod 0755 "${pkgdir}/usr/lib/claude-desktop/chrome-sandbox"
|
||||
chmod 755 \
|
||||
"${pkgdir}/usr/lib/claude-desktop/claude-desktop" \
|
||||
"${pkgdir}/usr/lib/claude-desktop/resources/chrome-native-host" \
|
||||
"${pkgdir}/usr/lib/claude-desktop/resources/cowork-linux-helper" \
|
||||
"${pkgdir}/usr/lib/claude-desktop/resources/virtiofsd"
|
||||
|
||||
# Сохраняем штатный tray-глиф Claude, меняя только его цвет.
|
||||
for icon_name in TrayIconLinux.png TrayIconLinux-Dark.png; do
|
||||
install -Dm644 "${srcdir}/claude-tray-orange.png" \
|
||||
"${pkgdir}/usr/lib/claude-desktop/resources/${icon_name}"
|
||||
done
|
||||
|
||||
install -dm755 "${pkgdir}/usr/share"
|
||||
cp -a "${srcdir}/extracted/usr/share/applications" "${pkgdir}/usr/share/"
|
||||
cp -a "${srcdir}/extracted/usr/share/icons" "${pkgdir}/usr/share/"
|
||||
|
||||
desktop_file="$(find "${pkgdir}/usr/share/applications" -maxdepth 1 -type f -name "*.desktop" | head -1)"
|
||||
[[ -n "${desktop_file}" ]] || {
|
||||
echo "Claude desktop file not found" >&2
|
||||
return 1
|
||||
}
|
||||
sed -i \
|
||||
-e '0,/^Name=/{s/^Name=.*/Name=Claude\nName[ru]=Claude/}' \
|
||||
-e 's/^Categories=.*/Categories=Development;/' \
|
||||
"${desktop_file}"
|
||||
|
||||
install -dm755 "${pkgdir}/usr/bin"
|
||||
ln -sfn /usr/lib/claude-desktop/claude-desktop "${pkgdir}/usr/bin/claude-desktop"
|
||||
|
||||
install -dm755 "${pkgdir}/usr/share/licenses/claude-desktop"
|
||||
install-license "${srcdir}/LICENSE" "claude-desktop/LICENSE.nivora"
|
||||
install -Dm644 "${srcdir}/extracted/usr/share/doc/claude-desktop/copyright" \
|
||||
"${pkgdir}/usr/share/licenses/claude-desktop/copyright"
|
||||
install -Dm644 "${srcdir}/extracted/usr/lib/claude-desktop/LICENSES.chromium.html" \
|
||||
"${pkgdir}/usr/share/licenses/claude-desktop/LICENSES.chromium.html"
|
||||
install -Dm644 "${srcdir}/extracted/usr/lib/claude-desktop/resources/virtiofsd.LICENSE-APACHE" \
|
||||
"${pkgdir}/usr/share/licenses/claude-desktop/virtiofsd.LICENSE-APACHE"
|
||||
install -Dm644 "${srcdir}/extracted/usr/lib/claude-desktop/resources/virtiofsd.LICENSE-BSD-3-Clause" \
|
||||
"${pkgdir}/usr/share/licenses/claude-desktop/virtiofsd.LICENSE-BSD-3-Clause"
|
||||
}
|
||||
|
||||
files() {
|
||||
files-find-binary
|
||||
files-find-desktop
|
||||
files-find-license
|
||||
files-find \
|
||||
"/usr/lib/claude-desktop/**/*" \
|
||||
"/usr/share/icons/hicolor/*/apps/claude-desktop.png"
|
||||
}
|
||||
Executable
+40
@@ -0,0 +1,40 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
if [ -z "${HOME:-}" ] && [ -z "${XDG_CONFIG_HOME:-}" ]; then
|
||||
echo "claude-alt: HOME or XDG_CONFIG_HOME is required" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
config_home="${XDG_CONFIG_HOME:-${HOME}/.config}"
|
||||
default_data_dir="${config_home}/ClaudeAlt"
|
||||
legacy_data_dir="${CLAUDE_DESKTOP_ACCOUNT2_DIR:-${config_home}/Claude-Account-2}"
|
||||
claude_alt_executable="${CLAUDE_ALT_EXECUTABLE:-/usr/lib/claude-alt/claude-alt-bin}"
|
||||
|
||||
if [ -n "${CLAUDE_ALT_DATA_DIR:-}" ]; then
|
||||
data_dir="${CLAUDE_ALT_DATA_DIR}"
|
||||
elif [ -d "${default_data_dir}" ]; then
|
||||
data_dir="${default_data_dir}"
|
||||
elif [ -d "${legacy_data_dir}" ]; then
|
||||
# Сохраняем авторизацию прежнего второго профиля после обновления пакета.
|
||||
data_dir="${legacy_data_dir}"
|
||||
else
|
||||
data_dir="${default_data_dir}"
|
||||
fi
|
||||
|
||||
if [ ! -x "${claude_alt_executable}" ]; then
|
||||
echo "claude-alt: executable not found: ${claude_alt_executable}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "${data_dir}"
|
||||
|
||||
# Electron использует это имя для portal-интеграций. Основной Wayland app_id
|
||||
# задаётся отдельным desktopName внутри ClaudeAlt app.asar.
|
||||
CHROME_DESKTOP='com.anthropic.ClaudeAlt.desktop'
|
||||
export CHROME_DESKTOP
|
||||
|
||||
exec "${claude_alt_executable}" \
|
||||
--user-data-dir="${data_dir}" \
|
||||
--class=com.anthropic.ClaudeAlt \
|
||||
"$@"
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 193 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.3 KiB |
Executable
+35
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
optional_refresh() {
|
||||
local label=$1
|
||||
shift
|
||||
if ! "$@"; then
|
||||
echo "Предупреждение: не удалось обновить ${label}." >&2
|
||||
fi
|
||||
}
|
||||
|
||||
sandbox=/usr/lib/claude-desktop/chrome-sandbox
|
||||
if [[ ! -f "$sandbox" ]]; then
|
||||
echo "Ошибка: не найден Electron sandbox: ${sandbox}" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ -L /proc/self/ns/user ]] && command -v unshare >/dev/null 2>&1 \
|
||||
&& unshare --user true 2>/dev/null; then
|
||||
chmod 0755 "$sandbox"
|
||||
else
|
||||
chmod 4755 "$sandbox"
|
||||
fi
|
||||
|
||||
if command -v update-desktop-database >/dev/null 2>&1; then
|
||||
optional_refresh "desktop-базу" update-desktop-database -q /usr/share/applications
|
||||
fi
|
||||
if command -v gtk-update-icon-cache >/dev/null 2>&1; then
|
||||
optional_refresh "кэш иконок" gtk-update-icon-cache -f -q /usr/share/icons/hicolor
|
||||
fi
|
||||
if command -v kbuildsycoca6 >/dev/null 2>&1; then
|
||||
optional_refresh "кэш KDE" kbuildsycoca6 --noincremental
|
||||
elif command -v kbuildsycoca5 >/dev/null 2>&1; then
|
||||
optional_refresh "кэш KDE" kbuildsycoca5 --noincremental
|
||||
fi
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
optional_refresh() {
|
||||
local label=$1
|
||||
shift
|
||||
if ! "$@"; then
|
||||
echo "Предупреждение: не удалось обновить ${label}." >&2
|
||||
fi
|
||||
}
|
||||
|
||||
if command -v update-desktop-database >/dev/null 2>&1; then
|
||||
optional_refresh "desktop-базу" update-desktop-database -q /usr/share/applications
|
||||
fi
|
||||
if command -v gtk-update-icon-cache >/dev/null 2>&1; then
|
||||
optional_refresh "кэш иконок" gtk-update-icon-cache -f -q /usr/share/icons/hicolor
|
||||
fi
|
||||
if command -v kbuildsycoca6 >/dev/null 2>&1; then
|
||||
optional_refresh "кэш KDE" kbuildsycoca6 --noincremental
|
||||
elif command -v kbuildsycoca5 >/dev/null 2>&1; then
|
||||
optional_refresh "кэш KDE" kbuildsycoca5 --noincremental
|
||||
fi
|
||||
@@ -0,0 +1 @@
|
||||
include = "../stapler-repo.toml"
|
||||
Reference in New Issue
Block a user