第 29/30 天(重访)
引言
首发版中我们学习了 Ubuntu 官方文档体系、社区求助渠道和 Bug 报告规范。但 Ubuntu 的魅力远不止于「使用」——它是由全球数千名贡献者共同维护的开源生态系统。每一个 Ubuntu 用户都有潜力成为贡献者,无论你是开发者、翻译者、设计师还是文档写手。
今天这篇重访版将带你跳出「使用者」的视角,深入 Ubuntu 社区的内核——从 Ubuntu 社区治理结构到 Debian 打包实战,从 Launchpad 翻译平台到 Snap 商店发布,从提交第一个补丁到成为 Ubuntu Member 的完整路径。你将学会如何真正地「回馈」这个社区。
一、Ubuntu 社区治理结构:谁在维护 Ubuntu?
1.1 社区组织架构
Ubuntu 社区并非无政府状态,而是有一套清晰的治理体系:
Canonical(赞助商)
├── Ubuntu 技术委员会(Technical Board)
│ ├── 决定技术方向、架构决策
│ └── 批准新的核心组件
├── Ubuntu 社区委员会(Community Council)
│ ├── 管理社区行为准则
│ └── 批准 Ubuntu Member 申请
├── 各团队(Teams)
│ ├── 内核团队、桌面团队、服务器团队
│ ├── 安全团队、打包团队、文档团队
│ └── 本地化团队、LoCo 团队
└── Ubuntu 成员(Members)
└── 通过贡献获得投票权的社区成员
关键角色:
| 角色 | 职责 | 如何加入 |
|---|---|---|
| Ubuntu Member | 有投票权的社区成员 | 提交贡献记录申请 |
| Core Developer | 拥有直接上传包的权限 | 长期贡献后由团队提名 |
| LoCo Team Lead | 本地社区负责人 | 组织本地活动 |
| Package Maintainer | 维护特定软件包 | 通过 MOTU 项目加入 |
1.2 Ubuntu 行为准则(Code of Conduct)
Ubuntu 社区的核心价值观写在 Ubuntu Code of Conduct 中:
# 查看行为准则
curl -s https://ubuntu.com/community/code-of-conduct | head -50
核心原则:
– 尊重他人 — 每一句讨论都应有建设性
– 协作而非竞争 — 我们的目标是共同进步
– 欢迎新人 — 每个贡献者都曾是新手
– 保持开放 — 所有决策应透明公开
💡 实战建议: 在参与任何 Ubuntu 社区讨论前,先阅读行为准则。这是你融入社区的「护照」。
二、Debian/Ubuntu 打包实战:创建你的第一个 .deb 包
2.1 打包基础:从源码到 .deb
将软件打包成 .deb 格式是 Ubuntu 贡献的核心技能之一。下面是完整的打包流程:
# 安装打包工具
sudo apt install build-essential debhelper devscripts dh-make -y
# 下载源码包(以 hello 为例)
apt-get source hello
cd hello-2.10/
# 查看现有打包文件
ls -la debian/
# 你会看到: control, rules, changelog, copyright 等
核心文件解析:
debian/control — 包的元信息:
cat debian/control
# Source: hello
# Section: devel
# Priority: optional
# Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
# Build-Depends: debhelper-compat (= 13), autoconf, automake
#
# Package: hello
# Architecture: any
# Depends: ${shlibs:Depends}, ${misc:Depends}
# Description: The classic greeting program
# This is the GNU hello program, which prints a friendly greeting.
debian/rules — 构建规则(Makefile 风格):
#!/usr/bin/make -f
%:
dh $@
这是现代 dh 风格的简化写法,dh $@ 会自动执行所有标准构建步骤。
debian/changelog — 版本变更记录:
# 使用 dch 工具自动生成 changelog 条目
dch -i "Initial release for Ubuntu 24.04"
# 或者手动编辑
cat debian/changelog
# hello (2.10-1ubuntu1) noble; urgency=medium
# * Initial release for Ubuntu 24.04
# -- Your Name <you@example.com> Mon, 17 Aug 2026 10:00:00 +0800
2.2 构建与测试
# 构建包(会生成 .deb 文件)
dpkg-buildpackage -us -uc -b
# 查看构建结果
ls -lh ../*.deb
# 安装测试
sudo dpkg -i ../hello_2.10-1ubuntu1_amd64.deb
# 检查包内容
dpkg-deb -c ../hello_2.10-1ubuntu1_amd64.deb
dpkg-deb -I ../hello_2.10-1ubuntu1_amd64.deb
2.3 创建 PPA(Personal Package Archive)
PPA 是 Ubuntu 用户发布自定义包的标准方式,通过 Launchpad 托管:
# 1. 在 Launchpad 上创建 PPA(通过 Web 界面)
# 访问 https://launchpad.net/people/+me/+activate-ppa
# 2. 上传源码包
sudo apt install dput -y
dput ppa:你的Launchpad用户名/ppa名称 hello_2.10-1ubuntu1_source.changes
# 3. 用户安装你的 PPA 包
sudo add-apt-repository ppa:你的用户名/ppa名称
sudo apt update
sudo apt install hello
⚠️ 注意事项:
– PPA 包需要 GPG 签名(Launchpad 构建时会自动处理)
– 上传后 Launchpad 会自动在多个架构上构建
– 构建日志可在 Launchpad 页面上查看
2.4 实战:打包一个简单的 Python 脚本
# 创建打包目录
mkdir -p mytool-1.0/debian
cd mytool-1.0
# 创建你的程序
cat > mytool.py << 'EOF'
#!/usr/bin/env python3
import sys
print(f"Hello from mytool! Ubuntu version check...")
with open('/etc/os-release') as f:
for line in f:
if line.startswith('PRETTY_NAME'):
print(line.strip().split('=')[1].strip('"'))
EOF
chmod +x mytool.py
# 创建 debian 目录
mkdir debian
# 创建 control 文件
cat > debian/control << 'EOF'
Source: mytool
Section: utils
Priority: optional
Maintainer: Your Name <you@example.com>
Build-Depends: debhelper-compat (= 13)
Standards-Version: 4.6.2
Package: mytool
Architecture: all
Depends: ${python3:Depends}, ${misc:Depends}
Description: A simple demonstration tool
This package demonstrates how to package a Python script
for Ubuntu/Debian.
EOF
# 创建 rules 文件
cat > debian/rules << 'EOF'
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_install:
install -D -m 755 mytool.py $(CURDIR)/debian/mytool/usr/bin/mytool
EOF
chmod +x debian/rules
# 创建 changelog
cat > debian/changelog << 'EOF'
mytool (1.0-1) unstable; urgency=medium
* Initial release
-- Your Name <you@example.com> Mon, 17 Aug 2026 10:00:00 +0800
EOF
# 创建 compat 和 source/format
echo "13" > debian/compat
mkdir -p debian/source
echo "3.0 (quilt)" > debian/source/format
# 构建
dpkg-buildpackage -us -uc -b
三、Ubuntu 翻译与本地化:让 Ubuntu 说中文
3.1 Launchpad Translations 平台
Ubuntu 的翻译工作通过 Launchpad Translations 平台进行:
# 访问翻译平台
# https://translations.launchpad.net/ubuntu/
# 安装翻译工具
sudo apt install poedit translate-toolkit -y
翻译流程:
- 在 Launchpad 上注册账号
- 加入 Ubuntu Chinese Translators 团队
- 选择要翻译的包(如
gnome-control-center、ubuntu-desktop-installer) - 在线翻译或下载 .po 文件离线翻译
# 下载 .po 翻译文件
wget https://translations.launchpad.net/ubuntu/noble/+source/gnome-control-center/+pots/gnome-control-center/zh_CN/+translate
# 使用 poedit 编辑
poedit gnome-control-center-zh_CN.po
# 检查翻译质量
pocheck gnome-control-center-zh_CN.po
msgfmt -c gnome-control-center-zh_CN.po -o /dev/null
3.2 翻译最佳实践
| 原文 | ❌ 直译 | ✅ 意译 |
|---|---|---|
| “Mount point” | 挂载点 | 挂载点 ✓ |
| “Kernel panic” | 内核恐慌 | 内核崩溃 |
| “Graceful shutdown” | 优雅关机 | 安全关机 |
| “Bricked device” | 砖头设备 | 变砖设备 |
翻译守则:
– 术语一致性 — 使用 Ubuntu 翻译团队的术语表
– 保持占位符 — %s、%d、{name} 等必须保留
– 尊重上下文 — 同一个英文词在不同场景可能翻译不同
– 长度限制 — 译文长度不应超过原文的 1.5 倍(UI 空间限制)
3.3 Ubuntu 中文社区(Ubuntu Chinese LoCo Team)
# 加入中文社区
# 网站: https://ubuntu-china.org/
# 邮件列表: ubuntu-zh@lists.ubuntu.com
# IRC: #ubuntu-cn on irc.libera.chat
# 订阅中文邮件列表
echo "subscribe ubuntu-zh" | mail majordomo@lists.ubuntu.com
中国 Ubuntu 社区(Ubuntu Chinese LoCo Team)是官方认可的本地化团队,负责:
– Ubuntu 中文翻译审校
– 中文文档编写
– 线下活动组织(Ubuntu Release Party 等)
– 新用户帮助与引导
四、Snap 打包与发布:Snapcraft 商店
4.1 创建 Snap 包
Snap 是 Ubuntu 推广的通用 Linux 打包格式,一次打包,跨发行版运行:
# 安装 snapcraft
sudo snap install snapcraft --classic
# 初始化项目
mkdir myapp-snap
cd myapp-snap
snapcraft init
# 编辑 snapcraft.yaml
cat > snap/snapcraft.yaml << 'EOF'
name: myapp
base: core24
version: '1.0'
summary: My first snap package
description: |
This is a demonstration snap package created
during the Ubuntu community series.
grade: stable
confinement: strict
apps:
myapp:
command: bin/myapp
plugs: [network, home]
parts:
myapp:
plugin: dump
source: .
organize:
myapp.sh: bin/myapp
EOF
# 创建启动脚本
mkdir -p bin
cat > bin/myapp.sh << 'EOF'
#!/bin/bash
echo "Hello from Snap! This is my first snap package."
echo "Running on Ubuntu $(lsb_release -rs)"
EOF
chmod +x bin/myapp.sh
# 构建 snap
snapcraft
# 安装测试
sudo snap install myapp_1.0_amd64.snap --dangerous
myapp
4.2 发布到 Snap Store
# 注册 Snapcraft 账号
snapcraft login
# 注册包名(确保名称唯一)
snapcraft register myapp
# 推送发布
snapcraft upload myapp_1.0_amd64.snap --release stable
# 用户安装
sudo snap install myapp
Snap 的优势:
– 自动更新 — 用户无需手动升级
– 沙箱隔离 — 不影响系统其他部分
– 跨发行版 — 同一 snap 可在 Ubuntu、Fedora、Arch 等运行
– 回滚 — 出问题可一键回滚到上一版本
五、Ubuntu 贡献路径:从 Bug 报告到 Ubuntu Member
5.1 贡献者路线图
初学者 → 中级贡献者 → 高级贡献者
│ │ │
├─ 报告 Bug ├─ 提交补丁 ├─ 包维护者
├─ 翻译 ├─ 打包 ├─ Core Dev
├─ 文档改进 ├─ 回答社区问题 ├─ 团队负责人
├─ 测试 ├─ 组织活动 ├─ Ubuntu Member
└─ 美化壁纸 └─ 写博客教程 └─ 技术委员会
5.2 提交第一个补丁的完整流程
以下是用真实案例演示如何为 Ubuntu 贡献代码:
# 1. 找到要修复的 Bug
# 在 https://bugs.launchpad.net/ubuntu 搜索
# 2. 克隆源码
apt-get source <package>
cd <package>-<version>/
# 3. 创建补丁分支
# 使用 quilt 管理补丁(标准 Debian 方式)
quilt new fix-typo-in-manpage.patch
quilt add debian/manpage.1
# 4. 编辑文件
# 修正文档中的拼写错误...
# 5. 提交补丁
quilt refresh
# 6. 更新 changelog
dch -i "Fix typo in manpage (LP: #1234567)"
# 7. 构建测试
dpkg-buildpackage -us -uc -b
# 8. 提交补丁到 Launchpad
# 在 Bug 页面中 attach 补丁文件
# 或者使用 bzr/git 提交 merge proposal
5.3 申请 Ubuntu Member
成为 Ubuntu Member 是社区贡献的重要里程碑,意味着你获得了社区投票权:
申请条件:
– 至少 6 个月的持续贡献记录
– 在至少一个领域有显著贡献(打包、翻译、文档、社区支持等)
– 由现有 Ubuntu Member 推荐
– 参加一次 Ubuntu Member 面试会议
申请流程:
# 查看 Ubuntu Member 申请指南
curl -s https://wiki.ubuntu.com/Membership/Applications | head -100
# 准备贡献记录
# - Launchpad 的贡献统计
# - 邮件列表参与记录
# - Bug 报告和补丁清单
# - 社区活动参与证明
5.4 Ubuntu 社区会议与活动
| 活动 | 频率 | 参与方式 |
|---|---|---|
| Ubuntu Developer Summit | 每发行版一次 | 线上/线下 |
| Ubuntu Summit | 年度 | 全球会议 |
| Release Party | 每发行版一次 | 本地 LoCo 组织 |
| Bug Jam | 季度 | 线上集中修复 Bug |
| Ubuntu Community Meeting | 周 | Matrix 频道 |
# 查看即将举行的 Ubuntu 社区活动
curl -s "https://loco.ubuntu.com/events/" | grep -oP 'href="[^"]*"' | head -10
# 加入 Ubuntu 社区日历
# https://wiki.ubuntu.com/UbuntuCalendar
六、实用工具与资源汇总
6.1 贡献者工具箱
# 安装贡献者工具包
sudo apt install ubuntu-dev-tools packaging-dev -y
# 常用工具一览
pull-lp-source # 从 Launchpad 拉取源码
pull-debian-source # 从 Debian 拉取源码
dget # 下载 .dsc 文件
dch # 编辑 changelog
debuild # 在干净环境中构建
pbuilder-dist # 在 chroot 中构建(多发行版)
6.2 关键资源链接
| 资源 | 用途 | 链接 |
|---|---|---|
| Ubuntu Wiki | 社区文档中心 | wiki.ubuntu.com |
| Launchpad | 代码托管、Bug 追踪、翻译 | launchpad.net |
| Discourse | 社区讨论论坛 | discourse.ubuntu.com |
| Snapcraft | Snap 包商店 | snapcraft.io |
| Matrix Chat | 实时交流 | matrix.to/#/#ubuntu:ubuntu.com |
| Ubuntu Blog | 官方博客 | ubuntu.com/blog |
6.3 快速参与清单
如果你是第一次参与 Ubuntu 社区,按以下步骤开始:
# 第 1 步:创建 Launchpad 账号
# 第 2 步:订阅 ubuntu-zh 邮件列表
# 第 3 步:加入 Ubuntu Chinese LoCo Team
# 第 4 步:选择一个感兴趣的领域
# 查找适合新手的 Bug
curl -s "https://api.launchpad.net/1.0/ubuntu/+bugs?tags=newcomer&ws.size=5" |
python3 -m json.tool | grep -E '"title"|"web_link"'
# 第 5 步:在社区中自我介绍
# 发送邮件到 ubuntu-zh@lists.ubuntu.com
# 主题: "Hello from a new contributor"
总结与下期预告
今天我们从「使用者」的视角升维到「贡献者」——从 Ubuntu 社区治理结构到 Debian 打包实战,从 Launchpad 翻译到 Snap 商店发布,再到完整的贡献者成长路径。Ubuntu 的强大不仅在于技术本身,更在于它背后那个包容、开放、协同的全球社区。
关键收获:
1. Ubuntu 拥有清晰的治理结构 — 技术委员会、社区委员会、LoCo 团队各司其职
2. Debian 打包并不复杂 — 掌握 debian/control、debian/rules、debian/changelog 三个核心文件即可
3. 翻译贡献门槛最低 — 会中文和英文就能帮助 Ubuntu 更好地本地化
4. Snap 打包是未来趋势 — 一次打包,跨发行版运行
5. 每个人都能成为贡献者 — 从 Bug 报告到 Ubuntu Member,路径清晰
🔔 预告:第 30 天(系列完结篇)—— 30 天回顾:从入门到精通的 Ubuntu 学习路线图总结
明天我们将迎来这个 30 天系列的大结局!我们将回顾这 30 天的学习历程,整理一份完整的 Ubuntu 学习路线图,从入门到精通的技能树、推荐学习路径、认证考试信息,以及后续学习资源推荐。这不仅仅是一篇总结,更是一份为你量身定制的 Ubuntu 成长地图。 敬请期待!
系列目录
| 天数 | 主题 | 状态 |
|---|---|---|
| 第 1 天 | Ubuntu 简介与版本选择 | ✅ |
| 第 2 天 | 手把手安装 Ubuntu | ✅ |
| 第 3 天 | Ubuntu 桌面环境初探 | ✅ |
| 第 4 天 | Ubuntu 终端基础 | ✅ |
| 第 5 天 | 用户与权限管理 | ✅ |
| 第 6 天 | 软件包管理 | ✅ |
| 第 7 天 | 文件与文本操作 | ✅ |
| 第 8 天 | 系统服务管理 | ✅ |
| 第 9 天 | 磁盘与文件系统管理 | ✅ |
| 第 10 天 | 网络配置与管理 | ✅ |
| 第 11 天 | 进程管理与监控 | ✅ |
| 第 12 天 | 计划任务与自动化 | ✅ |
| 第 13 天 | 备份与恢复策略 | ✅ |
| 第 14 天 | 系统更新与升级管理 | ✅ |
| 第 15 天 | SSH 远程管理与安全加固 | ✅ |
| 第 16 天 | Web 服务器搭建 | ✅ |
| 第 17 天 | 数据库服务器部署 | ✅ |
| 第 18 天 | Docker 容器化 | ✅ |
| 第 19 天 | 文件共享服务 | ✅ |
| 第 20 天 | 监控与告警系统 | ✅ |
| 第 21 天 | 邮件服务器基础 | ✅ |
| 第 22 天 | 系统安全加固 | ✅ |
| 第 23 天 | 性能调优与内核参数 | ✅ |
| 第 24 天 | 虚拟化技术 | ✅ |
| 第 25 天 | 容器编排入门 | ✅ |
| 第 26 天 | 高可用与负载均衡 | ✅ |
| 第 27 天 | Ubuntu 自动部署 | ✅ |
| 第 28 天 | 故障排查实战 | ✅ |
| 第 29 天(重访) | Ubuntu 社区与文档——打包、翻译、社区治理 | 🟢 今日 |
| 第 30 天(重访) | 30 天回顾总结 | ⏳ |















暂无评论内容