如何创build包?

我的问题很简单,但是我认为这会产生一个广泛的答案,build议等等;)

我如何创buildUbuntu或Debian等Linux系统的软件,并通过根服务器发布它们?

Debian打包系统是安装,升级和删除公共存储库中可用软件最优雅的方法之一。 如果你需要build立和维护一个非官方的Debian软件包库,你可以考虑一些技巧。 在这里,我将简要介绍一些获取您的公共Debian存储库的步骤。
首先,安装一些必要的软件包:

sudo apt-get install build-essential devscripts debhelper dh-make diff patch gnupg fakeroot lintian linda pbuilder 

如果你打算在规则文件中使用它,可能是cdbs:

 sudo apt-get install cdbs 

创build一个工作目录,并移动到你打算构build的包的源代码中

 mkdir packages cp mypackage-0.1.tar.gz packages cd packages 

设置维护者电子邮件和全名,这些信息将被用在包元数据信息中。

 export DEBEMAIL="user@address" export DEBFULLNAME ="full name" 

运行dh_make后,会popup一些相应的回答,这个工具会将一些模板提取到packages / debian目录下。 有关运行dh_mahe -h的更多信息

 dh_make 

创build.deb包所需的许多文件存储在项目的根目录packages / debian中。 为了设置这些文件所需的更改,您必须了解一些关于您的软件包的信息:依赖关系,版权,更新日志,makefile …请参阅此tuto下一步构build二进制文件包,内置调用以下命令。 / debian目录下:

 cd debian debuild -rfakeroot 

这将为你做一切。 它会:

  • 清理源代码树(debian / rules clean),使用fakeroot
  • build立源码包(dpkg-source -b)
  • 构build程序(debian / rules build)
  • 使用fakeroot构build二进制包(debian / rules binary)
  • 使用gnupg签署源.dsc文件
  • 使用dpkg-genchanges和gnupg创build并签名上传的.changes文件

假设我们的仓库只包含两个子目录:二进制和源码
dpkg-scanpackages扫描.deb包; dpkg-scansources扫描.dsc文件。
因此有必要将.orig.gz,.diff.gz和.dsc文件放在一起。 .changes文件是不需要的。
在你的www中创build版本库目录,如下所示:

 sudo mkdir -p /var/www/repository/{binary,source} 

将你的deb和source包移到/ var / www / repository / {binary,source}并生成索引。

 $ cp mypackage-0.1-1.deb /var/www/repository/binary/ $ cp mypackage-0.1-1.tar.gz /var/www/repository/source/ $ cd /var/www/repository $ dpkg-scanpackages binary /dev/null | gzip -9c > /var/www/repository/binary/Packages.gz $ dpkg-scansources source /dev/null | gzip -9c > /var/www/repository/source/Sources.gz 

最后,添加这个你的source.lst,以便能够从存储库获取你的包。

 deb http://yourwebserver/repository binary/ deb-src http://yourwebserver/repository source/ 

我希望能有所帮助,更多的信息请参考完整的文档:

– Debian维护者指南
– Ubuntu的包装指南

您可以使用文档创build包

  • Ubuntu的PackageingGuide
  • Debian新维护者指南

当您的软件包准备就绪时,您可以使用dpkg-scanpackage创build适合列出软件的软件包文件。

或者,你可以使用apt-ftparchive,它需要一些更多的configuration,但是可以用于更大的不同架构的软件仓库等等。你可以在apt-ftparchive上find一个很好的指南

也许你也应该看看Ubuntu的ppas 。 这是一个ubuntu和debian的自动构build服务和存储库。

checkinstall工具会自动创build.deb / .rpm和slackware软件包,通过观察安装脚本或者makefile做什么来安装。 对于不那么复杂的软件包(那些没有大量的前/后安装脚本的软件),它做的相当不错。

但是我不会盲目地把一个checkinstall软件包发布给大众。 我只用它来捆绑我们在本地办公networking上安装的东西。

不过,它的价值检查。 过去一年里,我们做了很多工作,使它能够正确无误地构build复杂的软件包。

我喜欢它,因为它非常容易放入任何构build系统并填充小型库。

看看Debian新维护者指南 。

如果你主要使用Ubuntu,你应该阅读这个:

https://help.launchpad.net/Packaging

我build议你使用launchpad来托pipe你的软件包,除非你的软件包是私人的。 你还应该阅读Ubuntu的基本包装指南 ,了解如何从源代码构build软件包的详细说明。