我的问题很简单,但是我认为这会产生一个广泛的答案,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
这将为你做一切。 它会:
假设我们的仓库只包含两个子目录:二进制和源码
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包
当您的软件包准备就绪时,您可以使用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软件包的详细说明。