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

推荐订阅源

G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
雷峰网
雷峰网
博客园_首页
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
小众软件
小众软件
D
Docker
P
Proofpoint News Feed
B
Blog
Vercel News
Vercel News
B
Blog RSS Feed
U
Unit 42
月光博客
月光博客
The GitHub Blog
The GitHub Blog
Apple Machine Learning Research
Apple Machine Learning Research
Y
Y Combinator Blog
I
InfoQ
Recent Announcements
Recent Announcements

竹林里有冰的博客

Nuxt SSG 博客的尾斜杠到底怎么加? | 竹林里有冰的博客 小米 Xiaomi Book Pro 14 (Ultra X7) Linux 兼容性实测 | 竹林里有冰的博客 国内(大陆)版小米 FCM 熄屏断连:Rootless 环境下的尝试与可能的解决方案 | 竹林里有冰的博客 我没法访问 dl.google.com —— 记一次 TUN 下的网络 debug | 竹林里有冰的博客 Vercel 的缓存控制,你注意过吗? | 竹林里有冰的博客 小记 —— Caddy 在 Layer 4 上的流量代理实践 | 竹林里有冰的博客 你的域名后缀拖慢你的网站速度了嘛?——再谈 DNS 冷启动 | 竹林里有冰的博客 DNS 冷启动:小型站点的“西西弗斯之石” | 竹林里有冰的博客 HTTP/2 Server Push 已事实性“死亡”,我很怀念它 | 竹林里有冰的博客 Nuxt Content v3 中数组字段的筛选困境与性能优化 | 竹林里有冰的博客 后 OCSP 时代,浏览器如何应对证书吊销新挑战 | 竹林里有冰的博客 初试 Github Action Self-hosted Runner,想说爱你不容易 | 竹林里有冰的博客 DNS 解析延迟毁了我的图床优化 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(下):告别 DOM 操作,拥抱 AST 与函数式渲染 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(上):从暴力刷新、分块更新到 Morphdom 的华丽变身 | 竹林里有冰的博客 node-sass 迁移至 dart-sass 踩坑实录 | 竹林里有冰的博客 前端中的量子力学——一打开 F12 就消失的 Bug | 竹林里有冰的博客 2025 年,如何为 web 页面上展示的视频选择合适的压缩算法? | 竹林里有冰的博客 el-image 和 el-table 怎么就打架了?Stacking Context 是什么? | 竹林里有冰的博客 2025年,前端如何使用 JS 将文本复制到剪切板? | 竹林里有冰的博客 ssh 拯救世界——通过 ssh 隧道在内网服务器执行 APT 更新 | 竹林里有冰的博客 Cudy TR3000 吃鹅(daed)记 | 竹林里有冰的博客 使用 Cloudflare Workers 监控 Fedora Copr 构建状态 | 竹林里有冰的博客 基于 Cloudflare Workers 实现的在线服务状态检测告警系统 | 竹林里有冰的博客 构建部署在 Cloudflare Workers 上的 TG Bot | 竹林里有冰的博客 2024年,Firefox 是唯一还在坚持执行在线的 SSL 证书吊销状态检查的主流浏览器 | 竹林里有冰的博客 小爱课程表适配不完全指北——以 ZJUT 本科正方教务系统为例 | 竹林里有冰的博客 将博客从 waline v2 更新到 waline v3 | 竹林里有冰的博客 给家里云装上 Fedora 41 KDE 后,我是如何配置的 | 竹林里有冰的博客 为 Hexo 添加 follow 认证 | 竹林里有冰的博客
尝试体验 Fedora COPR 中的 allow SSH 功能 | 竹林里有冰的博客
竹林里有冰 · 2024-07-15 · via 竹林里有冰的博客

在今年的早些时候,我在 COPR 看到了一个新出现的名为「allow SSH」的按钮。

我在 COPR 的 User Documentation 中找到了对应的描述。

Sometimes it is useful to manually debug failed builds not locally but within the Copr infrastructure. That’s why it is possible to allow SSH access to a copr builder. More information in the SSH access to Copr builders blog post.

COPR 的这项功能允许包维护者远程访问自己没有的 CPU 架构或 Linux 发行版的 Linux 环境,大大减少打包时的痛点。

开始使用#

尝试点击按钮,获得如下界面,可以填写自己的 ssh 公钥,最多可以选择两台设备,如果选择的设备数量大于 2,则剩下的人物会维持在 pending 状态,直到被你 ssh 连接的构建机完成对应的构建任务。

在该次构建的详情页面,等待 backend.log 按钮出现

在这个 url 对应的文件中,我们可以找到需要的 ssh 命令

使用对应的 ssh 命令即可连上构建服务器

连接成功连接成功

先跑个 neofetch 看看,双核 16G,看着还行。

neofetchneofetch

随手跑了个 speedtest,竟然是千兆上下传对等的网速。

speedtest 结果speedtest 结果

在这台机子上,我们可以使用 builder-live.log 中的命令手动触发一次构建(不过我这里跑了一半就报错了,疑似是系统不够完善)

构建命令构建命令

不过很可惜,COPR 似乎并没有给我们中途去干预/调试构建过程的方案,仅仅是提供了一个可供自由操作的 Linux 环境。使用 copr-rpmbuild 命令可以进行对应的构建,但构建过程依然是在沙箱内进行,且没有给中途暂停/调试的机会。如果需要一步步手动的构建,还是建议使用 rpmbuild 命令进行。

杂项#

  • 使用 copr-builder help 命令可以获取打包机的提示信息
  • 使用 copr-builder show 命令查看剩余时间
  • 使用 copr-builder prolong 可以延长打包机的有效时长
  • 使用 copr-builder release 可以销毁当前的打包机环境

限制#

  • 由于安全原因,构建结束后,只有 spec 文件和日志可以被存储到 copr 对应项目的服务器。打包机会使用一个独特的沙箱防止其构建产物被二次使用,哪怕是同一个用户都不行。
  • 为了避免资源艾琳娜贵妃,同一用户在同一时刻最多只能使用两台具有 ssh 访问权限的打包机。
  • 由于上面的两套规定,当 copr 构建失败时并不能自动启动 SSH 访问权限,需要用户手动在面板上 resubmit 当前任务并选择使用 SSH 访问权限。
  • 打包机在默认情况下 1 小时后自动销毁,除非你手动申请延长时间,最长为 48 小时。
  • 有些打包机只有 IPv6 的访问地址,你没得选。如果你无法连接 IPv6 网络,你可以取消当前的任务并重新发布并期待能给你下发一台具有 IPv4 访问地址的打包机(其实非常少),或者使用代理。
  • 如果 SRPM 构建失败,则不能 resubmit 当前任务。这是 COPR 的实现逻辑问题,未来可能得到改善。

参考#

「SSH access to Copr builders」