我正在尝试制作一个我(共同)编写的软件包。我正在使用
debuild -i -us -uc -b
Run Code Online (Sandbox Code Playgroud)
原则上这很好用。为了缩短编译时间,我想 debuild 以并行运行 make (例如,我通常通过运行执行make -j4)。我在网上找到了一些建议如下的位置:
debuild -eDEB_BUILD_OPTIONS="parallel=4" -us -uc -b
debuild -j4 -us -uc -b
Run Code Online (Sandbox Code Playgroud)
另一个站点建议在debian/rules基本上设置的文件中添加一些代码
MAKEFLAGS += -j4
Run Code Online (Sandbox Code Playgroud)
然而,这些似乎都不起作用。我错过了什么吗?或者我应该在源的 autoconf/automake 设置中更改某些内容?
我在 Ubuntu QA 站点上找到了 OpenStack 构建任务,但我对构建步骤有点困惑。
这是构建步骤的链接:https : //jenkins.qa.ubuntu.com/view/Openstack_Testing/view/Grizzly/job/precise_grizzly_keystone_stable/275/consoleText
从 jenkins 构建日志中,我知道 Ubuntu 构建 Openstack 包的步骤:
git cloneopenstack tar.gz使用构建文件python setup.py sdistbzr获取由规范维护的 debian 控制文件dch命令生成新的构建版本并将其提交到本地bzr builddeb -S -- -sa -us -uc生成源码包及相关控制文件,如dscmk-build-deps安装依赖sbuild生成真正的 deb 包我的问题是:
-S,但是为什么最后还要用sbuild它来生成呢?这只是为了签名吗?bzr builddeb和 和有sbuild什么区别?我发现 jenkins 使用的构建脚本位于此处:~openstack-ubuntu-testing/openstack-ubuntu-testing,但是当我尝试在 下运行任何命令时bin,我总是得到:
root@demo:~/openstack-ubuntu-testing/bin# …Run Code Online (Sandbox Code Playgroud)我想将一些Ubuntu的软件.deb,特别是guake,于Ubuntu斯纳皮*包。
所有元数据都存在于 meta/package.yaml 中。该文件的详细信息记录在 snappy developer documentation 中,但简而言之,它非常简单,您可以使用以下简单的方法:
Run Code Online (Sandbox Code Playgroud)name: pkgname version: version-string apps: binary: - command: path/to/binary another-binary - command: path/to/another-binary...您的包名为“pkgname”...版本“version-string”和...二进制文件,称为 pkgname/name 和 pkgname/another。
我自己在谷歌上搜索过,几乎没有发现这种转换的主题。
作为一名构建工程师,通过贸易,以及热爱 Ubuntu 的爱好者,我可能能够从学习这类事情中受益。
.deb 如何变成 snap*?
* 显然,Ubuntu Snappy 的软件包格式称为“snap”格式。
在 Ubuntu 中,X 是堆栈中更关键的部分之一。因此,我们收到了大量关于它的问题和错误报告,可能是我们需要处理的人力的 100 倍。
Canonical 正在招聘更多的工程师来开发 X,这将有所帮助,但仍然有很多事情超出了 Canonical 的能力范围,所以我觉得有一个强大的社区参与改进 Ubuntu 中的 X 真的很重要,尤其是围绕让所有这些大量的错误报告得到答复、分类和(希望)解决。
然而,很难找到人在 X 上工作,或者让人们相信他们在 X 上投入时间是值得的。您建议如何鼓励人们参与其中,否则他们可能不会考虑在 X 上工作?
是否有任何用于创建 ubuntu/debian 包的图形工具?
我最近开始打包我的一些软件并在 Launchpad 上发布。安装和删除工作正常,但将包从一个版本升级到下一个版本是有问题的。
问题是有一些脚本只需要在第一次安装包时运行。这些脚本填充数据库、创建用户等。它们当前在 package.postinstconfigure)部分中调用。然而,这导致他们在升级过程中被称为以及所示的图。
有没有办法将维护者脚本包含在 .deb 包中,该脚本仅在第一次安装包而不是在升级期间执行?或者在 .deb 包中包含一些初始设置脚本的优雅方式是什么?
我有一个程序需要为每个 ubuntu 版本重新编译。
目前我正在使用 Ubuntu 的 PPA 打包它,仅用于当前发行版。
最终,我必须为以前的 ubuntu 版本提供包。
我不知道如何做到这一点。
Ubuntu PPA 构建服务器是如何工作的——它是否只查看最新更改日志条目(在 debian/changelog 文件中)中的分布字段来确定应该构建包的分布?
debian 规范允许将多个发行版添加到发行版字段中。但这对我没有帮助。
一些 ubuntu 文档谈到将发行版名称编码为版本号(在 debian 更改日志文件中)。
但这在实践中如何运作?有新版本的程序可用,然后呢?我是否为每个发行版添加一个新的更改日志条目,并且 PPA buildserver 在 dput'ing 之后为每个发行版自动构建新包?还是 PPA 构建服务器只查看第一个更改日志条目?
尽管我开始使用 Ubuntu 已经快一年了,但我还没有尝试从源代码安装软件。我实际上并不觉得有必要这样做。但现在我正在开发一个软件,该软件处于存储库中的候选发布阶段,但最新的稳定版本的源代码可在软件主页上找到。
我了解到如果软件有很多依赖项,从源代码安装可能会很困难。但是,如果我解决了这个问题,我会对最新版本感到满意。但是我一直想知道这样的软件是否可以自动更新,或者我是否必须运行一些脚本来更新包。或者更糟糕的是,我是否必须从头开始重新安装每个更新?
另外,我很想知道从上述以外的源安装是否有任何特定优势。
我有一个要为 Debian 打包的 python 脚本。我在我写的地方使用了 debian/install 文件
auto_dice.py /usr/bin/
Run Code Online (Sandbox Code Playgroud)
Linitan 然后抱怨 .py 扩展名 (script-with-language-extension)。
然后我把它改成
auto_dice.py /usr/bin/autodice.py
Run Code Online (Sandbox Code Playgroud)
这会导致错误,因为它被解释autodice.py为目录。
我怎样才能在那里重命名?我不想在源代码中重命名我的 python 脚本。
我正在为一个包编写一个 Ubuntu 包,该包本质上提供了许多库和头文件,然后用于构建其他软件。包也分解成相互依赖的较小的子包;从这个意义上说,该包与 boost 非常相似。
我注意到像 boost 这样的包提供
[...]
libboost-dbg
libboost-dev
libboost-doc
[...]
libboost-all-dev
[...]
Run Code Online (Sandbox Code Playgroud)
但没有任何名称boost或libboost.
-dbg,-dev和-doc包?