铜豌豆 Linux -- 参与开发
首页
一键安装脚本
软件包列表
使用技巧
其它版本 ISO
常见问题
反馈问题 bug
参与开发
源代码
捐赠
《铜豌豆 Linux》本身是开源项目,欢迎大家参与开发。
基本介绍
项目开发在码云进行,项目开发首页地址为:
https://gitee.com/atzlinux/
本项目所有内容,全部开放源代码:
本项目所有源代码地址
git 仓库介绍
以上 git 仓库,对积极的开发者,都可以授予读写权限。
报告 bug 反馈问题
各个软件包本身的问题、bug,网站的问题,请到各子仓库的 Issues 新建 Issue。
系统整体性的问题,请这里
反馈问题。
欢迎大家积极解决定位目前的已知问题。
反馈需求
各个软件包本身的需求、网站的需求,请到各子仓库的 Issues 新建 Issue。
系统整体性的需求,请这里
反馈需求。
欢迎大家积极评估、实现用户的需求。
开发准备
请先在码云注册账号。关注你希望参与开发的 git 仓库。
安装 iso 版本的《铜豌豆 Linux》操作系统,并安装各类开发工具:
apt -y install git git-buildpackage dpkg-dev debhelper dh-make devscripts dh-autoreconf quilt lintian/buster-backports
代码提交
fork 您希望参与开发的 git 仓库,提交合并请求,由相应仓库维护者评估,合并代码。
新增软件包
铜豌豆对新增软件包持开放态度,各类自由软件和商业软件均欢迎。
软件包需要满足的基本要求如下:
- 不影响操作系统运行
- 不影响其它软件运行
- 中文界面友好
- 不触犯中国现行法律
- 非软件破解版本
- 安装、卸载干净
- 软件包名不和 Debian 官方软件包、现有软件包名冲突
- 软件包格式可以通过 apt 安装
apt -y install lintian/buster-backports
安装 buster-backports 版本的 lintian 软件包,其版本比较新,有利于发现更多打包错误。
开源项目制作 deb 包
如果现有的中文桌面应用的开源项目,目前还没有 deb 包,也欢迎联系制作打包。
在现有项目下增加一个 debian 目录,即可实现打包。
也可以把现有项目作为仓库上游,在铜豌豆码云仓库 Fork 一份,铜豌豆的仓库增加 debian 目录,专门处理打包相关代码,上游有新版本 merge 移植过来即可。
开发命令及工具
下列所提到的命令,均在 git 仓库检出的目录下运行。
- 环境变量
可以在用户目录的 .bashrc 文件里面,增加 deb 包制作相关环境变量:
DEBEMAIL="useranme@atzlinux.com"
DEBFULLNAME="姓名"
DEB_SIGN_KEYID="gpg id"
export DEBEMAIL DEBFULLNAME DEB_SIGN_KEYID
git、gpg 签名、debian/changelog 等地方需要用到的 email 地址,请尽可能保持一致。
开发脚本包配置
因开发脚本软件包 devscripts 里给包签名的命令 debsign 不支持环境变量,需要在
/etc/devscripts.conf 或用户目录~/.devscripts 文件里面,设置 deb 包制作相关配置:
DEBSIGN_ALWAYS_RESIGN=yes
DEBSIGN_KEYID="BB97304EFD6634C7D4D36AB62F338C7DC7909957"
× 注意:以上两套设置不共享!
git
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 清理编译过程中的文件。
/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 命令删除。
lintian
检查 deb 包,是否符合 Debian 打包规范。
lintian-info -t
显示 lintian 检查报错信息的详细描述。如:lintian-info -t executable-not-elf-or-script
gbp buildpackage
使用 git-buildpackage 软件包里的 gbp 命令制作软件包。该软件包适合使用 git 仓库的项目进行打包。
该命令在制作包结束后,会自动调用 lintian 命令检查生成的软件包及相关文件。
gbp dch
把 git commit 日志自动记录到 debian/changelog 里面,并生成新的版本号。
gbp export-orig
对于第三方软件包的 git 仓库,生成当前 git 仓库的源代码包。
软件包命名规则
一个规范的 deb 包,其文件名,由软件包名、版本号、架构、类型组成。
如:v2ray_4.22.1-2020.02.07atzlinux_amd64.deb 。
铜豌豆相关命名,也尽量遵循 Debian 的规则,分别说明如下:
软件包名
由 debian/control 文件的 Package: 字段确定。
版本号
Debian 官方软件包版本号的规则,请查看:
man deb-version。
软件包的版本号,在 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/atzlinux/projects 创建 git 仓库。
在打包制作过程中的问题,可以在铜豌豆开发者群里面讨论。
git 仓库权限
码云 git 仓库权限,分为 管理员、开发者 等多种权限角色。“开发者”具备有本仓库的读写权限,“管理员”有仓库管理权限,可以决定哪些人做为本 git 仓库的开发者。
铜豌豆项目,成员也分为开发者和包管理员两个角色。
- 铜豌豆开发者
制作的软件包,经过审核,符合 Debian 质量要求,上传到铜豌豆软件源后,该软件包的制作者就成为“铜豌豆开发者”。
成为铜豌豆开发者后,就具备了铜豌豆项目码云所有仓库的“码云开发者”权限,可以对所有项目的 git 仓库,进行代码修改提交。
- 铜豌豆包管理员
在码云新建一个软件包的仓库后,该软件包开源项目的上游负责人及软件包的制作者,是该软件包的“铜豌豆包管理员”,具备“码云管理员”权限。
首页
一键安装脚本
软件包列表
使用技巧
其它版本 ISO
常见问题
反馈问题 bug
参与开发
源代码
捐赠