1、什么是deb包,为什么需要
由于了解不全面所以不一定对,写下来一方面方便自己看,另一方面希望可以给刚接触的朋友一点帮助
1.1 在学校一般对deb包接触会少一点,但是进入公司后可能就要用到,这到底是个什么呢?
(1)可以看看鸟哥的linux私房菜第23章软件安装->23.1软件管理器简介,这个很有必要,因为这会让你知道这个东西的作用
个人理解:主要是为了使我们编译制作好的可执行能够在不同的平台进行移植,例如你制作好的应用程序server,而这个应用程序之所以能在你的主机平台下正常运行,是因为你提前搭建了运行环境(安装某些特定软件、移植某些特定的库),如果现在将这个应用程序放另一家公司的平台下运行呢?于是就出现了是否可移植兼容问题,所以deb包出现了,在制作deb包的时候就考虑到了这样问题,这个包里面放着需要在其他平台运行的可执行程序、一些脚本文件、记录信息的日志等,当需要在在其他平台运行某个文件时,我们就将它打包成deb包(打包制作过程并不麻烦,有好几种方式,一般都是用固定的几个命令制作),然后将deb包在另一个平台安装(有专门安装命令,就一行解决),安装的时候会运行deb包里面的脚本文件(这个脚本需要自己写,一般也有模板),脚本可以提示如果想运行deb包里面的某个应用程序或库时,需要提前安装某些特定的软件或库等,脚本可能会自动帮你安装,或者提示你需要哪些软件,你自己安装,这就看这个包的作者如何编写deb里面的脚本文件了。deb解压后里面有很多文件,其中比较重要的一个文件是control,里面有很多关系这个deb包的信息,包括这个应用程序的依赖关系,版本,描述等等。现在知道这个包的作用了吧。
1.2 自己作为deb包的发布者又需要掌握哪些,如何制作创建一个deb包呢?
(1)可以看看该博客:https://www.cnblogs.com/drfxiaoliuzi/p/4873670.html
制作方法有多种
(1)例如可以安装一个软件专门用来制作,里面完整的包含了deb包所需要的所有文件,包括安装前后运行的脚本、control信息等,你可以修改里面的脚本、去掉你不需要的文件,保留重要的文件即可
请看博客:https://blog.csdn.net/steveyg/article/details/78059276
(2)如何制作Deb包和相应的软件仓库,其实这个很简单。这里推荐使用dpkg来进行deb包的创建、编辑和制作。dpkg(看鸟哥linux私房菜,其实就是ubuntu下支持的命令集之一,专门用来处理deb包),大致流程就是将你的应用程序放在一个文件夹里,然后自己手动添加control文件、脚本文件等等,所以比较麻烦(也不麻烦,都有模板,对脚本编写需要熟练),但如果你在公司不是做这一块了解下就行了,不需要自己制作完整的deb包,学会解压deb包,并在你的平台下将李某的应用软件运行起来就ok。
请看博客:https://www.cnblogs.com/drfxiaoliuzi/p/4873670.html
该博客有一些细节需要注意:
1.需要创建目录并不是必须按照他的格式,除了DEBIAN需要大写、control和一些特定胶片要放在DEBIAN里面,其他文件你可以随便创建,只是最后按照标准将可执行文件放在你创建的Application里面,这样拿到包的人知道在里面找到这个可执行程序,比较方便,仅此而已
2.对于安装前后的脚本文件,如果真正做公司工程,你又是做这一块的工作,可能需要在DEBIAN文件里面的脚本添加一些内容,这时需要修改DEBIAN文件的可执行权限,改为755。如果仅仅是测试学习,不添加脚本做测试也是可以的,仅仅需要control即可
3.chmod 755 DEBIAN无效问题,因为我个人是在windows与ubuntu的共享文件夹里做实验,因为是共享所以无法改变共享文件夹里面的可执行权限,所以我将准备打包的deb文件cp 到ubuntu里面,然后再chmod这时发现可以了
2.实验
(1)cydia,是准备打包成deb包的一个文件,mkdir创建的一个普通文件,里面再使用mkdir创建了3个文件(没有任何规律,你想怎么创建都行)
(2)App里面放的是我的可执行文件(二进制文件server),var啥都没,需不需无所谓
(3)DEBIAN就有讲究了,首先必须大写,里面有一个control文件,里面内容由于是测试使用所以随便加哪几项
vi打开control可以看到我随手写的一些信息,作为发布者需要写清楚,作为使用者,在自己平台去看这些信息即可
(4)使用dpkg命令,生成了。就deb包
(5)然后使用安装命令安装,因为我们同一环境下运行所以安装成功,不同平台可能不行,需要安装环境
(6)使用dpkg --info可以看到deb包control信息,包括deb包发布者写明的依赖,就是该软件包里面可执行文件运行时需要提前安装的库,软件包等信息。