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

推荐订阅源

Y
Y Combinator Blog
B
Blog
S
SegmentFault 最新的问题
Vercel News
Vercel News
博客园 - 聂微东
宝玉的分享
宝玉的分享
C
Check Point Blog
有赞技术团队
有赞技术团队
IT之家
IT之家
V
V2EX
爱范儿
爱范儿
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
博客园 - 司徒正美
博客园_首页
Last Week in AI
Last Week in AI
博客园 - 叶小钗
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
F
Fortinet All Blogs
腾讯CDC
J
Java Code Geeks

竹林里有冰的博客

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 认证 | 竹林里有冰的博客
小记 - 尝试拼凑出 apt 仓库中的 deb 包下载地址 | 竹林里有...
竹林里有冰 · 2024-03-13 · via 竹林里有冰的博客

大概一周前,有一个来源不明的 Linux 微信,从包的结构来看是基于 qt 实现的图形化界面,deb 包中的 control 信息表明是腾讯团队官方出品的。今天听人说 UOS 的商店上架了最新的微信,便尝试从 UOS 的官方仓库提取下载链接,帮助 AUR Maintainer 获取到新的地址。

在我的《deepin-elf-verify究竟是何物?》这篇文章中,我成功从 uos.deepin.cn 下载到了来自 UOS 中的软件包。可惜,当我采用同样的方法搜索 weixin 或者 wechat 字样时,没有得到任何结果。

UOS 上的软件来源起码来自两个仓库,一个是与系统有关的软件,比如 Linux Kernel,GCC 一类开源软件,应该就是来自我之前下载到 deepin-elf-verify 的那个源。除此之外,还有一个 appstore 源,里面存放的都是应用商店中上架的软件(大部分可能是闭源的)。

在 chinauos.com 下载到最新的 ISO 安装镜像后,直接在虚拟机中走完正常的安装流畅,然后直捣黄龙。

源地址源地址

可以看出,/etc/apt/sources.list.d/appstore.list 文件中列出的源很有可能就是我们要找的新版微信的所在源。

可惜直接访问的时候,源地址给出了 403。他们似乎不愿意公开源地址的 filelist index。

不过没关系,既然 UOS Desktop 目前仍然依赖 APT 实现软件安装,那它的源应该仍然符合 Debian 的 APT Repository 目录结构。

根据 DebianWiki 中的描述

gives an example:

deb https://deb.debian.org/debian stable main contrib non-free

An archive can have either source packages or binary packages or both but they have to be specified separately to apt.

The uri, in this case https://deb.debian.org/debian specifies the root of the archive. Often Debian archives are in the debian/ directory on the server but can be anywhere else (many mirrors for example have it in a pub/linux/debian directory, for example).

The distribution part (stable in this case) specifies a subdirectory in $ARCHIVE_ROOT/dists. It can contain additional slashes to specify subdirectories nested deeper, eg. stable/updates. distribution typically corresponds to Suite or Codename specified in the Release files. FIXME is this enforced anyhow?

To download packages from a repository apt would download an InRelease or Release file from the $ARCHIVE_ROOT/dists/$DISTRIBUTION directory.

我尝试了访问 https://pro-store-packages.uniontech.com/appstore/dists/eagle-pro/Release,获得了一系列索引文件的索引。

索引的索引(很拗口)索引的索引(很拗口)

第一段中就能看到熟悉的 Packages 文件。根据我 deepin-elf-verify 相关博客中记载,这个文件中会保存 deb 文件的相对路径。我们先拼出 amd64 架构的 Packages 文件下载链接: https://pro-store-packages.uniontech.com/appstore/dists/eagle-pro/appstore/binary-amd64/Packages

deb 包详细信息deb 包详细信息

这里可以看到源中每一个 deb 包的信息。图中红色方框框出的便是其中一个 deb 包在源中的相对路径。

我们可以使用 grep 命令去检索 weixin 或者 wechat 关键词

curl -sL https://pro-store-packages.uniontech.com/appstore/dists/eagle-pro/appstore/binary-amd64/Packages | grep -E "weixin|wechat"

获取到我们想要的 deb 包的相对路径获取到我们想要的 deb 包的相对路径

在这个路径前加上之前 appstore.list 文件中给出的 url 前缀,即可拼凑出 deb 包的完整下载地址: https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.wechat/com.tencent.wechat_1.0.0.236_amd64.deb

放到浏览器中尝试,果然可以正常下载

正常下载正常下载