热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入解析FCEUX源码:两种制作DEB包的方法及修改现有DEB包的技术细节

本文深入解析了FCEUX源码,并详细介绍了两种制作DEB包的方法及其技术细节。首先,DEB包通常由两部分组成:控制信息(位于DEBIAN目录)和安装内容(模拟目录)。通过解压现有的DEB包,可以查看其内部结构,进而理解其工作原理。具体操作包括将安装内容释放到指定目录中,以便进行进一步的修改和定制。此外,文章还探讨了如何修改现有的DEB包,以满足特定需求,提供了实用的步骤和技巧。

1. 原理

1) deb包通常包含两部分:控制信息(DEBIAN目录)、安装内容(模拟"/"目录)

2) 通过解开已有的deb包看其中内容

i. 释放安装内容到dirname目录中

$ dpkg-X xxx.deb dirname

ii. 释放控制信息到当前目录下的DEBIAN子目录中

$ dpkg-e xxx.deb

2. 准备

1) 安装相关工具

$ sudo apt-getinstall dh-make checkinstall

2) 下载示例软件源码包

以游戏模拟器为例(也可使用其它源码包),制作它的deb包,下载地址:

3. 方法一: 使用checkinstall方法创建deb包

checkinstall不仅可以生成deb包,还可以生成rpm包,使用简单。

$ tar xvjf fceu-0.98.12.src.tar.bz2# 解包

$ cd fceu;./configure;make# 编译

$ checkinstall-D-install=no--pkgversion=0.98--pkgname=fceuxy make install# 制作deb包

此时当前目录下生成了deb包。

4. 方法二: 使用dpkg方法创建deb包

dpkg是最基本的制作deb包的方法,推荐使用

$ tar xvjf fceu-0.98.12.src.tar.bz2# 解包

$ mv fceu fceu-0.98# 改目录名为 包名-版本号

$ cd fceu-0.98

$ dh_make-f../fceu-0.98.12.src.tar.bz2# 生成制作deb包所需的默认信息

此时当前目录下生成了debian目录,此时通常修改两个文件:

修改debian/control文件,配置你的信息,具体字段见参考资料部分

修改debian/rules脚本,它决定编译参数(也可以不改)$ dpkg-buildpackage-rfakeroot

此时可以看到,上层目录中已建立了deb包。

修改已有deb包

自己创建deb所需目录结构(控制信息和安装内容),然后打包,一般使用这种方法来修改已有的deb包,而不是新建deb包,命令如下:

$ mkdir-p test

$ dpkg-X xxx.deb test# 解包安装内容

$ cd test

$ dpkg-e../xxx.deb# 解包控制信息

修改DEBIAN目录下的内容,然后重新打包:

$ cd../

$ dpkg-b test xxx_new.deb# 重新打包

关于deb包的常用命令

1. 查看deb包含有哪些文件

$ dpkg-c xxx.deb# 安装前根据deb文件查看

$ dpkg-L debname# 安装后根据包名查看

2. 安装deb包

$ dpkg-i xxx.deb

3. 查看某个文件属于哪个deb包

$ dpkg-S filefullpath

4. 卸载deb包

$ dpkg-r debname

5. 完全卸载deb包(包含配置文件)

$ dpkg-P debname

6. 下载源码包

$ apt-getsource packagename

7. 根据软件包名模糊检索

$ dpkg-l|grep xxx#在已安装的软件包列表中搜索

$ apt-cache search xxx#在源中的所有软件包列表中搜索

参考资料

debian/control文件中信息说明Package 包名

Version 版本

Architecture 目标机架构(i386,arm,amd64等)

Maintainer 维护者

Depends 依赖软件包

Description 描述



推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • CentOS 6.5 上安装 MySQL 5.7.23 的详细步骤
    本文详细介绍如何在 CentOS 6.5 系统上成功安装 MySQL 5.7.23,包括卸载旧版本、下载安装包、配置文件修改及启动服务等关键步骤。 ... [详细]
  • 本文介绍如何从JSON格式的文件中提取数据并将其分配给Bash脚本中的变量。我们将探讨具体的命令和工具,帮助你高效地完成这一任务。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
author-avatar
讲述华哥传奇的生活_616
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有