#!/usr/bin/env bash # 在容器内配置 apt(amd64 主归档 + arm64 ubuntu-ports)、安装 Tauri 交叉打 deb 所需依赖、Node、Rust。 set -euxo pipefail export DEBIAN_FRONTEND=noninteractive dpkg --add-architecture arm64 rm -rf /etc/apt/sources.list.d/* rm -f /etc/apt/sources.list cat > /etc/apt/sources.list.d/ubuntu.sources <<'EOF' Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble noble-updates noble-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Architectures: amd64 Types: deb URIs: http://security.ubuntu.com/ubuntu Suites: noble-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Architectures: amd64 Types: deb URIs: http://ports.ubuntu.com/ubuntu-ports/ Suites: noble noble-updates noble-backports noble-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Architectures: arm64 EOF apt-get update apt-get install -y --no-install-recommends \ ca-certificates curl gnupg git ubuntu-keyring \ python3:amd64 python3-importlib-metadata:amd64 python3-markdown:amd64 # 本机构建 amd64 apt-get install -y --no-install-recommends \ build-essential pkg-config patchelf \ libglib2.0-dev libgtk-3-dev \ libwebkit2gtk-4.1-dev libjavascriptcoregtk-4.1-dev \ libayatana-appindicator3-dev librsvg2-dev libssl-dev # 交叉 arm64(勿装 systemd-sysv:arm64;用 --no-install-recommends) if ! apt-get install -y --no-install-recommends \ -o Dpkg::Options::="--force-overwrite" \ gcc-aarch64-linux-gnu \ libglib2.0-dev:arm64 libgtk-3-dev:arm64 \ libcairo2-dev:arm64 libpango1.0-dev:arm64 \ libgdk-pixbuf-2.0-dev:arm64 libatk1.0-dev:arm64 libepoxy-dev:arm64 \ libwebkit2gtk-4.1-dev:arm64 libjavascriptcoregtk-4.1-dev:arm64 \ libssl-dev:arm64 libayatana-appindicator3-dev:arm64 librsvg2-dev:arm64; then apt-get -f install -y apt-get install -y --no-install-recommends \ -o Dpkg::Options::="--force-overwrite" \ gcc-aarch64-linux-gnu \ libglib2.0-dev:arm64 libgtk-3-dev:arm64 \ libcairo2-dev:arm64 libpango1.0-dev:arm64 \ libgdk-pixbuf-2.0-dev:arm64 libatk1.0-dev:arm64 libepoxy-dev:arm64 \ libwebkit2gtk-4.1-dev:arm64 libjavascriptcoregtk-4.1-dev:arm64 \ libssl-dev:arm64 libayatana-appindicator3-dev:arm64 librsvg2-dev:arm64 fi # 为避免 NodeSource 在 multiarch 场景触发 python3 依赖解算冲突,直接使用 Ubuntu 官方 nodejs/npm。 apt-get install -y --no-install-recommends nodejs:amd64 npm:amd64 export RUSTUP_HOME=/opt/rustup export CARGO_HOME=/opt/cargo mkdir -p "$RUSTUP_HOME" "$CARGO_HOME" curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --no-modify-path chmod -R a+w "$RUSTUP_HOME" "$CARGO_HOME" /opt/cargo/bin/rustup target add aarch64-unknown-linux-gnu # 非登录 shell(docker run bash -c)也能找到 cargo / rustc ln -sf /opt/cargo/bin/cargo /usr/local/bin/cargo ln -sf /opt/cargo/bin/rustc /usr/local/bin/rustc ln -sf /opt/cargo/bin/rustup /usr/local/bin/rustup rustc --version node --version cargo --version apt-get clean rm -rf /var/lib/apt/lists/*