1. Introduction to Ubuntu Development — Ubuntu Packaging Guide
先读一遍
总之ubuntu各种软件包,一部分是 code 一部分是 meta,meta包含各种信息。所以要上传到 luanch pad 服务器去build?
upstream:并非 ubuntu 写的,由其他社区出品整合到正统的东西,ubuntu最大的上游是debian
去贡献不可怕,可是我真的好害怕qwq
设置环境
$ sudo apt install gnupg pbuilder ubuntu-dev-tools apt-file
安装这一堆,然后就可以搞密钥了……我总算知道那个utility是干嘛的了
具体看那边怎么说嗯
gen 一个 gpg key $ gpg --gen-key
然后发送
1 | pub 4096R/43CDE61D 2010-12-06 |
43CDE61D 是 KEY ID
$ gpg --send-keys --keyserver keyserver.ubuntu.com <KEY ID>
然后ubuntu 的 utility 会自动帮你同步来着……不知道到底存储到哪里了hhh
之后使用 pbuilder 创建最小干净的环境
$ pbuilder-dist <release> create
pbuilder-dist focal create
这样就是创造一个20.04的环境
上传 gpg key
嘛,然后查看 gpg 的签名,一般来说用 utility 里面的 passwords and keys 就可以,也可以这样
gpg --fingerprint email@address.com
然后在OpenID transaction in progress 上传fingerprint,会给你的邮箱发出需要解密的邮件,thunderbird 安装 Enigmail plugin
The Enigmail add-on was replaced with built-in support for OpenPGP in Thunderbird 78.
哦已经内嵌 support 了,好耶
然后顺便上传 ssh,https://launchpad.net/~/+editsshkeys,跟 github 一样,上传 ~/.ssh/id_rsa.pub 的公钥
设置环境变量
1 | export DEBFULLNAME="Bob Dobbs" |
像这个样子,修改 ~/.bashrc 文件
打包软件
再等等,似乎要先创建 pbuilder 的环境,不过先打包一次试试看好了
拓展:bzr 是什么呢? canonical 的文件管理系统
下载来自上游的tar(我们将软件作者叫作上游)然后编译。
所以要复习一下 c 程序的编译嘞
1 | $ ./configure |
然后开始打包,首先使用 bzr-builddeb
我就说不会那么简单的,首先要说你是谁
brz whoami "name <email addr>" 这样
bzr dh-make hello 2.10 hello-2.10.tar.gz
执行这个然后可能会出现 brz: ERROR: Either run the command from an existing branch of upstream, or move hello aside and a new branch will be created there.
这是因为它要展开后面的tar,但是当前目录下已经有了 hello-2.10,所以把这个hello-2.10 删掉就可以了.
选择type s
然后进入 hello/debian 选择 changelog,修改成这样
1 | hello (2.10-11ubuntu20.04) focal; urgency=medium |
嗯,变括号里面的版本号,11是debian版本,然后 ubstable 变成 focal
然后改depends,更改 control 文件
Build-Depends: debhelper (>= 9), texinfo
然后记录修改,感觉和 git 差不多来着
1 | $ bzr add debian/source/format |
嗯遇到了一系列问题,首先是 textinfo unmet,那么就安装依赖
1 | #!/usr/bin/make -f |
把 override 加上去,前面是一个 tab
然后打包 bzr builddeb -- -us -uc
,之后你能在上一个目录找到它,就可以尝试安装了
sudo dpkg --install hello_2.10-0ubuntu1_amd64.deb
通过这俩检查 package 是否正常,dsc 是 metadata file
1 | $ lintian hello_2.10-0ubuntu1.dsc |
后面加上 –info 可以看具体报错,lintian-info 似乎出错了来着……看能否报告bug
然后就是把要改的template好好修改一下
bzr builddeb -- -us -uc
这个应该要在根目录,也就是 hello 下面,再 加上nc not clean,这次更快一点
糟糕,图省事在 hello 下面直接 commit,这下变成了生产环境了……完蛋,重来罢