记录一次Deb打包过程及踩雷警示
最近写了一个python的小程序,但愿能打包成deb文件,把这个程序弄得有头有脸,安装deb后能够在应用列表和桌面看到。参考了许多资料(文后附),它们给了我不少指导,对此表示感谢。html
须要准备的
一、源代码(前提要可执行)或者编译好的程序,这里只介绍python
二、能用的ubuntu系统
三、用户的密码
四、图标(必定要有!)
python
这里给你们介绍一个案例,包名叫作debpacktest,整个过程当中全部用到名字的地方,通通都是这个名字。xxx也指代这个名字。linux
1、创建目录架构
程序是要放到一个系统中的各个部分去的。其实这个并无那么严格,不必定全都要挤到/usr/lib里边去,放到/home等都没有太大的问题。这里你须要用一个文件夹模拟出linux的文件架构,只须要模拟你程序须要安放到的位置就好了。好比说我有main.py和mainform.py两个文件,放到的文件夹是/usr/lib/debpacktest。那么我只须要建一个大文件夹(命名随意),cd到这个大文件夹,直接一个mkdir新建/usr /lib /debpacktest,而后把py文件丢进debpacktest文件夹。下面罗列出来的是目录结构,多余出来的是须要手工添加的deb包配置文件(夹)。(share部分和DEBIAN部分)ubuntu
├── debpackTotal │ ├── DEBIAN(这个目录要添加control文件(无后缀名),可选添加postinst等) │ └── usr │ ├── lib │ │ └── debpacktest(预约要安装到系统中的文件) │ │ ├── mainform.py │ │ └── main.py │ └── share │ ├── applications(在这里添加xxx.desktop,使应用中可以加载出你的应用) │ └── icons(你的图标,这个必须有) **踩雷一**
在DEBIAN目录下制做control文件
cd到DEBIAN,在命令行输入(固然,你用gedit也行)小程序
vim control
在其中粘贴:vim
Package: debpacktest
Version: 1.0.0
Architecture: amd64
Maintainer: bakamitai
Description: just a test
Package:你的包名
Version:版本
Architecture:架构
Maintainer:维护者
Description:解释
bash
括号后的内容 根据你本身的须要去改变
而后保存
架构
在/usr/share/applications下制做桌面图标 debpacktest.desktop
这一步很是重要 关系到你可否在应用列表出现你本身的程序,清必定按照下面的步骤完成。
首先在/usr/share/applications/下新建debpacktest.desktop这个文件。
里面的内容是:
app
[Desktop Entry] Name=debpacktest Comment=An example Exec=/usr/lib/debpacktest/main.py Icon=/usr/share/icons/debpacktest.png Terminal=false Type=Application X-Ubuntu-Touch=true Categories=Development
Name:你的包名
Comment:评论 注释
Exec:这里很是重要!这里若是不对 会直接致使这个图标没有办法显示。对于python来讲,必定要具体到执行哪一个py。这里执行的是main.py。不要忘记chmod,给main.py加上可执行权限。踩雷二
Icon:图标,不能够忽略 踩雷三
Terminal:是否在终端执行。这里是QtPy窗体,不须要。若是须要的话能够参考vim的desktop文件 踩雷四
Categories:分类。能够在引用和参考那里寻找更多。
post
剩下的东西 都不要动 都不要动
文件不能有多余的空格! 踩雷五
desktop文件要有可执行权限!
打包
到这里,一个基本的deb软件包就大功告成了。
咱们返回到debpackTotal的上级目录。咱们执行
sudo dpkg -b debpackTotal debpacktest_1.0.0_amd64.deb
包的命名要符合规范,我这里是随便打的。
检验的话,能够输入
sudo dpkg -i debpacktest_1.0.0_amd64.deb
在个人机器上,运行很完美,我在应用列表里看到了个人程序。
若是要卸载,请执行
sudo dpkg -r debpacktest
注意 这里面的参数 是包名,并不是包的文件名,就是一开始我让大家注意的那个全局命名。
关于postinst文件(即制做桌面图标)
cd到DEBIAN目录,新建postinst文件,没有后缀。这个文件是在安装完包之后执行的脚本
复制如下内容:
#!/bin/bash sudo cp /usr/share/applications/debpacktest.desktop ~/桌面 echo POST INSTALLATION FUNCTION EXECUTED
这里是在包安装完成后,执行代码,将desktop文件复制到桌面。不一样语言的发行版须要注意桌面的路径。踩雷六
postinst要有可执行权限。踩雷七
从新打包,安装,检验,发现桌面上多了个东东,是咱们复制过去的文件,但并无显示图标。
咱们须要右击它,选择容许执行。你想要的结果便出现了。
总结
以上就是简单制做一个基本的deb文件的所有步骤以及部分扩展。须要耐心。Enjoy it.
参考&引用
https://www.ibm.com/developerworks/cn/linux/l-cn-dtef/index.html https://www.cnblogs.com/young525/p/5873806.html