制作netease-cloud-music-gtk的debian包
要创建一个deb包,只需要有一个基于 debian 的操作系统即可。(不管你用的是什么 Linux 发行版,你可以使用虚拟机或者 systemd-nspawn 来创建构建 DEB 包的环境)
下载上游的包,或者手动打一个上游的包。这个上游的包是源代码的仓库或者文件夹,打包的时候不要 .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 包就比较容易了。
制作netease-cloud-music-gtk的debian包的更多相关文章
- ubuntu 安装Elasticsearch5.0(Debian包)
通过Debian包安装Elasticsearch Elasticsearch的Debian包可以从downloaded from our website或APT repository 它可以用于在任何 ...
- 如何构建debian包
1)安装dh_make如下: sudo apt-get intasll aptitude sudo aptitude install dh_make 2)以jsoncpp为例,说明如何生 ...
- debian包之间的关系
1 debian包之间存在两大类关系 第一,依赖 第二,冲突 2 依赖类关系 2.1 depends 2.2 pre-depends 2.3 recommends 2.4 suggests 2.5 e ...
- debian包管理
常用的包管理工具有:apt.apt-get.apt-cache.apt-file.aptitude.dpkg等.功能有重复的,挑顺手的即可. 1.apt # apt --help list - lis ...
- debian包的补丁管理工具:quilt
最近项目是改pam软件包,给里面添加一些功能.其中遇到了更改后,代码提交方式的问题.这里转载的文章介绍了使用quilt管理补丁的详细方法: 转自:http://blog.csdn.net/fmddlm ...
- RPM包制作教程
一.RPM介绍 RPM 前是Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:现在应为RPM Package M ...
- 烂泥:Linux源码包制作RPM包之Apache
本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司服务器比较多,需要把apache源码包制作成rpm包,然后放到公司内网yum源上进行下载安装.apache的rpm包安装方式比源码安装方式比较快,这能 ...
- [转]Debian 安装与卸载包命令(APT&&DPKG)
转自:zhangjunhd 的BLOG 1.APT主要命令apt-cache search ------package 搜索包sudo apt-get install ------package 安 ...
- (转)Debian 安装与卸载包命令
1.APT主要命令apt-cache search ------package 搜索包sudo apt-get install ------package 安装包sudo apt-get remov ...
- RPM包制作方法
一.RPM介绍 RPM 前是Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:现在应为RPM Package M ...
随机推荐
- docker - [13] docker网络
smo smo smo "狂神" omz omz omz 一.理解网络 本机回环地址:127.0.0.1,本机IP地址:192.168.2.131,docker地址:172.17. ...
- Flume - [05] Hbase sink
一.概述 此接收器将数据写入Hbase.Hbase配置是从类路径中遇到的第一个Hbase-site.xml获取的.由配置指定的实现 HbaseEventSerializer 的类用于将事件转换为 ...
- Linux - [-bash: jps: command not found]
jps是jdk提供的一个查看当前java进程的小工具, 全称是 JavaVirtual Machine Process Status Tool $ jps [options] [hostid] opt ...
- Loongson Log
就看看能坚持多久吧 22/2/2及以前: 参照想象中的p7内容增添部分版CP0.部分中断/异常机制: 改sram接口:查阅文档func_test.sram相关内容:查阅vivado bram IP核相 ...
- Linux下yum安装mysql 遇到的问题Can't open and lock privilege tables: Table 'mysql.user' doesn't exist 错误
今天在linux下安装mysql时 执行service mysqld start时, mysql总是启动失败 后来查看mysql日志:/var/log/mysqld.log,发现有个Can't ope ...
- Vue3+TS项目无法识别自动导入提示
遇到问题 在写 Vue3 + TS 项目的时候,经常遇到写完一个新方法后,在组件使用的时候无法自动识别. 解决方案 Volar: Restart Vue Server 重新启动 Vue 服务
- linux centos8 mirrorlist: No URLs in mirrorlist,更新yum源
前言 由于官方已经在2021/12/31停止了对CentOS 8的支持,所以需要更新 yum 源,才能使用 更新镜像源 这里用的是阿里的 yum 镜像源 将源文件备份 cd /etc/yum.repo ...
- Django实战项目-学习任务系统-文章汇总
学习任务系统1.0版本已经基本完成了.现在按顺序整理下文章和链接,按照开发时间顺序列举,方便想要完整学习的人. 理论上说,按照文章代码可以搭建该系统的70%主体功能,剩下一些小的功能自己参考现有代码学 ...
- MFC中AfxBeginThread、AfxEndThread、GetExitCodeThread的配合使用(工作者线程)
//线程入口函数(全局) UINT MyThreadProc(LPVOID pParam) { //在需要添加返回值的地方 if (...) { AfxEndThread(0); return 0; ...
- rot-偏移,ascii,md5爆破
题目: 破解下面的密文: 83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 ...