ubuntu下打包制作deb安装包

http://www.th7.cn/system/lin/201406/61012.shtml

 
2014-06-22 20:16:45CSDN-yangbingzhou-点击数:
 

最近写了一个小程序,打算做成deb发布,折腾了两天,终于找到了一个简单的deb制作方法

1、首先要编译好程序,获得程序的可执行文件

2、新建一个文件夹,例如在用户目录下新建mydeb文件夹

3、在mydeb文件夹建立如下结构的文件夹和文件

|——mydeb
     |————usr
           |————lib
                 |——可执行文件(安装后,就在你的/usr/lib生成相应的可执行文件)
           |————share

|————icons

|——deb.png(图标文件生成到/usr/share/icons/)

|————applications                           
                         |——deb.desktop(桌面文件生成到/usr/share/applications/)
                 
     |————DEBIAN(大写、用来制作打包文件)
            |————control(描述deb包的信息必须的文件)

4、改写各个文件

deb.desktop可以先建立一个txt文本,输入如下内容:

[Desktop Entry]
Name=mydeb                                                        #这个是程序名称
Comment=制作deb的工具                                        #注释
Exec=/usr/bin/deb-creator                                     #可执行文件存放的位置
Icon=/usr/share/icons/deb-creator-icon.png          #图标存放的位置
Terminal=false                                                      #是否使用终端
Type=Application                                                  #应用类型
X-Ubuntu-Touch=true                                            #这个暂时我也不知道是什么用的
Categories=Development                                      #分类的位置
Name[zh_CN]=desktop

注意:#的内容都要删除,不要有任何注释等不必要的信息,否则有时会出现启动程序错误。
Categories可以取以下值,表示程序的启动快捷方式放在哪个菜单下:应用菜单Application;Network放在互联网(Internet);办公 Office;图形 Graphics;声音和视频 AudioVideo;系统工具 System;编程 Development;附件 Utility;影音 AudioVideo;游戏 Game;首选项 Settings(GNOME;GTK;Settings;HardwareSettings;);系统管理 System;Settings;

control文件内容输入如下内容:

package: mydeb                                                            #安装包的名称
version: 1.0.0                                                                #版本
architecture: i386                                                         #平台
maintainer: young                                                        #维护者
description: you can description the deb           #描述安装包的信息

5、打包

避免 E: mydeb: wrong-file-owner-uid-or-gid usr/ 1001/1001     类型警告

chown -R root:root mydeb

在mydeb文件夹的路径上,输入:sudo dpkg -b mydeb mydeb_1.0.0_i386.deb 打包

(deb包正确的命名规则program-name_version_architeture.deb。所有的值最好与它们在control文件里对应的语句相
同)

6、测试

sudo dpkg -imydeb_1.0.0_i386.deb 安装(在应用程序编程菜单的附件下)
sudo dpkg -P mydeb 卸载

以上只是简单制作一个deb的过程,一些制作deb的其他细节问题,以后再慢慢探究。

7 解包

新建两个目录 extrat DEBIAN

dpkg -X sogoupinyin_1.2.0.0048_amd64.deb extract/

dpkg -e sogoupinyin_1.2.0.0048_amd64.deb DEBIAN/

====================

http://blog.csdn.net/zkdemon/article/details/8003734

http://forum.ubuntu.org.cn/viewtopic.php?f=56&t=454338

-----

Lintian

lintian mydeb_1.0.0_all.deb

分类: linux2011-11-14 10:10 3721人阅读 评论(7) 收藏 举报

QT程序制作deb包并安装在应用程序菜单

制作原理:
打包:将QT制作的源程序(没有编译的)用debian压缩打包(这里是用脚本对源程序再
编译)
安装:将deb包中的源程序解压(默认解压到根目录)到规定系统文件中并编译(postinst
脚本)
卸载:将解压的所有文件删除(postrm脚本)
例子:
1.新建deb包文件myded
|——mydeb
     |————application
           |——addressbook(此目录存放QT的源程序和configure脚本)
           |————lib
                 |——addressbook.desktop(桌面文件为了cp
到/usr/share/applications/)
                 |——addressbook.png(图标文件为了cp到/usr/share/pixmaps/)
     |————DEBIAN(大写、用来制作打包文件)
            |————control(描述deb包的信息必须的文件)
            |————postinst(软件安装后执行的脚本、chomod 755 postinst加可执
行权限)
            |————postrm(软件卸载后执行的脚本、chomod 755 postrm加可执行
权限)

2.各个文件的具体制作
**********************************
addressbook目录:
**********************************
addressbook中存放编写的源程序(QT4编写的),为了可在不同的环境可安装对源程序
不进行编译,写一个configure脚本在安装后编译
configure脚本内容(chomod 755 configure)
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
qmake -project #编译生成.pro项目文件
qmake          #编译生成Makefile文件
echo -e "run configure Ok!"
(这里生成的Makefie文件不make是为了可以解压再使用)

***********************************
lib目录:
***********************************
addressbook.desktop文件内容
[Desktop Entry] #必写
Encoding=UTF-8  #编码
Exec=addressbook  #可执行程序名称 在/usr/bin/中
Name=addressbook  #程序名
Name[zh_CN]=地址簿 #程序中文名
X-KDE-StartupNotify=true #是否启动通知
Comment=addressbook  #注释
Icon=/usr/share/pixmaps/addressbook.png #图标位置
Terminal=false #是否使用终端
Type=Application  #类型
Categories=Application;Utility; #放在附件菜单项中,也可以放在其他菜单项中
Categories第一个一般为Application
第二个一般为
互联网(Internet)Network
办公 Office
图形 Graphics
声音和视频 AudioVideo
系统工具 System
编程 Development
附件 Utility
影音 AudioVideo
游戏 Game
首选项 Settings(GNOME;GTK;Settings;HardwareSettings;)
系统管理 System;Settings;

addressbook.png下载
http://www.iconpng.com/

****************************************************************** 
DEBIAN内容

*******************************************************************
DEBIAN目录中起码具有control文件,其次还可能具有 postinst(postinstallation)、 
postrm(postremove)、preinst(preinstallation)、prerm(preremove)、copyright (版
权)、changlog (修订记录)和conffiles等。
control: 这个文件主要描述软件包的名称(Package),版本(Version)以及描述
(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。
同时为了能将软件包进行充分的管理,可能还具有以下字段:
Section: 这个字段申明软件的类别,常见的有`utils’, `net’, `mail’, `text’, 
`x11′ 等;
Priority: 这个字段申明软件对于系统的重要程度,如`required’, `standard’, 
`optional’, `extra’ 等;
Essential: 这个字段申明是否是系统最基本的软件包(选项为yes/no),如果是的话,
这就表明该软件是维持系统稳定和正常运行的软件包,不允许任何形式的卸载(除非进
行强制性的卸载)
Architecture:申明软件包结构,如基于`i386′, ‘amd64’,`m68k’, `sparc’, 
`alpha’, `powerpc’ 等;
Source: 软件包的源代码名称;
Depends: 软件所依赖的其他软件包和库文件。如果是依赖多个软件包和库文件,彼此之
间采用逗号隔开;
Pre-Depends: 软件安装前必须安装、配置依赖性的软件包和库文件,它常常用于必须的
预运行脚本需求;
Recommends: 这个字段表明推荐的安装的其他软件包和库文件;
Suggests: 建议安装的其他软件包和库文件。
*************************************
★★control文件内容
Package: addressbook
Version:0.1
Section: utils   #类别
Priority: extra  #重要程度:额外的
Maintainer: cqy <qingtang166@qq.com>
Architecture: i386
Description: The software is a opensource package
from cqy qingtang166@qq.com

**********************************************
★★postinst(软件安装后执行的脚本、执行chomod 755 postinst加可执行权限)内容
#!/bin/sh
dire="/usr/share/addressbook"
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
mkdir -p $dire #在/usr/share/中新建目录存放程序
mv -f /application $dire/ #将解压到根目录的程序移动到新建好的目录中
cd $dire/application/addressbook/  #进入程序目录
./configure #执行脚本生成Makefile
make #编译
echo "install Ok!"  #安装完成
ln -s $dire/application/addressbook/addressbook /usr/bin/addressbook  #为应
用程序建立链接,链接到/usr/bin/addressbook上(可任意调用addressbook程序)
cp -rf $dire/application/lib/addressbook.png /usr/share/pixmaps/      #把图
标文件addressbook.png放在/usr/share/pixmaps/中
cp -rf $dire/application/lib/addressbook.desktop /usr/share/applications/ #
把桌面文件addressbook.desktop放在/usr/share/applications/中
echo "Ok!"

****************************************************************************
★★postrm(软件卸载后执行的脚本、执行chomod 755 postrm加可执行权限)
#!/bin/sh
dire="/usr/share"
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
rm -rf $dire/addressbook  #删除产生的文件
rm -rf /usr/bin/addressbook
rm -rf $dire/pixmaps/addressbook.png
rm -rf $dire/applications/addressbook.desktop
echo "delete this software is Ok!"

***********************************************************************
回到mydeb所在目录执行
sudo dpkg -b mydeb addressbook_0.1_i386.deb 打包(deb包正确的命名规则program-
name_version_architeture.deb。所有的值应该与它们在control文件里对应的语句相
同)
得到addressbook_0.1_i386.deb包

sudo dpkg -i addressbook_0.1_i386.deb 安装(在应用程序开始菜单的附件下)
sudo dpkg -P addressbook 卸载

http://blog.csdn.net/small_qch/article/details/6967654

单个执行文件怎么打包成deb?[已解决]7楼careone正解!

2013-11-16 13:30韶华倾负lcyxv | 分类:操作系统/系统故障 | 浏览338次
分享到:

 
2013-11-16 21:38

 

提问者采纳

 
1 下载一个其他的 deb 软件包,解压缩后得到2个压缩包: data.tar.gz , control.tar.gz;
2 解压 control.tar.gz ,得到 control 文件(在这个文件中修改软件包依赖关系),删除另外的 md5sums 文件;
3 把自已的文件放在 /usr/local/bin/xxx 文件;

http://zhidao.baidu.com/link?url=f4nQF6SrowNeumrRfoGAk1Cs5_loiM7m2LWjL_eLgYjCCqNlOQyw2Fq4wVNrNG_qU7JCyb2baiCHBsDSvZoM3fcwqSrx7ZnGUfrcls4XVBq

http://bbs.feng.com/read-htm-tid-6507786.html

http://www.ithov.com/linux/104576.shtml

ubuntu 制作deb 包的更多相关文章

  1. Ubuntu下制作deb包的方法详解

    1  认识deb包 1.1   认识deb包 deb是Unix系统(其实主要是Linux)下的安装包,基于 tar 包,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组. 由于 Unix ...

  2. Ubuntu下deb包的安装方法 (zz)

    Ubuntu下deb包的安装方法 分类: Ubuntu10使用技巧 2010-10-11 23:49 42969人阅读 评论(3) 收藏 举报 ubuntudebdebianlinux deb是deb ...

  3. ubuntu下deb包的安装方法

    ubuntu下deb包的安装方法 简介 deb是debian linus的安装格式,跟red hat的rpm非常相似,最基本的安装命令是:dpkg -i file.deb dpkg 是Debian P ...

  4. 从源代码制作deb包的两种方法以及修改已有deb包(转载)

    From:http://yysfire.github.io/linux/%E4%BB%8E%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%B6%E4%BD%9Cdeb%E5%8C% ...

  5. 【转】Ubuntu下deb包的安装方法

    [转]Ubuntu下deb包的安装方法 deb是debian linus的安装格式,跟red hat的rpm非常相似,最基本的安装命令是:dpkg -i file.deb dpkg 是Debian P ...

  6. 转载:Ubuntu下deb包的安装方法

    转载:Ubuntu下deb包的安装方法,http://blog.csdn.net/kevinhg/article/details/5934462 deb是debian linus的安装格式,跟red ...

  7. [deb]制作deb包

    转自:http://www.cnblogs.com/Genesis-007/p/5219960.html 查看系统安装了哪些deb包: dpkg -l 打包: dpkg -b dir result.d ...

  8. dpkg制作deb包

    deb包的文件结构: deb包里面的结构:DEBIAN目录 和 软件具体安装目录(模拟安装目录)(如etc, usr, opt, tmp等). 在DEBIAN目录中至少有control文件,还可能有p ...

  9. Ubuntu下deb包的安装方法 - kevinhg的博客 - 博客频道 - CSDN.NET

    Ubuntu下deb包的安装方法 - kevinhg的博客 - 博客频道 - CSDN.NET dpkg -i

随机推荐

  1. 我与C++的不解情缘

    我是一个老实人,我当时报考C++真的全心是为了自己自考的免考,绝不是为了什么二级证,可是,进行到一半的时候,突然获悉,C++自我们这次开始,不作为免考科目了,当时我的心里啊,那个纠结,那个痛啊,随后, ...

  2. 在虚拟机环境下,电脑间拷贝配置好的伪分布式Hadoop环境,出现namenode不能启动的问题!

    原因:在原来的电脑上配置伪分布的时候,已经将hostname与IP绑定了,所以拷贝到别的电脑的时候,重新启动的时候就会失败,因为新的电脑的IP不见得就和原来的电脑的IP一样!因为在不同的网络中,在NA ...

  3. Xamarin.iOS项目提示error MSB3174:”TargetFrameworkVersion”的值无效

    Xamarin.iOS项目提示error MSB3174:”TargetFrameworkVersion”的值无效 错误信息:MSBulid\14.0\bin\Microsoft.Common.Cur ...

  4. ZOJ2539 Energy Minimization(最小割)

    题目大概说,给一个n个格子的矩阵,每个格子都有一个数字pi.求这个函数的最小值: 其中xi的取值是0或1,v0.v1已知,j是和i在矩阵中上下左右相邻的位置且j>i. 这个式子有三个加数组成A+ ...

  5. BZOJ2707 : [SDOI2012]走迷宫

    首先求出SCC缩点,E[T]=0,按拓扑序计算 对于无边连出的块,如果不是T所在块,则称该块是死路块 对于一个块,如果其中的点连出的边是死路块,则它也是死路块 否则对于每块进行高斯消元求出期望 如果S ...

  6. 解决xubuntu的thunar第一次启动慢

    装了Xubuntu后,一直都挺好,只不过就是有一个问题老困扰我,就是每次开机打开thunar都是极慢的.... 一直没注意,原来也一直找不到问题,后来今天一搜,唷呵...找到了. 解决方法 thuna ...

  7. 【BZOJ】1012: [JSOI2008]最大数maxnumber(树状数组+rmq)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1012 树状数组原来我只懂得sum和add的操作,今天才知道可以有求区间最值的操作,我学习了一下写了个 ...

  8. COJ559 回文

    试题描述 给定字符串,求它的回文子序列个数.回文子序列反转字符顺序后仍然与原序列相同.例如字符串aba中,回文子序列为"a", "a", "aa&qu ...

  9. ZXing二维码的生成和解析

    Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法, 现在我简单介绍一下使用Java利用Zxing生成与解析二维码 注意: 二维码的生成需要借助辅助类( ...

  10. 给iOS工程增加Daily Build

    给iOS工程增加Daily Build  前言 Daily Build 是一件非常有意义的事情,也是敏捷开发中关于 "持续集成" 的一个实践.Daily Build 对于开发来说有 ...