ci: bound and shrink the Linux desktop dependency install
Summary
Fixes the recurring "Install Linux desktop dependencies" timeout in Linux Smoke Tests. One file: .github/workflows/linux.yml.
Cause. On 2026-10-22, 10 of 73 executed runs hit the 6-minute limit and 11 more took 135–337 s. Normal is 20–68 s. In run 39858436592 (#3918) the Azure mirror stalled a 2 MB poppler-data download, then crawled. My first push reproduced the stall on the same package. A later probe saw 69 MB/s for the same file. So it is a cold-cache miss on a slow upstream, and re-runs pass once the mirror is warm. Without --no-install-recommends the step also fetched 82 MB / 116 packages.
Fix.
--no-install-recommends: 44 new packages, 30.5 MB. The package list is unchanged.- Cache the downloaded
.debs withactions/cache. - Download in a separate
--download-onlyphase: 3 attempts, each under a deadline. dpkg never runs under a deadline. timeout-minutes: 6stays.
Validation
pnpm check:affected --run --head 7d1b2d0d…: exit 0.
| Step duration | Result |
|---|---|
| Before (2026-10-22) | 10 × 372 s timeout; 11 × 135–337 s |
| After, cache miss | 36 s |
| After, cache hit | 13 s, 14 s |
Earlier heads of this branch also gave 16, 21, 14 s and 14, 13, 13 s. The first push failed with a 60 s deadline during a bad mirror period. That is why the cache exists.
Risk: apt-get update still uses the mirror (3 × 30 s bound).
🤖 Generated with Claude Code