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

推荐订阅源

P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
Security Latest
Security Latest
P
Privacy International News Feed
T
Threat Research - Cisco Blogs
H
Help Net Security
T
The Exploit Database - CXSecurity.com
Know Your Adversary
Know Your Adversary
博客园_首页
S
Securelist
S
Schneier on Security
G
GRAHAM CLULEY
Cisco Talos Blog
Cisco Talos Blog
V
Visual Studio Blog
博客园 - 叶小钗
C
Cybersecurity and Infrastructure Security Agency CISA
有赞技术团队
有赞技术团队
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
Stack Overflow Blog
Stack Overflow Blog
量子位
L
Lohrmann on Cybersecurity
Hugging Face - Blog
Hugging Face - Blog
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
A
Arctic Wolf
P
Privacy & Cybersecurity Law Blog
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
The Hacker News
The Hacker News
罗磊的独立博客
博客园 - 司徒正美
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
K
Kaspersky official blog
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
L
LINUX DO - 热门话题
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
V2EX
V
Vulnerabilities – Threatpost
AWS News Blog
AWS News Blog
小众软件
小众软件
Project Zero
Project Zero

Mox的笔记库

2026PPoPP MLIR Tutorial学习 | Mox的笔记库 MacOS配置《明日方舟:终末地》 | Mox的笔记库 2025:向内生长 | Mox的笔记库 由mlir::ExecutionEngine引发的跨系统问题 | Mox的笔记库 WSL2配置Cuda-Tile环境记录(未完待续) | Mox的笔记库 Vibe Coding手搓项目记录 | Mox的笔记库 UCPD.sys事件存档 | Mox的笔记库 换新电脑之Mac mini M4从购买到配置 | Mox的笔记库 Mac配置MLX-C开发环境 | Mox的笔记库 RISC-V meets RDBMS——RISC-V架构上可运行数据库一览 | Mox的笔记库 DuckDB Sort实现调查 | Mox的笔记库 修复Redis在树莓派5上无法运行的问题 | Mox的笔记库 如何在MLIR中自定义类型并且输出运行 | Mox的笔记库 网站网络结构变更记录 | Mox的笔记库 EDBT25论文阅读:PhoebeDB——A Disk-Based RDBMS Kernel for High-Performance and Cost-Effective OLTP SIGMOD25论文阅读:BPF-DB:——A Kernel-Embedded Transactional Database Management System For eBPF Applications Apache Arrow Gandiva项目解析 | Mox的笔记库 VLDB24论文阅读:Cloud-Native Database Systems and Unikernels——Reimagining OS Abstractions for Modern Hardware NoisePage源码分析(未完待续) | Mox的笔记库 VLDB20论文阅读:Mainlining Databases——Supporting Fast Transactional Workloads on Universal Columnar Data File Formats VLDB17论文阅读:Relaxed Operator Fusion for In-Memory Databases:Making Compilation, Vectorization, and Prefetching Work Together At Last 论文阅读:How not to structure your database-backed web applications——a study of performance bugs in the wild SIGMOD24阅读:ROME——Robust Query Optimization via Parallel Multi-Plan Execution 文章阅读:First Past the Post-Evaluating Query Optimization in MongoDB SIGMOD文章阅读:Apache Calcite——A Foundational Framework for Optimized Query Processing Over Heterogeneous Data Sources VLDB23论文阅读:Analyzing the Impact of Cardinality Estimation on Execution Plans in Microsoft SQL Server SIGMOD22论文阅读:Efficient Massively Parallel Join Optimization for Large Queries VLDB论文阅读:Weaving Relations for Cache Performance VLDB22论文阅读:ConnectorX——Accelerating Data Loading From Databases to Dataframes 论文阅读:UniKraft-Fast, Specialized Unikernels the Easy Way 当DuckDB遇上RISC-V | Mox的笔记库 SIGMOD25论文阅读:An Elephant Under The Microscope——Analyzing The Interaction Of Optimizer Components In PostgreSQL 论文阅读:Compile-Time Analysis of Compiler Frameworks for Query Compilation VLDB23阅读:Bringing Compiling Databases to RISC Architectures SIGMOD24文章阅读:Query Compilation Without Regrets | Mox的笔记库 淦!MLIR输出Hello World不应该这么难! | Mox的笔记库 2024:拥挤年代的想象与创造 | Mox的笔记库 如何给自己的博客添加MLIR和LLVM IR语法高亮 | Mox的笔记库 博客重构:从Hexo到Astro | Mox的笔记库 VLDB19-Parsing Gigabytes of JSON per Second论文阅读 CIDR25:Runtime-Extensible Parsers阅读 | Mox的笔记库 SIGMOD24文章阅读:VeriTxn | Mox的笔记库 MLIR学习资料整理 | Mox的笔记库 VLDB23文章阅读——Exploiting Cloud Object Storage for High-Performance Analytics VLDB24——OLAP on Modern Chiplet-Based Processors走马观花阅读 如何让数据库中的Python跑的更快-VLDB22-YeSQL文章阅读 | Mox的笔记库 你好,世界! | Mox的笔记库 如何愉快的运行一个MLIR程序 | Mox的笔记库 让系统研究更有意义:HarmonyOS NEXT的教训和经验——讲座回顾 | Mox的笔记库 VLDB22:YeSQL文章阅读(已废弃) | Mox的笔记库 UNSW 24T3 COMP9336上课记录 | Mox的笔记库 Velox开发环境配置踩坑记录 | Mox的笔记库 LingoDB源码编译与分析 | Mox的笔记库 论文阅读:Declarative Sub-Operators for Universal Data Processing 论文阅读:Designing an Open Framework for Query Optimization and Compilation MLIR Toy Tutorial实践记录 | Mox的笔记库 2024年7月RSSHub开发体验 | Mox的笔记库 LLVM-Kaleidoscope实操踩坑记录 | Mox的笔记库 澳洲大学计算机硕士比较 | Mox的笔记库 论文阅读——CDUL:CLIP-Driven Unsupervised Learning for Multi-Label Image Classification CVPR2023-CLIP算法调研 | Mox的笔记库 论批量快速添加图片与视频水印的事 | Mox的笔记库 基于元信息写入的服务器压力测试 | Mox的笔记库 家庭组网IPv6+Mesh折腾 | Mox的笔记库 MjAyMw==,希望,前进与平庸之道 | Mox的笔记库 code-server初体验 | Mox的笔记库 从Nginx到Caddy | Mox的笔记库 RMM观察与初探 | Mox的笔记库 计算机网络课设——UDP/TCP/TLS Socket实验 | Mox的笔记库 JQuery的XSS初探 | Mox的笔记库 生产实习记录 | Mox的笔记库 Fedora-CoreOS配置与试用(2023年) | Mox的笔记库 Electron学习笔记 | Mox的笔记库 ServerSentEvent学习 | Mox的笔记库 报告翻译:容器云的安全挑战 | Mox的笔记库 Vagrant配置Metarget靶场环境 | Mox的笔记库 OpenAI-whisper折腾 | Mox的笔记库 202202,困惑,混乱与未曾设想之路 | Mox的笔记库 2022年Hack the box:Tier1免费区全解 | Mox的笔记库 Navidrome部署记录 | Mox的笔记库 长安杯2021-snake复现 | Mox的笔记库 报告概要翻译:OBFUSCATING C++ PROGRAMS VIA CONTROL FLOW FLATTENING 从零开始的Django CVE-2022-28346复现 | Mox的笔记库 2022CISCN(西北区赛)-The shinning | Mox的笔记库 Docker+QEMU+Arm64(Ubuntu)+环境配置(2022版) | Mox的笔记库 Arch Linux运行树莓派系统(2022年) | Mox的笔记库 2022CISCN初赛-ez_usb-复盘WriteUp | Mox的笔记库 Arch Linux迁移计划 | Mox的笔记库 Django事务使用 | Mox的笔记库 记录第一次EduSRC上报 | Mox的笔记库 Jetbrain问题应急处理 | Mox的笔记库 Celery5.2学习&配置 | Mox的笔记库 Waline部署记录 | Mox的笔记库 Frida hook初次实战 | Mox的笔记库 NodeMCU-MicroPython配置实录 | Mox的笔记库 Log4j2漏洞复现 | Mox的笔记库 2022长安“战疫”网络安全卫士守护赛回顾 | Mox的笔记库 2021年12月 Vivo千镜杯回顾 | Mox的笔记库 Windows的WSL2+Docker初探 | Mox的笔记库 Hexo部署安装全流程回顾 | Mox的笔记库
给Debian上包——以DuckDB为例 | Mox的笔记库
MocusEZ · 2025-12-24 · via Mox的笔记库

这事情让我想想从哪里开始说起……应该还是从年初给DuckDB上RISC-V CI的时候说起(详见:当DuckDB遇上RISC-V),既然能构建CI,那构建Debian打包到源(Source)应该也不是问题。

在Github Discussions,我找到了一个讨论记录:

Deeature Request: Debian packaging #10071

而这个讨论指向了Debian社区(准确说法应该是Debian WNPP——Work-Needing and Prospective Packages)的DuckDB的ITP:

#1036922 - ITP: duckdb — fast, in-process analytical database - Debian Bug report logs

该ITP(Intent To Package)最早于2023年提出,从记录可以看到,那时的DuckDB版本号甚至还没到1.0,虽然ITP被提出了,但很显然并没有完成Debian Package打包。在邮件询问完相关人员,我开始接手相关打包事项

DuckDB的分发包被Debian社区的人给牛走了,没有我的事情了,此案结束🫤

流程问题

Debian对于包的贡献有一个非常复杂的流程,如果要接手一个ITP,正确做法应该是用reportbug发起RFA(Request for Adoption)声明你将接手打包工作,或者是RFP(Request for Package)让其他开发者关注

但当时在容器里,reportbug老是无法正常运转,所以我没做这个就直接开干了(虽然从结果上来说并没什么问题就是了😂)

基础打包套件

通过apt安装,已经过去太长时间,我现在只能把我想到的给记一下

sudo apt install wget build-essential debhelper devscripts dh-make fakeroot lintian quilt dpkg-dev dput debsign gnupg reportbug

针对DuckDB还需要以下依赖

sudo apt install cmake ninja-build libssl-dev g++

各类打包踩坑

DuckDB使用CMake构建,当时想着用LLM基本不会有什么大问题——但讲真25年年初的大模型还是不太给力,而确实有些情况超出预期

缓慢的编译速度&高内存消耗

debuild默认采用CMake+Make的组合编译,而Make如果不设置-j就是单线程运行,速度慢的令人发指😵

因此需要在rules中添加参数使用Ninja进行编译

dh $@ --buildsystem=cmake+ninja

内存消耗问题,则是因为自己是使用的WSL版Docker编译导致的——虽然我电脑内存是32GB,但要是同时运行多个网页外加QQ和微信,容器可能就会OOM导致崩溃。最后的解决方法是,移到学校的大服务器上编译,内存管够,速度肯定要比笔记本快得多😘

CRLF和LF问题

这其实是老问题了😂在Windows上做Linux相关工作,就不可避免会出现这种问题,但我没想到的是LLM生成的文件里默认是CRLF,这导致我上传Debian Mentors一堆爆红

解决方法无他:改为VSCode远程SSH进入编辑测试,而不是在Windows上改好文件再上传上去

Debian Salsa注册

这是Debian社区的Gitlab平台,需要进入Debian源的deb包基本都在上托管。其注册账号需要人工审核,因此从注册完成到登陆可能需要几天时间。一开始,我使用的是我的域名邮箱去注册(mocusez.site),等了很长时间,都没等来审核邮件,而我换成学校邮箱和Outlook却很快收到邮件——感觉应该是阿里邮箱关于收信的管理有问题,为此耽搁了几天的进度。

开源证书检查

这一块Debian要求比较高,所有源码,包括依赖在内,必须在copyright文件中标明所使用的开源证书(License)

一开始我用的是系统套件自带的licensecheck,但这个软件的运行速度实在是太慢了🥲后来看了Phil的Mentor页面,发现他用的是licenserecon进行检查,而我改用licenserecon以后检查速度确实快上不少

Git管理问题

最理想的情况是把Debian打包的相关信息上传到上游(也就是Github上DuckDB的仓库),但从Discussion的情况来看,DuckDB社区对于这个议题的积极性不是很高,所以放在Debian Salsa管理是个不错的选项

对此一般分成两个Branch:

一个主分支:放源码和Debian打包信息

一个Upstream分支:用于同步最新的源码

在经历几个月的实践下来,发现最理想的模式是Upstream分支实时拉取最新版本,然后cherry-pick,或直接将Debian打包信息复制进去然后commit

但这个方式总感觉还是不方便,可能以后还需要改进

文档Doc管理问题

Debian打包里需要一份纯文本的说明文件,应该是用于添加进Man Page,往Github Discussion发了信息没得到回复后(Request to Include Debian Manpage in Upstream Repository),暂且用duckdb --help的内容先顶上

小插曲:Debian Mentor

这里要感谢Phil Wyett提供的支持,在他的帮助下,我完成了对于DuckDB相对完整的deb打包流程,在写这篇Blog的时候,我准备以他的Mentor流程来介绍Debian打包的主意事项,但从最新的Blog来看(Debian activity and Debian Mentors)似乎他不再接手新的Mentor工作了(连带Debian Mentor的介绍页面一并删除),对此有些遗憾😥——如果你愿意进一步深挖,就会发现开源圈的水其实也很深

准备工作差不5月份就做完了,9月份的时候接到Otto Kekäläinen的邮件说愿意继续Review,但那时候我正在忙着做我毕业的主项目,腾不出手来继续推进打包,一直拖到11月底,Debian Mentors把我的打包删除,相关对话记录也找不到了,这件事就这样不了了之

结语

目前打包还在Debians Mentors挂着,大家感兴趣的可以看看

Debians Mentors页面:https://mentors.debian.net/package/duckdb/

Debian Salsa托管仓库:MocusEZ/duckdb

参考资料