《铜豌豆 Linux》是开源项目,所有内容全部开放源代码,欢迎参与开发。本页介绍提交源代码、参与打包和相关开发的信息。
代码仓库地址
项目开发在码云进行,项目首页:https://gitee.com/atzlinux/
| 内容 | 仓库地址 |
|---|---|
| 网站、一键安装脚本 | https://gitee.com/atzlinux/www |
| 软件包 | https://gitee.com/atzlinux/软件包名称 |
| iso 制作 | https://gitee.com/atzlinux/debian-cn(目前使用 deb11、arm 分支) |
2020-12-28,项目创建的第一个仓库在码云获赞超过 100 star,欢迎继续前往点赞加星。
开发动态
- 项目下所有仓库的动态(各软件包仓库的提交、Issue、Pull Request),看这里: https://gitee.com/organizations/atzlinux/events
- 主仓库 debian-cn 的实时动态(Star / Fork 数、最新 Issue、最近提交、分支):
开发者与权限
以上 git 仓库,对积极的开发者都可以授予读写权限。码云仓库权限分为管理员、开发者等角色,铜豌豆项目成员相应分为两个角色:
- 铜豌豆开发者:制作的软件包经过审核、符合 Debian 质量要求、上传到铜豌豆软件源后,制作者即成为「铜豌豆开发者」, 从而具备项目下所有仓库的「码云开发者」权限,可以对所有仓库提交代码修改。
- 铜豌豆包维护者:在码云新建某个软件包仓库后,该开源项目的上游负责人及软件包制作者即「铜豌豆包维护者」,具备该仓库的「码云管理员」权限。
反馈问题与需求
- 各个软件包、网站的问题与需求:请到各子仓库的 Issues 新建 Issue。
- 系统整体性的问题与需求:请到主仓库 debian-cn 反馈,欢迎大家积极定位与解决已知问题。
- 更复杂的情况,例如公益团体、校园团体、深入修改配适、商业服务合作定制等,欢迎向我们的开发者咨询。
邮件列表也欢迎加入:[2020/11/08] 铜豌豆邮件列表开通。
开发和发布的准备
请先在码云注册账号并关注你希望参与的仓库,然后安装 iso 版本的《铜豌豆 Linux》,再按下表安装开发工具。
安装各类开发工具(按 Debian 版本三选一)
通用命令:
apt-get -y install --no-install-recommends -t buster-backports git git-buildpackage \
dpkg-dev debhelper dh-make dh-runit devscripts dh-autoreconf quilt lintian lintian-brush \
dh-exec dgit dupload debmake dh-make-perl pristine-tar debconf-utils debsums \
build-essential:native dh-python libdistro-info-perl strace vim-scripts blhc reprotest \
appstream-util apt-file libncurses-dev bison flex libssl-dev pkg-kde-tools reportbug licensecheck
在 Debian 11 下:
apt-get -y install --no-install-recommends -t bullseye-backports git git-buildpackage \
dpkg-dev debhelper dh-make dh-runit devscripts dh-autoreconf quilt lintian dh-exec dgit \
dupload debmake pristine-tar debconf-utils debsums build-essential:native dh-python \
libdistro-info-perl strace vim-scripts ubuntu-dev-tools blhc reprotest appstream-util \
apt-file libncurses-dev bison flex libssl-dev pkg-kde-tools reportbug cmake licensecheck \
libgit-wrapper-perl libstring-shellquote-perl atzlinux-deb-template tools-atzlinux-dev \
libclass-inspector-perl wlc
在 Debian 12 下:
apt-get -y install --no-install-recommends -t bookworm-backports git git-buildpackage \
dpkg-dev debhelper dh-make dh-runit devscripts dh-autoreconf quilt lintian dh-exec dgit \
dupload debmake pristine-tar debconf-utils debsums build-essential:native dh-python \
libdistro-info-perl strace vim-scripts ubuntu-dev-tools blhc reprotest appstream-util \
apt-file libncurses-dev bison flex libssl-dev pkg-kde-tools reportbug cmake licensecheck \
libgit-wrapper-perl libstring-shellquote-perl atzlinux-deb-template tools-atzlinux-dev \
tools-atzlinux tools-atzlinux-dev-conf libclass-inspector-perl wlc libsoap-lite-perl routine-update
制作与集成软件包
新增加的软件包需求,可以是第三方已经制作好的 deb 包(在《铜豌豆 Linux》上经测试能稳定运行、没有其他问题), 也可以是原先没有合适 deb 包、需要自行打包制作后再集成到铜豌豆生态的。
第三方软件包的控制与集成:请到 https://gitee.com/atzlinux/debian-cn/issues/I13NQT 按模板提需求。
本地制作软件包
软件包制作推荐参考以下文档:
以上 4 个文档均可在本地安装相应软件包阅读:
apt -y install maint-guide-zh-cn debmake-doc debian-policy developers-reference
gbp 命令文档已随 git-buildpackage 软件包安装,路径为:
file:///usr/share/doc/git-buildpackage/manual-html/index.html
软件包在本地制作成功后,请用 lintian 命令检查 deb 包是否有各类问题。lintian 检查通过后, 请通知开发者进行进一步的测试验证,线下联系、邮件或者微信均可。
开发者将会在码云新建软件仓库并授予该仓库相关权限。从其它软件包仓库拷贝 debian 目录、 参照修改后,如果没有问题就会上传到 apt 软件源。
可以安装 bullseye-backports 版本的 lintian 软件包,其版本比较新,有利于发现更多打包错误。
apt -y install lintian/bullseye-backports
开源项目制作 deb 包
如果现有的中文桌面应用开源项目目前还没有 deb 包,也欢迎联系制作打包。在现有项目下增加一个 debian 目录,即可实现打包。
也可以把现有项目作为仓库上游,在铜豌豆码云仓库 Fork 一份,铜豌豆的仓库增加 debian 目录专门处理打包相关代码, 上游有新版本 merge 移植过来即可。
软件包命名规则
铜豌豆相关命名也尽量遵循 Debian 规则。一个常见的 deb 包,其文件名由软件包名、版本号、架构、类型组成,如:
v2ray_4.22.1-2020.02.07atzlinux_amd64.deb
- 软件包名:由
debian/control文件的Package:字段确定。 - 版本号:在
debian/changelog第一行的括号内确定,如gmchess (0.29.6-2.2~20200206atzlinux)。 规则请查看man deb-version,也推荐阅读台湾 DD SZ Lin(林上智)撰写的 《淺談 Debian package 版本意義以及使用時機》。
按来源分类的命名规则(第三方 / 铜豌豆制作 / 原生 / Debian 官方)
第三方软件包
从其它发行版或者第三方直接收录的 deb 软件包。尽量不修改软件包文件名,对不符合 Debian 规范的部分可以最小限度地修改,
如将文件名改成以 _amd64.deb 结尾。
建议使用 dpkg-name 命令进行规范化改名。对于文件名中含有 latest 字符串来表示版本号的,可以将最新版本使用该名称,
历史版本恢复其版本号。
该类软件包不需要在 https://gitee.com/atzlinux/projects 创建 git 仓库。
铜豌豆制作软件包
软件项目原来没有 deb 格式的软件包,或者原有 deb 包需要做修改、重新打包后才可以在铜豌豆上使用的软件包。
在原有版本号后面加上后缀,规则如下:
~日期atzlinux:英文波浪号 + 8 位年月日数字(中间不包含点或中划线)+ atzlinux 字符串。适合 Debian 官方软件包有 NMU 上传的情况。.日期atzlinux:英文句号 + 8 位年月日数字 + atzlinux 字符串。适合 Debian 官方软件包没有 NMU 上传的情况。-日期atzlinux:英文中划线 + 8 位年月日数字 + atzlinux 字符串。适合第三方软件包、铜豌豆率先制作的情况。
如果同一天有发布多个版本,可以在 atzlinux 后面加数字。
debian/source/format 文件内容为 3.0 (quilt),生成的源代码压缩包文件有两个:一个包含 orig 字样、以 orig.tar.xz 结尾,
另一个以 .debian.tar.xz 结尾。该类软件包需要在 https://gitee.com/atzlinux/projects 创建 git 仓库。
铜豌豆原生软件包
由铜豌豆项目自身新制作的软件包。
软件包名需要在最前面或者最后面有 atzlinux 字符串,和其它字符串中间用英文中划线 - 隔开;源代码包的包名可以不包含 atzlinux 字符串。
版本号从 1.0.0 开始(部分老软件是带点的日期)。因此类软件包的包名中已经有 atzlinux 字符串,所以版本号中不需要再包含。
debian/source/format 文件内容为 3.0 (native),生成的源代码压缩包文件只有一个,不含 orig 字样,
也没有以 .debian.tar.xz 结尾的压缩文件。
该类软件包需要在 https://gitee.com/organizations/atzlinux/projects 创建 git 仓库。打包制作过程中的问题可以在铜豌豆开发者群里面讨论。
Debian 官方软件包
由铜豌豆项目成员维护的 Debian 官方软件包,命名优先使用 Debian 官方规则,软件包名称或者版本号可以酌情带上 atz、atzlinux 字符串。
该类软件包不需要在 https://gitee.com/atzlinux/projects 创建 git 仓库,继续使用 Debian 的 salsa git 仓库即可。
对于铜豌豆软件源使用的 Debian 官方软件包有少量差异、需要重新打包的情况,在现有 salsa git 仓库里面创建 atzlinux/latest 分支进行维护。
源代码获取
铜豌豆自己打包的软件,其代码均按 Debian 规范公开放置,可以用 Debian 通用源代码获取工具下载。
在 /etc/apt/sources.list 添加铜豌豆软件包源代码下载源,然后运行 apt update:
deb-src https://apt.atzlinux.com/atzlinux bullseye main contrib non-free
- 下载软件包当前已发布版本源代码:
apt source pkgname - 下载软件包最新 git 代码:
debcheckout pkgname - 下载软件包最新 git 代码并设置好提交权限:
debcheckout -a pkgname
Debian 官方软件包源代码可以通过以上类似方式获取,其源代码下载源建议使用 sid 代号:
deb-src https://mirrors.bfsu.edu.cn/debian sid main contrib non-free
相关开发命令及工具
下列所提到的命令,均在 git 仓库检出的源代码目录下运行。
下面按「环境准备 → 打包命令 → 打包后检查」的顺序列出常用配置与命令,按需展开即可。
环境变量与 devscripts 配置
可以在用户目录的 .bashrc 文件里面增加 deb 包制作相关环境变量:
DEBEMAIL="username@atzlinux.com"
DEBFULLNAME="姓名"
DEB_SIGN_KEYID="gpg id"
export DEBEMAIL DEBFULLNAME DEB_SIGN_KEYID
git、gpg 签名、debian/changelog 等地方需要用到的姓名、email 地址,请尽可能保持一致。
其它推荐设置:
export EDITOR="vim" # 设置 vi 默认使用 vi 增强版 vim 打开
export GPG_TTY=$(tty) # 设置 gpg 终端,否则无法使用 git 签名提交等功能
因 devscripts 里给包签名的命令 debsign 不支持环境变量,需要在 /etc/devscripts.conf 或用户目录 ~/.devscripts 里设置:
DEBSIGN_ALWAYS_RESIGN=yes
DEBSIGN_KEYID="BB97304EFD6634C7D4D36AB62F338C7DC7909957"
devscripts 在其配置文件里面的变量设置,和在用户目录 .bashrc 里面的环境变量设置不共享。
devscripts 软件包里的工具会调用其配置文件中的变量;其它打包工具则会调用通过 .bashrc 等文件设置的变量。
git 与打包命令一览
| 命令 | 说明 |
|---|---|
apt-get build-dep source-package |
安装源代码打包所需要的依赖包 |
apt build-dep . |
进入源代码目录运行,直接安装该软件包打包所需要的依赖包 |
dpkg-source --before-build . |
应用 debian 目录下的补丁,得到用于编译的源代码 |
dpkg-source --commit |
修改源代码后,将代码改动直接制作为 debian 目录下的补丁文件 |
dpkg-buildpackage |
打包命令,在 git 仓库检出目录下运行即可 |
dh_clean |
清理打包过程中由 debhelper 系列脚本产生的文件 |
dh_auto_clean |
调用 Makefile 的 distclean、realclean、clean 清理编译过程中的文件 |
debuild -- clean / debclean |
调用 debian/rules clean 清理,并清理 debian/clean 中列出的文件 |
gbp buildpackage |
使用 git-buildpackage 制作软件包,结束后自动调用 lintian 检查 |
gbp dch |
把 git commit 日志自动记录到 debian/changelog,并生成新的版本号 |
gbp export-orig |
对第三方软件包的 git 仓库,生成当前 git 仓库的源代码包 |
origtargz |
自动尝试各种方式获取用于打包的上游源代码压缩包 |
apt download --print-uris pkgname |
获取软件包在 apt 软件源上的信息、下载 URL、大小、校验和等 |
最新版本的 deb 包制作相关文件、对上游源代码的修改等,全部放在 debian 目录下,均不直接修改上游代码文件。
这样做的好处是可以维持上游代码清晰、维持 Debian 的改动清晰,同时可以实现自动化跟踪上游版本的变化。
git add debian/filename.patch
git commit debian/
请只提交 debian 目录下的相关文件,不需要直接修改 git 仓库根目录下的源代码文件,避免打包命令报源代码改动错误。
gbp.conf 配置与打包后清理
/etc/git-buildpackage/gbp.conf 的默认设置不会在打包前清理上次编译遗留的中间文件,导致 gbp buildpackage 报错。
在该配置文件里加上如下设置,让打包命令每次自动执行清理:
cleaner = fakeroot debian/rules clean
一个软件包 git 仓库,在用 dpkg-buildpackage 制作完成 deb 包后,执行 dh_clean; dh_auto_clean 之后,
该目录应当恢复到刚 git pull 时的状态,git diff、git status 不应提示代码或文件变化。
如有未清理干净的文件和目录,可以用如下方式解决:
- 给源代码 Makefile 打补丁增加 clean 条目
- 在
debian/rules里使用override_dh_clean:,直接用 rm 命令删除 - 在
debian/clean里列出(推荐使用该方式)
lintian 详细输出
lintian 的默认配置输出不详细,可以这样获得更详细的检查结果。
在用户目录 .bashrc 里增加别名:
alias lintian="lintian -I --pedantic -E"
或者在用户目录下增加 lintian 配置文件 .lintianrc(推荐使用该方式):
display-info = yes
display-experimental = yes
pedantic = yes
在打包完成后的源代码目录下可以直接运行 lintian 检查打包情况。lintian-explain-tags 命令可以显示
lintian 报错信息标签的详细描述。
vim debPlugin 插件(查看 deb 包内容)
vim 编辑器安装 debPlugin 插件后,可以直接打开查看 deb 软件包里面的内容。
apt install vim-scripts
- Debian 10:
apt install vim-addon-manager安装插件管理软件包,vim-addons install debPlugin在当前用户下安装插件,vim-addons -w install debPlugin在整个系统安装插件。 - Debian 11:手工修改用户目录下的
.vimrc文件,添加packadd! debPlugin。
同时兼容 Debian 10 和 Debian 11 的写法:
if version >= "802"
packadd! debPlugin
endif
参考信息
- Debian 衍生版指引
- Debian 开发介绍中文 pdf 文件
- Debian 所有源代码搜索
- DEP - Debian Enhancement Proposals:其中 DEP: 14 有 git 分支命名、tag 标签命名等 git 仓库使用方面的提议
- Debian 术语表