制作netease-cloud-music-gtk的debian包
要创建一个deb包,只需要有一个基于 debian 的操作系统即可。
下载上游的包,或者手动打一个上游的包。这个上游的包是源代码的仓库或者文件夹,打包的时候不要 .git 目录,也不要 rust 插件自动生成的 target/ 目录
要使用debain 安装的 rustc,因为 debuild 会移除一些环境变量。https://unix.stackexchange.com/questions/630447/debuild-cant-find-rustc 因此必须使用通过 apt 安装的 rustc.
源代码文件的压缩包文件的名字应该是这样的:netease-cloud-music-gtk-2.3.1.tar.gz
。也就是 <package>-<version>.tar.gz
的形式。解压出来的文件夹应该也保持这样的形式,也就是文件夹名字应该是 netease-cloud-music-gtk-2.3.1
。
假设从 https://github.com/wngtk/netease-cloud-music-gtk/releases 下载上游包(.tar.gz结尾的文件)。
mv v2.3.1.tar.gz netease-cloud-music-gtk-2.3.1.tar.gz
tar xvf netease-cloud-music-gtk-2.3.1.tar.gz
cd netease-cloud-music-gtk-2.3.1
修改好名字并解压,进入源代码的目录,生成 debian 目录的模板。
debmake
因为项目是使用 meson 构建而且 dh 是可以直接支持的,要生成 deb 包直接 debuild
就可以。但是直接 debuild
会失败,因为 screenshot 标签中的一个小问题,因此我们还需要打个补丁。参照 https://www.debian.org/doc/manuals/debmake-doc/ch04.en.html#diff-u 制作一个这样的补丁,名为 000-screenshots-image.patch
。
From: Wang Tiaoke <wngtk@outlook.com>
Description: Add <image> tag in <screenshots>
diff -Nru netease-cloud-music-gtk-2.3.1.orig/data/com.gitee.gmg137.NeteaseCloudMusicGtk4.metainfo.xml.in netease-cloud-music-gtk-2.3.1/data/com.gitee.gmg137.NeteaseCloudMusicGtk4.metainfo.xml.in
--- netease-cloud-music-gtk-2.3.1.orig/data/com.gitee.gmg137.NeteaseCloudMusicGtk4.metainfo.xml.in 2024-04-09 02:13:37.000000000 +0800
+++ netease-cloud-music-gtk-2.3.1/data/com.gitee.gmg137.NeteaseCloudMusicGtk4.metainfo.xml.in 2024-04-11 13:04:12.699998049 +0800
@@ -19,7 +19,9 @@
<p xml:lang="zh_TW">使用網易雲音樂 API 的 Gtk4 音樂播放器</p>
</description>
<screenshots>
- <screenshot type="default">https://gitee.com/gmg137/netease-cloud-music-gtk/raw/master/screenshots/discover.png</screenshot>
+ <screenshot type="default">
+ <image>https://gitee.com/gmg137/netease-cloud-music-gtk/raw/master/screenshots/discover.png</image>
+ </screenshot>
</screenshots>
<content_rating type="oars-1.1" />
</component>
然后我们需要将补丁文件放到对应的位置。
echo '000-screenshots-image.patch' > debian/patch/seris
cp 000-screenshots-image.patch debian/patch
准备好补丁后执行:
debuild
就会在上一级生成netease-cloud-music-gtk_2.3.1-1_amd64.deb
。
因为项目使用了 meson, dh 可以自动完成一些任务,要对这样的一个 meson 项目创建一个 deb 包就比较容易了。