热门标签 | 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 描述



推荐阅读
  • 本文探讨了将PEBuilder转换为DIBooter.sh的方法,重点介绍了如何将DI工具集成到启动层,实现离线镜像引导安装。通过使用DD命令替代传统的grub-install工具,实现了GRUB的离线安装。此外,还详细解析了bootice工具的工作原理及其在该过程中的应用,确保系统在无网络环境下也能顺利引导和安装。 ... [详细]
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
  • 对于以压缩包形式发布的软件,其目录中通常包含一个配置脚本 `configure`。该脚本的主要功能是确定编译所需的各项参数,如头文件的位置和链接库的路径,并生成相应的 `Makefile` 以供编译使用。通过运行此脚本,开发者可以确保软件在不同环境下的正确编译与安装。此外,该脚本还能够检测系统依赖项,进一步提高编译过程的可靠性和兼容性。 ... [详细]
  • 本文深入探讨了使用Puppet进行软件包分发与管理的方法。首先介绍了fpm这一跨平台的软件包制作工具,其简便的操作流程使得软件包的创建变得轻松快捷。fpm的项目地址为:https://github.com/jordansissel/fpm。通过结合Puppet和fpm,可以实现高效、可靠的软件包管理和部署。 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 掌握DSP必备的56个核心问题,我已经将其收藏以备不时之需! ... [详细]
  • 在上篇文章的基础上,本文将继续探讨 Linux 设备驱动中的设备模型与 `devicedriverbus` 机制。在将设备注册到总线之前,需要先创建 `device` 对象。可以通过静态定义 `device` 结构体变量,并调用 `device_register` 函数来完成这一过程。此外,文章还将详细解析设备模型的内部工作机制,以及 `devicedriverbus` 机制如何实现设备与驱动的自动匹配和管理。 ... [详细]
  • 在CentOS上部署并使用FFmpeg多媒体处理工具
    最近在进行音频处理时需要用到FFmpeg,本文将详细介绍如何在CentOS系统上部署并使用这一强大的多媒体处理工具。首先,从官方网站下载FFmpeg的最新版本,然后通过Xftp工具将下载的压缩包(如ffmpeg-4.3.1.tar.xz)传输到服务器上。接下来,解压文件并按照官方文档进行编译安装。安装完成后,可以通过命令行工具验证FFmpeg是否成功安装,并开始进行多媒体文件的转换和处理。此外,文章还将介绍一些常用的FFmpeg命令和参数,帮助用户快速上手。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 在Linux环境下进行C++代码调试是开发过程中不可或缺的一环。本文将详细介绍如何利用GDB等调试工具,结合实际案例,帮助初学者掌握高效的调试技巧,提升编程能力。内容涵盖环境配置、断点设置、变量查看及内存分析等方面,旨在为读者提供全面的调试指南。 ... [详细]
  • 在Ubuntu 20.04 Linux系统中部署Git的详细步骤与最佳实践
    在Ubuntu 20.04 Linux系统中部署Git时,首先确保您的操作系统版本正确,并已以具备sudo权限的用户身份登录。推荐使用APT软件包管理器进行安装,这是最简便且可靠的方法。此外,遵循最佳实践,如定期更新Git版本和配置全局设置,可以进一步提升使用体验和安全性。 ... [详细]
  • GDB 使用心得与技巧总结
    在使用 GDB 进行调试时,可以采用以下技巧提升效率:1. 通过设置 `set print pretty on` 来美化打印输出,使数据结构更加易读;2. 掌握常见数据结构的打印方法,如链表、树等;3. 利用 `info locals` 命令查看当前作用域内的所有局部变量;4. 在需要进行类型强制转换时,正确使用语法,例如 `p (Test::A *) pObj`。这些技巧能够显著提高调试的便捷性和准确性。 ... [详细]
  • 本书详细介绍了在最新Linux 4.0内核环境下进行Java与Linux设备驱动开发的全面指南。内容涵盖设备驱动的基本概念、开发环境的搭建、操作系统对设备驱动的影响以及具体开发步骤和技巧。通过丰富的实例和深入的技术解析,帮助读者掌握设备驱动开发的核心技术和最佳实践。 ... [详细]
  • 优化后的标题:利用YUM高效安装与管理MySQL数据库环境 ... [详细]
  • 技术日志:在Ubuntu 20.04上部署与移除MySQL 8的详细步骤
    技术日志:在Ubuntu 20.04上部署与移除MySQL 8的详细步骤 ... [详细]
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社区 版权所有