在Debian中打造属于自己的deb包

Python项目打包成deb安装包:从PyInstaller到dpkg的完整流程(UOS/Ubuntu/Debian适用) 本文详细介绍了将Python项目打包成deb安装包的完整流程,特别适用于UOS、Ubuntu和Debian系统。内容涵盖从使用PyInstaller生成可执行文件,到构建符合UOS应用商店规范的deb包结构,再到最终的测试与安装,旨在帮助开发者实现Python应用的产品化分发。 阅读详情

在Debian中打造属于自己的deb包

作者:normalnotebook 

问题:如果你要在Debian系统中发布一款软件或者一个包,该如何做呢?如果你的项目中有各种二进制包,该如何维护呢?如果你自己做了一款小小的实用软件,该如何与朋友分享呢?……. 

案例:假如我从网上下载了eclipse-SDK-3.1-linux-gtk.tar.gz压缩文件,我想把他安装到/opt/eclipse目录下,且菜单Apps-->Programming中有Eclipse菜单项。并且在命令终端中输入eclipse中可以运行Eclipse程序,而且还要象其他的软件包一样,可以方便的进行安装(install )和卸载(remove)。 

如果你还不知道如何做,请跟我来,我将告诉你解决方案。 

熟悉Debian(Linux的发行版之一)的用户,应该对他的包管理机制记忆犹新。便捷的包管理机制是Debian易用的一个主要特性。Debian包管理机制可分为两个层面:对软件包文件操作以及对包中文件的操作。apt和dselect完成前者,dpkg完成后者。 

接下来,我们将借助Debian的包管理机制,打造属于自己的deb包。 

首先,介绍其目录结构(为了便于理解,借用Windows下的截图)

eclipse

|----DEBIAN

       |-------control

       |-------md5sums

       |-------postinst

       |-------postrm

|----usr

      |-----bin

               |------eclipse

      |-----lib

               |-------menus

                           |-----eclipse

图一  目录结构 

其中,eclipse文件夹表示待发布的软件,也是我们的工作目录。 DEBIAN文件夹下包含control和md5sums等文本文件。opt目录表示待发布的包将要安装(放置)的地方。usr/bin/目录提供了运行该程序命令的脚本。usr/lib/menu目录提供了将Eclipse加入菜单的脚本。

DEBIAN必须大写,且必须为该名。根据不同的情况,该目录将包含不同的文件,其中control和md5sums文件是最小(基本)要求。如果待发布包在安装和卸载,需要运行某些命令或脚本进行初始化和配置时,则会包含下列文件:

preinst

在Debian包文件解包之前,将会运行该脚本。许多“preinst”脚本的任务是停止作用于待升级软件包的服务,直到软件包安装或升级完成。

postinst

该脚本的主要任务是完成安装包时的配置工作。通常,“postinst”脚本等待用户输入,或提醒用户,如果他接受当前默认值,要记得软件包安装完后返回重新配置。许多“postinst”脚本负责执行有关命令为新安装或升级的软件重启服务。

prerm

该脚本负责停止与软件包相关联的daemon服务。它在删除软件包关联文件之前执行。

postrm

该脚本负责修改软件包链接或文件关联,或删除由它创建的文件 

因为本案例需要将Eclipse加入到菜单中,所以应该包含postinst and postrm这两个文件。

control文件内容如下:

Package: eclipse

Version: 3.1

Section: utils

Priority: optional

Architecture: i386

Depends: libc6 (>= 2.3.2.ds1-4),jdk 

Installed-Size: 14062

Maintainer: xxxxxx<xxx@xxxxxx.xxx>

Description:Develop tools  

md5sums是基于md5sum命令生成的文件。

因为在安装本包时,只需要更新菜单项,所以postinst脚本只需要包含update-menus命令,卸载时也是同样的操作。其postinst脚本内容为:

程序清单一

#!/bin/sh

# filename :postinst/postrm

        if   test -x /usr/bin/update-menus; then

            update-menus

        fi  

postrm脚本内容跟postinst内容相同。如果你还要做其他的操作,则可以在这两个文件中加入其他内容。 

/opt/eclipse/目录就是待发布(安装)的软件目录。对于本例只需要在/opt目录下执行该操作:$ tar  xzvf  eclipse-SDK-3.1-linux-gtk.tar.gz. 

要在命令终端中输入eclipse,也能运行Eclipse。通常有三种解决方案:

1)      把/opt/eclipse/加入到PATH变量中。

2)      在/usr/bin目录建立一个指向/opt/eclipse/eclipse的链接

3)      在/usr/bin目录下新建一个脚本,在脚本中运行该程序 

综合考虑,第一种方案不可行。第二种方案比较好,但失败了。因为eclipse在运行时,需要starup.jar文件,并且是相对路径下的starup.jar文件,当你在其他任何路径下运行eclipse时,都将会失败。只有采用第三种方案,建立一个脚本。只需要在该脚本中写入:exec /opt/eclipse/eclipse。

程序清单二:

#!/bin/sh

# filename :eclipse

exec  /opt/eclipse/eclipse    

接下来,解决最后一个问题,如何把eclipse加入到Apps-->Programming的菜单中去?基本上每一个Debian系统的应用程序都会有一个菜单配置文件,用以定义该程序的菜单项名称、位置和命令行选项等参数。该配置文件一般位于/usr/lib/menus、/etc/menu或~/.menu目录下。

我们新建一个文件eclipse ,程序安装后,将置于/usr/lib/menu/路径下

该eclipse配置文件格式示例如下:

?package(eclipse): /    #定义软件包名

       needs="X11" /                   #定义该菜单项需在X11环境中使用

       section="Apps/Programming"/       #定义菜单项的路径位置

       title="Eclipse" /                   #定义菜单项的标题

       command="/usr/bin/eclipse" /       #定义命令和选项

       hints="Eclipse"  /                #定义一些提示信息

       icon="/opt/eclipse/icon.xpm"      #定义菜单项的图标 

目录结构框架介绍完毕后,就开始打地基,准备文件吧,需要准备的文件有:

1)  control(必须要)

2)  eclipse.sh(用于终端,因为与菜单的eclispe重名,所有加了.sh后缀)

3)  eclipse.menu (用于菜单)

4)  eclipse-SDK-3.1-linux-gtk.tar.gz (下载的eclipse包)

5)  postinst  (用于安装和卸载时调用的脚本) 

将上述所有文件放置一目录中,并在该目录下新建mkeclipse脚本,主要用于完成上面的工作,其内容如下:

#!/bin/sh

ROOT=$PWD

ECLIPSE=$ROOT/eclipse-SDK-3.1-linux-gtk.tar.gz

CONTROL=$ROOT/control

POST=$ROOT/postinst

BINECP=$ROOT/eclipse.sh

MENUS=$ROOT/eclipse.menu

if [ -w "$ROOT" ];then

   mkdir eclipse

   cd eclipse

   mkdir DEBIAN opt usr usr/bin usr/lib usr/lib/menu

   cd opt

   if [ -e "$ECLIPSE" ];then

       tar xzvf $ECLIPSE

   fi

   cd ..

   if [ -e "$CONTROL" ];then

      cp $CONTROL DEBIAN/

   fi

   if [ -e "$POST" ];then

      cp $POST DEBIAN/postrm

   fi

   if [ -e "$BINECP" ];then

      cp $BINECP usr/bin/eclipse

   fi

   if [ -e "$MENUS" ];then

      cp $MENUS usr/lib/menu/eclipse

   fi

   rm -f  DEBIAN/md5sums

   find opt usr  -type f -exec md5sum {} /;>>DEBIAN/md5sums

fi

      现在已经万事俱备,只欠东风。那现在就草船借东风――借Debian的dpkg包这股东风,来成就我们的事业吧。

制作deb包,在当前ROOT目录运行如下命令:$dpkg -b eclipse eclipse_3.1_i386.deb

也可以在mkeclipse脚本的最后一个fi前加入

       cd $ROOT

       dpkg -b eclipse eclipse_3.1_i386.deb

来完成该功能。 

好,现在就开始我们的心动之旅吧。 

首先安装deb包:dpkg -i eclipse_3.1_i386.deb  下面打印的消息是不是非常熟悉。

进入图形界面,发现Apps-->Programming中已经有了Eclipse菜单项,请鼓足勇气单击一下吧,Eclipse IDE已经跃然出现在你的桌面上(当然你的jdk环境已经配置好了)。

接下来,试着卸载一下:apt-get remove eclipse。Eclipse已经从菜单中消失了,/opt/eclipse目录也已经不复存在。 

现在觉得是不是很方便?当你看完本文的时候,你是否对文章开始提出的问题已经豁然开朗。其实这样做的目的就是简化劳动,同一个项目组的人在做重复的工作,比如安装eclipse,要在/usr/bin下建立文件,又要在/usr/lib/menu中建立文件,还要拷贝一些eclipse文件,不知道在拷贝的过程中是否会遗漏一些文件等等。或者你的系统出于某种原因要重装,以前的工作又的重新来一遍,很费时。如果你做成了一个deb包,以上的问题和疑虑就迎刃而解。

欢迎讨论:normalnotebook@126.com 

参考文献:

1.       Debian manual refrence

2.       http://www.nl.debian.org/doc/packaging-manuals/menu.html/index.html

 

 

为Debian和Ubuntu打造的The Lounge在线聊天软件包 The Lounge是一个开源的网页版IRC客户端,允许用户在现代浏览器中连接和使用Internet Relay Chat (IRC)服务。作为一种社区驱动的工具,它为用户提供了一个方便的界面,用于加入和管理IRC频道。此外,它支持多用户同时使用,拥有易用性和可定制性等特点。Debian和Ubuntu都是基于Linux内核的开源操作系统。Debian项目开始于1993年,由Ian Murdock发起,是最早的Linux发行版之一。 阅读详情

相关推荐

从零开始学版图(二)-----------差分放大电路

从零开始学版图

m0_56112720的博客 8563

conda 安装本地包_本地安装DEB包的3种命令行工具(适合Debian体系)

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言在本教程中,我们将学习如何使用三种不同的命令行工具(dpkg、apt和gdebi)在Debian及其衍生产品(如Ubuntu和Linux Mint)中安装本地软件包(. deb)。这对那些从Windows迁移到Ubuntu或Linux Mint的新用户很有用。他们面临的最基本的问...

weixin_39695323的博客 3491

ffmpeg在windows的安装、合并、切片、.m4s、.m3u8处理

自己处理视频,我用的工具是 ffmpeg,因为涉及到.m3u8格式和.m4s格式的一些操作。ffmpeg的介绍我就不多说了,这里是它的官网地址: https://ffmpeg.org/ ,这里是文档: https://ffmpeg.org/documentation.html (看的头大,没咋看下去)...

一只爱吃糖的小羊 2689

Debian deb文件打包及例程

deb包是Debian,Ubuntu等Linux发行版的软件安装包,扩展名为.deb.。它类似于tar,把一堆的散装文件打包成一个整体,不同的是,deb需要有DEBIAN文件夹,里面包含了一些版本文件、安装前后所需要执行的一些脚本文件和版权等信息。需要注意的是打包deb并不负责编译

badbayyj的博客 2831

PAT|中国大学MOOC-浙江大学翁恺-C语言程序设计习题集(更新中)

##2-0. 整数四则运算 时间限制:400 ms 内存限制:65536 kB 代码长度限制:8000 B 判题程序:Standard 作者:乔林(清华大学) 本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 输入样例: 3 ...

小鱼波波波 6万+

药物相关 PK(药代动力) 、PD(药效)指标知识

PK代表药物的药代动力学,指的是药物在体内的吸收、分布、代谢和排泄等过程,包括药物的药代动力学参数如Cmax(最大血药浓度)、Tmax(最大血药浓度出现的时间)、t1/2(半衰期)、AUC(药物曲线下面积)等。PD代表药物的药效学,指的是药物与生物体相互作用所产生的药理效应,包括药物的药效学参数如EC50(半数最大有效浓度)、ED50(半数最大效应剂量)、Emax(最大效应)等。PD(Pharmacodynamics)则研究药物的药效学特性,如药物的作用机制、效力、最大疗效、最小毒性等。

weixin_42357472的博客 2万+

apt-get 与 dpkg

apt-get 是从软件仓库中获取软件的一条命令。apt-get 之于 Ubuntu 操作系统,pip 之于 Python,加载第三方的软件(包)方式(在线下载安装托管在某一仓库中的文件)都是一致的。 1. apt-get 彻底删除 sudo apt-get remove --purge ** 获取包的源码 sudo apt-get source -f:–fix-broken 更新源列表: s...

木木 3140

Response Instance 详解:在 ABAP OData Client Proxy 中读懂每一次响应

ABAP OData Client Proxy中的Response Instance是关键信息载体,封装了业务数据及调用上下文(如分页、delta link等)。响应实例在执行请求后自动生成,根据请求类型返回特定接口(如READ返回/IWBEP/IF_CP_RESPONSE_READ)。响应抽象与OData版本解耦,支持统一处理V2/V4服务。常见响应类型包括单实体读取、列表读取(支持分页和增量同步)、创建/更新/删除响应等。开发时可通过响应对象的安全类型方法获取数据,如get_business_data获

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 138

debian安装 Debian的一些常用命令

本篇文章主要介绍了"debian安装 Debian的一些常用命令",主要涉及到debian安装方面的内容,对于Linux教程感兴趣的同学可以参考一下: dpkg学习:(1)dpkg是一个较底层的安装工具,处理.deb文件,软件包依赖性需要更高层的前端工具是apt; dpkg本身是不能解决依赖的。 ... dpkg学习: (1)dpkg是一个较底层的安装工具,处理.deb文件,软件包依赖

developerinit的专栏 2万+

跨应用服务器的自定义 IDoc 传输实战:以 CATSDB 工时为例,打通两套 SAP 系统的数据通道

本文介绍了在企业多SAP系统环境下,使用SAP ALE/IDoc技术实现工时数据跨系统传输的解决方案。文章从技术选型、系统架构到具体配置步骤进行了详细说明,重点阐述了IDoc/ALE在异步传输、全链路追踪和数据重放方面的优势。 文章详细讲解了端到端实施流程,包括Logical System配置、RFC Destination创建、Message Type定义、Segment和Basic Type设计等关键步骤。同时提供了出站封装的ABAP代码示例,强调调用MASTER_IDOC_DISTRIBUTE函数后执

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 175

深入解析:武汉光庭信息技术 Android CarPlay 开发岗位的技术要求与面试准备(大连)

武汉光庭信息大连分部招聘Android CarPlay开发工程师,要求专科以上学历及2年以上Android开发经验,需精通CarPlay集成技术与车载系统开发。该职位涉及Android底层框架修改、CarPlay协议实现及车规级系统开发,需处理USB/HID驱动、图形合成等技术难点,并确保通过Apple严格认证。求职者需具备扎实的Android开发能力,熟悉车载环境特殊性,包括系统稳定性保障、人机交互适配等技术要点。文章深度解析了职位技术内涵,并提供面试问题与参考答案,帮助求职者全面准备这一复合型技术岗位。

郑伟强dev的专栏 401

.deb 安装

.deb 安装

xie__jin__cheng的博客 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

在Debian中打造属于自己的deb包[转]

在Debian中打造属于自己的deb包 ...

weixin_34153893的博客 227

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

在Debian中打造属于自己的deb包[zt]

在Debian中打造属于自己的deb包http://www.linuxsir.org/bbs/showthread.php?t=208066作者:normalnotebook问题:如果你要在Debian系统中发布一款软件或者一个包,该如何做呢?如果你的项目中有各种二进制包,该如何维护呢?如果你自己做了一款小小的实用软件,该如何与朋友分享呢?……. 案例:假如我从网上下载了ec...

weixin_33916256的博客 89

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

在Debian中打造属于自己的deb包(转)

在Debian中打造属于自己的deb包(转)[@more@]作者:normalnotebook问题:如果你要在Debian系统中发布一款软件或者一个包,该如何做呢?如果你的项目中有各种二进制包,该如何维护呢?如果你自己做了一款小...

267

Zotero DEB包安装完全指南:为Debian系统用户打造的文献管理利器

作为一名Linux学术研究者,你是否经常为文献管理软件的繁琐安装而头疼?传统的压缩包安装方式不仅依赖关系复杂,而且桌面集成不完整。现在,通过这个专业的DEB包项目,你将体验到前所未有的安装便捷性。 ## 📋 常见安装难题快速解答 ### 问题一:为什么选择DEB包而不是传统安装方式? DEB包安装解决了传统方式的多个痛点: - **依赖自动管理**:系统自动处理所有依赖库,无需手动配置

gitblog_00992的博客 712

推荐文章:让Python项目轻松打包成Debian包 —— 深入探索Make-deb工具

推荐文章:让Python项目轻松打包成Debian包 —— 深入探索Make-deb工具 项目介绍 在Python开发者的世界里,将代码封装成跨平台的包是一个常见的需求。Make-deb 正是为了解决这一痛点而生,它是一个轻量级的辅助工具,能够基于你的setuptools配置和Git历史信息自动化地生成Debian包所需的配置文件。只需简单的命令行操作,你的Python项目就能摇身一变,成为标准...

gitblog_00376的博客 1094

推荐开源项目:i3-gaps-deb,打造个性化Debian桌面的新选择

推荐开源项目:i3-gaps-deb,打造个性化Debian桌面的新选择 在追求高效和个性化的今天,桌面环境的选择成为了众多开发者和技术爱好者的关注点。今天,我们来探讨一款专为Debian及衍生系统设计的开源工具——i3-gaps-deb,它不仅让安装配置i3-gaps变得轻而易举,更是个性化桌面定制的得力助手。 项目介绍 i3-gaps-deb是一个简单而强大的工具,旨在解决i3-gaps在De...

gitblog_00087的博客 620

Zotero DEB包终极安装指南:Linux学术研究者的完整解决方案

在Linux系统上进行学术研究时,文献管理工具的选择至关重要。Zotero作为开源参考文献管理软件的佼佼者,通过DEB包安装方式为Debian、Ubuntu等系统用户提供了前所未有的便捷体验。本文将为你详细解析Zotero DEB包的完整安装流程、使用技巧和优化配置,助你打造高效的学术研究环境。 ## 为什么DEB包是Linux用户的最佳选择? 传统安装方式存在诸多痛点:依赖关系复杂、桌面集成

gitblog_00358的博客 755

Flutter 三方库 flutter_to_debian 的鸿蒙化适配指南 - 掌控 Linux 二进制分发、Debian 封装实战、鸿蒙级精密桌面部署专家

是一套专注于解决“从二进制构建产物到标准化 Debian 软件包”全链路闭环的工业级方案。它通过提供一套严密的 YAML 配置矩阵与二进制重组容器,将复杂的 Debian 打包规范(如 debhelper 调用)简化为更具语义化的 Dart API / CLI 指令。在鸿蒙端项目中(特别是针对需要扩展至 Linux 桌面侧或麒麟等国产操作系统的跨端应用),利用它你可以构建出具备高联想力的分发指控架构。

大山哥 4701

用快马AI三分钟打造.deb智能安装助手——告别依赖地狱的终极方案

通过这个项目,我深刻体会到AI在开发中的强大助力。借助InsCode(快马)平台,不仅快速生成了项目框架,还能一键部署上线,省去了繁琐的环境配置。未来,我计划进一步优化依赖冲突检测算法,并增加更多实用的功能,比如批量处理.deb包、离线模式支持等。如果你也想尝试开发类似工具,不妨试试InsCode(快马)平台,它的AI辅助开发和一键部署功能会让你事半功倍!

AmberLeopard26的博客 839

**打造属于你的跨平台应用 —— deb2appimage 探秘之旅**

???? 打造属于你的跨平台应用 —— deb2appimage 探秘之旅 在开源的浩瀚星海中,有一颗璀璨的技术新星——deb2appimage。作为一款创新的工具,它将复杂的软件封装过程简化为简单的JSON配置文件操作,为开发者和Linux爱好者们提供了一种全新的构建可移植AppImage的方式。 ???? 项目介绍 deb2appimage是一款利用Debian和Ubuntu仓库中的deb包来构建AppI...

gitblog_00094的博客 595
上一篇: 构造函数浅析
下一篇: 大学四年(转载)
normalnotebook
博客等级 码龄24年 647粉丝 38原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值