You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何缩减rustup安装Rust nightly的占用空间?

如何减少Arch Linux容器中Rust nightly的安装占用空间?

我有一个Dockerfile用于在Arch Linux容器中构建Neovim环境,从docker history日志可以看到,rustup install nightly命令占用了1.05GB空间,远超预期,想知道有什么办法减少这个占用。

$ docker history s1n7ax/neovim:latest
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
de4cac3f0fe9   7 hours ago   /bin/sh -c #(nop) WORKDIR /root                 0B
92121272827c   7 hours ago   /bin/sh -c nvim     --headless     -c 'set c…   692MB
8779585b1604   7 hours ago   /bin/sh -c nvim     --headless     -c 'autoc…   82.3MB
1b0cf08fadcf   7 hours ago   /bin/sh -c sed -i "s/max_jobs *= *[0-9]\+,*/…   12.4kB
26ee8d4eb0e6   7 hours ago   /bin/sh -c cp server/*.jar ~/.local/share/nv…   2.1MB
e0ea809b07bd   7 hours ago   /bin/sh -c yarn build-plugin                    145MB
cd66bd36b04c   7 hours ago   /bin/sh -c yarn                                 320MB
e6ed455333a2   7 hours ago   /bin/sh -c #(nop) WORKDIR /vscode-java-test     0B
881aece35a57   7 hours ago   /bin/sh -c cp     com.microsoft.java.debug.p…   2.86MB
01817765eefa   7 hours ago   /bin/sh -c ./mvnw clean install                 160MB
0496aff9c7e9   7 hours ago   /bin/sh -c chmod u+x mvnw                       0B
5675cbc79777   7 hours ago   /bin/sh -c #(nop) WORKDIR /java-debug           0B
a27056432eb9   7 hours ago   /bin/sh -c git clone https://github.com/micr…   12.4MB
947e120c0d95   7 hours ago   /bin/sh -c git clone https://github.com/micr…   2.83MB
a30656b6fa58   7 hours ago   /bin/sh -c mkdir -p ~/.local/share/nvim/lsp_…   0B
21699318e786   7 hours ago   /bin/sh -c #(nop) WORKDIR /                     0B
42ce1c7cdea4   7 hours ago   /bin/sh -c git clone --recurse-submodules -j…   2.45MB
478422a36727   7 hours ago   /bin/sh -c ln -s /usr/local/bin/nvim /usr/sb…   0B
6eb281356e67   7 hours ago   /bin/sh -c make install                         34.6MB
7b685c7218a0   7 hours ago   /bin/sh -c make CMAKE_BUILD_TYPE=Release        329MB
ca9dbcc78168   7 hours ago   /bin/sh -c #(nop) WORKDIR /neovim               0B
b3d8d34a8377   7 hours ago   /bin/sh -c git clone https://github.com/neov…   253MB
e1d162cf132c   7 hours ago   /bin/sh -c #(nop)  ENV PATH=~/.yarn/bin:~/.c…   0B
a7ba8d0af37f   7 hours ago   /bin/sh -c #(nop)  ENV PATH=~/.cargo/bin:~/.…   0B
22a3b31751f9   7 hours ago   /bin/sh -c #(nop)  ENV PATH=~/.local/bin:/us…   0B
33649aec725c   7 hours ago   /bin/sh -c #(nop)  ENV SHELL=/bin/bash          0B
9e8b31edbbde   7 hours ago   /bin/sh -c cargo install taplo-cli              106MB
7b45e6a9f648   7 hours ago   /bin/sh -c cargo install stylua                 110MB
92e12231c110   7 hours ago   /bin/sh -c pip install --upgrade autopep8       728kB
45ad80c3b346   7 hours ago   /bin/sh -c yarn global add prettier             38.1MB
83072229ae66   7 hours ago   /bin/sh -c rustup default nightly               103B
2d24ac105fec   7 hours ago   /bin/sh -c rustup install nightly               1.05GB
c93fbc7c84ca   7 hours ago   /bin/sh -c pacman -S --needed --noconfirm   …   1.12GB
38f82d2a27d2   7 hours ago   /bin/sh -c pacman -Syu --noconfirm              35MB
ec4c97123c01   4 days ago    /bin/sh -c #(nop)  CMD ["/usr/bin/bash"]        0B
<missing>      4 days ago    /bin/sh -c #(nop)  ENV LANG=C.UTF-8             0B
<missing>      4 days ago    /bin/sh -c ldconfig &&     sed -i '/BUILD_ID…   32.3kB
<missing>      4 days ago    /bin/sh -c #(nop) COPY dir:f054defad7465e3fc…   396MB

可行的优化方法

1. 切换到minimal配置安装

rustup默认会安装包含文档、源码的完整工具链,切换到minimal配置只装核心组件,能直接减少一半以上体积:

rustup set profile minimal && rustup install nightly

2. 手动清理冗余文件

安装完成后,删除工具链里的文档、源码等非必需文件:

rustup install nightly && rm -rf ~/.rustup/toolchains/nightly-*/share/doc ~/.rustup/downloads/*

3. 使用Docker多阶段构建

把Rust工具链隔离在构建阶段,只把编译好的二进制文件复制到最终镜像,完全丢弃整个Rust环境:

# 构建阶段:安装Rust并编译需要的工具
FROM archlinux:latest AS builder
RUN pacman -Syu --noconfirm && pacman -S --needed --noconfirm rustup git
RUN rustup set profile minimal && rustup install nightly && rustup default nightly
RUN cargo install stylua taplo-cli

# 最终镜像:只保留编译好的工具和Neovim环境
FROM archlinux:latest
COPY --from=builder /root/.cargo/bin/stylua /root/.cargo/bin/taplo-cli /usr/local/bin/
# 后续继续构建Neovim的步骤...

4. 用预编译二进制替代cargo install

对于stylua、taplo-cli这类工具,直接去官方仓库下载对应平台的预编译可执行文件,放到/usr/local/bin目录下即可,不用通过cargo安装,完全避免Rust工具链的依赖。

内容的提问来源于stack exchange,提问作者s1n7ax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 09:45:41