[Qt]-打包程序为Debian的deb格式的安装包
<blockquote><p>背景:朋友询问之前打包是如何弄的,于是我就把笔记整理后顺便也发博客上来了。</p>
</blockquote>
<blockquote>
<p>参考:https://segmentfault.com/a/1190000005029385<br>
参考:UnityLaunchersAndDesktopFiles</p>
</blockquote>
<p>deb是Debian Linux的软件包格式。一般来说是需要通过编译源码然后制作deb包。<br>
但是,为了快速方便,下面直接在程序打包的基础上来进行deb包的封装。</p>
<p><strong>步骤如下:</strong></p>
<h2 id="先完成程序的打包">先完成程序的打包</h2>
<p>先把程序打包完成。</p>
<h2 id="创建需要的目录结构和文件">创建需要的目录结构和文件</h2>
<p>首先建立一个工作目录,比如在主文件夹下建立YouAppName目录:</p>
<pre><code class="language-shell">$ cd ~
$ mkdir YouAppName
$ cd YouAppName
</code></pre>
<p><strong>deb文件在安装的时候默认是将文件释放到Linux系统的根目录下,即/</strong></p>
<p>如果我们这里设定安装路径为/opt,那么就安装到opt下。</p>
<p>操作如下:</p>
<pre><code class="language-shell">mkdir -p opt
# 把之前打包好的cp到设置目录结构的opt下
cp -a YouAppName/opt/
</code></pre>
<blockquote>
<p>我们创建一个opt目录,这样安装的时候就可以安装到系统的/opt下面去了。你创建什么目录,它安装到哪里去(前提得是Linux系统下的标准目录。)</p>
</blockquote>
<p><strong>同时我们还需建立一个DEBIAN目录</strong>,需要在DEBIAN目录下创建一个control文件,并加入以下内容:</p>
<pre><code>package: YouAppName
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Depends:
Maintainer: you email or inc
Description: YouAppName-deb
</code></pre>
<h2 id="desktop">desktop</h2>
<pre><code>
Version=1.0 #app的版本
Name=YouAppName #app的名字
Comment= this app use for test #说明信息
Exec=/opt/YouAppName/YouAppName.sh #app的执行路径,请使用绝对路径
Icon=/opt/YouAppName/lib/YouAppName.png #icon 路径,请使用绝对路径
Terminal=false #是否在终端启动
Type=Application
Categories=Utility;Application;
</code></pre>
<h2 id="大概的项目结构非debian标准">大概的项目结构(非debian标准)</h2>
<p>注: 请根据实际情况灵活配置目录,请参考下面我组织的结构</p>
<pre><code>//TODO 后面有空补充完善
└── YouAppName#目录
├── opt #目录
│ ├── YouAppName #目录 自己应用程序的名字
│ |── YouAppName# 程序或文件 Qt生成的或其它可运行程序
| |—— YouAppName.sh #程序的启动脚本。
| |—— 项目封装的so或者第三方的so文件和可执行文件放在同一层级(只是建议)
│ |── lib #目录 Qt相关的的so文件
| |—— plugins #目录 Qt的插件
│ ├── YouAppName.desktop
│ ├── YouAppName.png
│ ├── ...等等文件
│
└── DEBIAN#目录 名字确定
├── control #控制文件 名字不可改,必须有这个文件
├── postinst#脚本文件 名字不可改,运行sudo dpkg -i xx.deb命令时,会运行这个脚本. 非必须文件
├── postrm #脚本文件 名字不可改,运行sudo dpkg -r app 命令时,会运行这个脚本 .非必须文件
</code></pre>
<h2 id="封装为debian系的deb安装包命令">封装为debian系的deb安装包命令</h2>
<pre><code class="language-shell">sudo dpkg -b YouAppName/ YouAppName_V1.0_amd64.deb
</code></pre>
<h2 id="安装卸载debian包">安装,卸载debian包</h2>
<p>dpkg命令<br>
dpkg的基本使用</p>
<pre><code>// 注: 需要写软件的名字,tab并不能补全
sudo dpkg -i xxx.deb安装deb包
sudo dpkg -r xxx卸载
sudo dpkg -P xxx 卸载(并且删除配置文件)(推荐使用这个,卸载的干净)
</code></pre>
<h2 id="注意事项">注意事项</h2>
<h3 id="给desktop文件添加执行权限非必须但是建议">给desktop文件添加执行权限(非必须,但是建议)</h3>
<p>chmod 755 YouAppName.desktop</p>
<h3 id="指定desktop文件">指定desktop文件</h3>
<p>不过xxx.desktop 的写法要一个限制:包含“Exec”那一行,“=”和要执行的程序之间要留一个空格。也就是Exec=XXX是无法通过“sh xxx.desktop”执行,正确的是Exec= XXX。</p>
</div>
<div id="MySignature" role="contentinfo">
<hr />
<font size="5" color="red">欢迎交流学习,共同进步</font><br>
<font size="5" color="red">限本人水平有限,如有错误请指教,谢谢</font>
<hr /><br><br>
来源:https://www.cnblogs.com/__tudou__/p/15006892.html
頁:
[1]