惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
WordPress大学
WordPress大学
小众软件
小众软件
云风的 BLOG
云风的 BLOG
IT之家
IT之家
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
T
Tailwind CSS Blog
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
宝玉的分享
宝玉的分享
博客园 - Franky
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
Hugging Face - Blog
Hugging Face - Blog
Jina AI
Jina AI
D
Docker
博客园 - 聂微东
C
Check Point Blog
H
Help Net Security

The Rust Programming Language Forum - Latest topics

Beginner building a Rust backend framework (AI-assisted) — feedback appreciated C++ to Rust -- Exceptions Re-exporting a trait with a custom derive_macro Gold linker is deprecated Why is using PhantomData valid in this case? Code review for Static Pool Allocator Looking for a pool based allocator Why is this legal? What does it mean for Rustc to run "out of TLS keys"? Using async/await internally with no internal runtime, but exposing a nonblocking poll API — is this a reasonable design? Testing functions that use randomness `cargo-path`: improve coding agents&#39; ability to find Rust documentation Rust task runners Lifetime weird case Windows - USB device not detected A random rustc-ice-[...].txt file appeared Develop rust where the environment is setup in a docker Undefined Behavior: in-bounds pointer arithmetic failed: attempting to offset pointer by 20 bytes, but got alloc238 which is only 1 byte from the end of the allocation Unbug 0.5 - Runtime debug assertions Is there a tiny error in section 6.2 Reference types? Lifetime woes implementing ratatui::Widget for a reference Rusqlite + Chrono: How do I simplify code to obtain chrono datetime value From OOP to Rust – struggling with code organization and data structure design Way to avoid a self-referential struct Rust RF and audio resources/communities Whyhttp - HTTP mocks that fail where the bug actually is Using tokio channel permits in a tower service Arc::increment_strong_count design question (cross-post) `&T`, `&mut T`, `Pin<&mut T>` and `&Cell<T>`: Ways of Borrowing a `T` Ratatui detect arrow key press and release
Frostmirror - (lightweight airgap alternative inspired fr...
pillisan42 · 2026-04-19 · via The Rust Programming Language Forum - Latest topics

Hi,

Two weeks ago I was working on a application that must be compiled on an air gapped environment.

After spending two days trying to download the 400go of crates.io and setting up panamax, I've got tired of trying.

So with the help of Claude Code I made a tiny app over a night that can be docker deployed even on an air gapped system with help of "docker save" and "docker load" to ease setup on offline environment.

This tools has helped me to reduce to the only necessary size I needed

Here is a quick start on how to use the tool from my git repository :

Quick Start

Step 1 -- Define your dependencies

Create a depends.toml file listing the crates your project needs:

[dependencies]
tokio = { version = "1", features = ["rt-multi-thread", "net", "macros"] }
serde = { version = "1", features = ["derive"] }
axum = "0.7"

[platforms]
targets = ["x86_64-unknown-linux-gnu"]
toolchain = "stable"

You only need to list direct dependencies. frostmirror delegates to cargo generate-lockfile to resolve the entire transitive dependency tree -- features, optional deps, and platform-specific deps are all handled by cargo's own resolver.

Step 2 -- Fetch (online machine)

frostmirror fetch --config depends.toml --output ./releases/

This produces a file like 20260402-2130-crates.pkg in ./releases/. The bundle contains every .crate file, sparse index entries, rustup binaries, and a cargo config.

Step 3 -- Transfer across the air gap

cp ./releases/20260402-2130-crates.pkg /media/usb/

Step 4 -- Import (offline machine)

Drop the .pkg file into the incoming directory:

cp /media/usb/20260402-2130-crates.pkg ./incoming/

If the registry container is running with --watch-incoming, the import happens automatically. Otherwise, import manually:

frostmirror import 20260402-2130-crates.pkg --mirror /mirror

Step 5 -- Build your project offline

# ~/.cargo/config.toml
[http]
check-revoke = false # may be needed if you have a self sign ssl https server

[source.frostmirror]
registry = "sparse+http://frostmirror.internal:8080/index/"

[source.crates-io]
replace-with = "frostmirror"
cargo build  # resolves everything from frostmirror

Hope this will help someone as it helped me.