You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
3.1 KiB
Bash

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env bash
# 在容器内配置 aptamd64 主归档 + 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
# 非登录 shelldocker 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/*