《铜豌豆 Linux》本身是开源项目,欢迎大家参与开发。这个页面主要介绍了提交源代码、参与打包和相关开发的一些信息。
了解使用技巧和常见问题
在参与开发之前,可能你关心的事项已经解决或者正在解决。例如,你可以在使用技巧栏目和常见问题栏目了解相关的情况,或者跟铜豌豆社群联系。
基本介绍
项目开发在码云进行,项目开发首页地址为:
https://gitee.com/atzlinux/
2020-12-28,项目创建的第一个仓库在码云获赞超过 100 星,目前获星数量为:
欢迎大家继续前往
点赞加星!
本项目所有内容,全部开放源代码。
开发动态
git 仓库权限
以上 git 仓库,对积极的开发者,都可以授予读写权限。
报告 bug 反馈问题
各个软件包本身的问题、bug,网站的问题,请到各子仓库的 Issues 新建 Issue。
系统整体性的问题,请这里
反馈问题。
欢迎大家积极解决定位目前的已知问题。
我们关心你的需求
欢迎向我们反馈你的需求。各个软件包本身的需求、网站的需求,请到各
子仓库的 Issues 新建 Issue。友善、文明地描述你的需求或相关情况即可。
系统整体性的需求,请这里
反馈需求。
欢迎大家积极评估、实现用户的需求。
更复杂的情况,例如公益团体、校园团体、深入修改配适、商业服务合作定制等等,也可以
向我们的开发者咨询 。
铜豌豆邮件列表
欢迎加入铜豌豆邮件列表沟通,加入方法请查看:
开发和发布的准备
请先在码云注册账号。关注你希望参与开发的 git 仓库。
安装 iso 版本的《铜豌豆 Linux》操作系统,并安装各类开发工具:
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
提交到铜豌豆 Linux 生态的源代码
fork 您希望参与开发的 git 仓库,提交合并请求,由相应仓库维护者评估、合并。
合并后你贡献的代码就是铜豌豆 Linux 生态的源代码的一部分啦!
集成你关心的软件包
新增加的软件包需求,可以是第三方已经制作好的 deb 包,在《铜豌豆 Linux》上,经过测试,能够稳定运行,没有其他问题的;
也可以是之前没有合适的 deb 包,需要自行打包制作,再集成到铜豌豆 Linux 生态的。
第三方软件包的控制与集成
请到
https://gitee.com/atzlinux/debian-cn/issues/I13NQT
按模板提需求。
本地制作软件包
软件包制作,请参考
《Debian 新维护者手册》、
《Debian 维护者指南》、
《Debian Policy Manual》、
《Debian Developer's Reference》。
以上 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 软件源。
注:lintian 命令通过如下命令安装
apt -y install lintian/buster-backports
可以安装 buster-backports 版本的 lintian 软件包,其版本比较新,有利于发现更多打包错误。
开源项目制作 deb 包
如果现有的中文桌面应用的开源项目,目前还没有 deb 包,也欢迎联系制作打包。
在现有项目下增加一个 debian 目录,即可实现打包。
也可以把现有项目作为仓库上游,在铜豌豆码云仓库 Fork 一份,铜豌豆的仓库增加 debian 目录,专门处理打包相关代码,上游有新版本 merge 移植过来即可。
相关开发命令及工具
注:下列所提到的
命令,均在 git 仓库检出的源代码目录下运行。
- 环境变量
可以在用户目录的 .bashrc 文件里面进行如下设置:
DEBEMAIL="[email protected]"
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 文件里面,设置 deb 包制作相关配置:
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 目录下的补丁。
在软件包源代码仓库检出后,编译、修改代码开发前,运行这个脚本,就可以在当前目录得到最新的,用于编译制作 debian 包的源代码。
× 注意:最新版本的 deb 包制作相关文件、对上游源代码的修改等,全部放在 debian 目录下,均不直接修改上游代码文件。
这样做的好处就是,可以维持上游代码清晰;维持 Debian 的改动清晰,同时可以实现自动化跟踪上游版本的变化。
dpkg-source --commit
修改源代码后,可以用此命令将代码改动直接制作为 debian 目录下的补丁文件。
补丁提交
使用
git add debian/filename.patch
git commit debian/
将补丁文件提交到 git 仓库,完成此次修改。
× 注意:请只提交 debian 目录下的相关文件,不需要直接修改 git 仓库根目录下的源代码文件,避免打包命令报源代码改动错误。
dpkg-buildpackage
打包命令,在 git 仓库检出目录下运行即可。
dh_clean
清理打包过程中,由 debhelper 系列脚本产生的文件。
dh_auto_clean
调用 Makefile 的 distclean, realclean, clean 清理编译过程中的文件。
debuild -- clean 或 debclean
调用 debian/rules clean 清理编译过程中的文件,同时还会清理 debian/clean 文件里面列出的文件和目录,通常会清理得更加干净。
/etc/git-buildpackage/gbp.conf
该文件是 git-buildpackage 的配置文件,其默认设置,不会在打包前清理上次编译遗留的中间文件,导致使用
gbp buildpackage 命令编译时报错。需在该配置文件里面加上如下设置,就可以让“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
检查 deb 包,是否符合 Debian 打包规范。
lintian 的默认配置,检查结果输出不详细,
可以用如下方式,输出更加详细的检查结果:
- 可以在用户目录的 .bashrc 文件里面,增加别名:
alias lintian="lintian -I --pedantic -E"
在用户目录下,增加 lintian 配置文件 .lintianrc
display-info = yes
display-experimental = yes
pedantic = yes
推荐使用该方式
在打包完成后的源代码目录下,可以直接运行 lintian 命令,来检查打包情况。
lintian-info -t
显示 lintian 检查的报错信息标签的详细描述。如:lintian-info -t executable-not-elf-or-script
注:从 v2.94.0 开始的新版本 lintian 软件包,实现该功能的的命令为:
lintian-explain-tags executable-not-elf-or-script
gbp buildpackage
使用 git-buildpackage 软件包里的 gbp 命令制作软件包。该软件包适合使用 git 仓库的项目进行打包。
该命令在制作包结束后,会自动调用 lintian 命令检查生成的软件包及相关文件。
gbp dch
把 git commit 日志自动记录到 debian/changelog 里面,并生成新的版本号。
gbp dch -s commit ,从指定 commit 开始记录修改日志。
gbp export-orig
对于第三方软件包的 git 仓库,生成当前 git 仓库的源代码包。
origtargz
该命令可以自动尝试各种方式获取用于打包的上游源代码压缩包文件。
git 仓库里面有 pristine-tar 分支的情况,可以在检出该分支后,再回到主分支,使用 origtargz 命令获取源代码压缩包。
apt download --print-uris pkgname
获取软件包在 apt 软件源上的信息,直接下载的 URL,大小,校验和等。
vim debPlugin 插件
vim 编辑器在安装一个叫 debPlugin 的插件后,可以直接打开查看 deb 软件包里面的内容。
apt install vim-scripts
接下来,在 Debian 10 和 Debian 11 下,vim 使用此插件的配置方法不同。
- Debian 10
apt install vim-addon-manager 安装 vim 插件管理软件包
vim-addons install debPlugin 在当前用户下安装 debPlugin 插件
vim-addons -w install debPlugin 在整个系统安装 debPlugin 插件
- Debian 11
手工修改用户目录下的 .vimrc 文件,添加如下一行:
packadd! debPlugin
- .vimrc 配置文件同时兼容 Debian 10 和 Debian 11
对于同一个用户目录在 Debian 10 和 11 操作系统同时使用的情况,可以按如下方式修改用户目录下的 .vimrc 文件,实现兼容。
if version >= "802"
packadd! debPlugin
en
软件包命名的主要规则
铜豌豆相关命名,也尽量遵循 Debian 的规则。一个常见的 deb 包,其文件名,由软件包名、版本号、架构、类型组成。
如:
v2ray_4.22.1-2020.02.07atzlinux_amd64.deb
分别说明如下:
软件包名
由 debian/control 文件的 Package: 字段确定。
版本号
Debian 官方软件包版本号的规则,请查看:man deb-version。
推荐阅读台湾 DD
SZ Lin (林上智) 个人主页
撰写文章:
淺談 Debian package 版本意義以及使用時機
软件包的版本号,在 debian/changelog 第一行的括号内确定。如:
gmchess (0.29.6-2.2~20200206atzlinux)
铜豌豆软件包名、版本号
按软件包来源,分类说明如下:
- 第三方软件包
- 从其它发行版或者第三方,直接收录的 deb 软件包
- 尽量不修改软件包文件名
对软件包文件名,不符合 Debian 规范的部分,可以最小限度的修改。如,将软件包文件名改成以 “_amd64.deb”结尾。
对于软件包文件名中,含有 lastest 字符串来表示版本号的,可以将该软件包最新版本使用该名称,历史版本恢复其版本号。
- 该类软件包,不需要在 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),生成的源代码压缩包文件,有两个。
一个包含 “orgi”字样,以“orig.tar.xz”结尾;
另外一个以 “.debian.tar.xz” 文件名结尾。
此类软件包,其版本号字符串最后一个中划线前面的部分,为上游软件包版本号。
上游版本源代码压缩包文件名,也包含此版本号,如:gmchess_0.29.6.orig.tar.bz2
- 该类软件包,需要在 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 的 git 仓库 salsa 即可。
对于铜豌豆软件源使用的 Debian 官方软件包有少量差异,需要重新打包的情况,在现有 salsa git 仓库里面,创建 atzlinux/latest 分支进行维护。
git 仓库权限
码云 git 仓库权限,分为 管理员、开发者 等多种权限角色。“开发者”具备有本仓库的读写权限,“管理员”有仓库管理权限,可以决定哪些人做为本 git 仓库的开发者。
铜豌豆项目,成员也分为开发者和包管理员两个角色。
- 铜豌豆 开发者
制作的软件包,经过审核,符合 Debian 质量要求,上传到铜豌豆软件源后,该软件包的制作者就成为“铜豌豆开发者”。
成为铜豌豆开发者后,就具备了铜豌豆项目码云所有仓库的“码云开发者”权限,可以对所有项目的 git 仓库,进行代码修改提交。
当前 铜豌豆 开发者 成员信息 #member
- 铜豌豆 包维护者
在码云新建一个软件包的仓库后,该软件包开源项目的上游负责人及软件包的制作者,是该软件包的“铜豌豆 包维护者”,具备“码云管理员”权限。
源代码获取 #deb-src
铜豌豆自己打包的软件,其代码均按 Debian 规范公开放置,可以用 Debian 通用源代码获取工具下载。
在 /etc/apt/sources.list 添加铜豌豆软件包源代码下载源:
deb-src https://apt.atzlinux.com/atzlinux buster main contrib non-free
然后运行 apt update 更新源代码索引。
- 下载软件包当前已发布版本源代码
apt source pkgname
- 下载软件包最新 git 代码
debcheckout pkgname
Debian 官方软件包源代码可以通过以上类似方式获取,其源代码下载源建议使用 sid 代号:
deb-src https://mirrors.bfsu.edu.cn/debian sid main contrib non-free
参考信息
《铜豌豆 Linux》官网二维码
版权所有 © 《铜豌豆 Linux》 项目网站版权协议为(CC BY-NC-ND 4.0)