zoukankan      html  css  js  c++  java
  • ubuntu 制作deb 包

    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 

     

    Ubuntu下的deb包制作详解

    分类: linux
    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

  • 相关阅读:
    关于js计算非等宽字体宽度的方法
    [NodeJs系列]聊一聊BOM
    Vue.js路由管理器 Vue Router
    vue 实践技巧合集
    微任务、宏任务与Event-Loop
    事件循环(EventLoop)的学习总结
    Cookie、Session和LocalStorage
    MySQL 树形结构 根据指定节点 获取其所在全路径节点序列
    MySQL 树形结构 根据指定节点 获取其所有父节点序列
    MySQL 创建函数报错 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators
  • 原文地址:https://www.cnblogs.com/okgogo2000/p/4516665.html
Copyright © 2011-2022 走看看