我有一个适用于打包版本的 vim 补丁。我想自动执行此操作,以便在发布新的 ubuntu 时,使用配方修补和构建较新的未打补丁的 vim。我阅读了有关食谱的文档,但我不确定如何应用补丁。
我应该使用修改后的源创建分支并让配方合并它吗?当补丁分支与较新版本中的发行版软件包过时时,如何处理?(补丁很可能仍然适用;但分支也能合并吗?)
我想补充的最新美食包从Debian的SID来我们球队的PPA所以想运行了最新版本的美食谁Ubuntu用户可以在PPA加入到他们的软件的来源。(从依赖关系来看,这应该不是什么大问题,因为几乎所有当前的依赖项都已经在所有当前支持的 Ubuntu 版本中可用。)
我已经下载了*.dsc文件以及 debian 和 orig tarball,甚至发现我可以将它用于包的source.changes文件。我还下载了 Debian 维护者的公钥,以便dput验证软件包。然后我尝试使用dput ppa:~gourmet/ppa gourmet_0.17.3-1_source.changes(我也尝试不使用 tilda)将包上传到我们的 PPA 。这似乎成功了,但我没有收到确认电子邮件,现在我们的PPA 上没有显示包,这让我相信软件包被拒绝是因为 Debian 维护者的密钥显然不在我们团队成员的密钥中。
那么将软件包从 Debian (sid) “复制”到 Launchpad PPA 的最简单方法是什么?在上传之前,我真的需要在本地重建整个包吗?
如何翻译debian/controldebian 软件包中的内容,以便在软件中心显示软件包时对信息进行本地化?
对于 Ubuntu 中的软件包
对于单个 .deb 包
用于 PPA 中的包
我是包装的新手,但我设法设置并运行了 PPA。但是当我在 Ubuntu 软件中心寻找我的软件时,它只会在点击“显示 _ 技术项目”后才会出现。我的软件不是技术项目。我如何将此信息传达给软件中心,以便它可以对其进行适当分类?
我发布了一个 .desktop 文件,它完美地显示在菜单中。安装后,软件中心甚至列出了菜单项的路径(“在菜单中查找:...”)。
编辑:我在各种 Ubuntu IRC 频道上花了一些时间,从与几个不同的人的对话中,共识似乎是无法解决 PPA 包的这个问题(以及其他几个问题,例如显示图标) . 现在的情况是,软件包必须在主存储库中才能与 Ubuntu 软件中心完全集成。
将修改后的或新的文本文件添加到我的 PPA 包中非常简单:
第1步:
apt-get source [foo-package]
cd [foo-package]
Run Code Online (Sandbox Code Playgroud)
步骤 2: 添加或修改包含更改的新文本文件
第 3 步 - 更新变更日志:
dch -i
Run Code Online (Sandbox Code Playgroud)
第 4 步 - 创建补丁
dpkg-source --commit
Run Code Online (Sandbox Code Playgroud)
第 5 步 - 创建一个源包
debuild -S
Run Code Online (Sandbox Code Playgroud)
第 6 步 - 上传到启动板
cd ..
dput [myppa]/[foo_source.changes]
Run Code Online (Sandbox Code Playgroud)
但是,我现在需要向现有包添加一个新的图标文件(一个 .png 文件)。
所以在第 2 步- 只是复制到 [foo-package]
在第 4 步- 我收到以下错误:
dpkg-source: error: cannot represent change to foo-package/foo-icon.png: binary file contents changed
dpkg-source: error: unrepresentable changes to source
Run Code Online (Sandbox Code Playgroud)
如果我尝试转到第 5 步,则会收到以下附加错误:
dpkg-source: error: …Run Code Online (Sandbox Code Playgroud) 我有一个将自动生成的debian/package.postinst.debhelper文件合并到生成的二进制文件中的包。当我将自己的代码放入文件中时debian/package.postinst,自动生成的文件不再合并到生成的二进制文件中。
如何postinst在不阻止使用自动生成的代码的情况下向生成的包中的文件添加自定义代码?
我正在创建一个配置包,并希望停止并重新启动其配置受到影响的服务。现在我正在使用service [stop|restart]in{pre,post}{inst,rm}方式。我读了一个问题的地方,invoke-rc.d是正确的方法,因为它供奉有关服务的用户的喜好。但是,我找不到任何关于此的指南。有谁知道这样的指导方针?或者对我应该选择哪种方式有什么建议?该软件包供内部使用,并且在未来两年内可能仅适用于 14.04。但是,我想为我的继任者留下一个尽可能干净的状态systemd,我也是这么想的。
Debian 软件包的维护者脚本对 init 脚本的所有访问都应通过invoke-rc.d 完成。
来自 Debian 政策手册,第 9 章,第 3.3 节:
维护者应该使用 update-rc.d 和 invoke-rc.d 程序提供的抽象层来处理包脚本中的 initscripts,例如 postinst、prerm 和 postrm。
...
包维护者脚本必须使用 invoke-rc.d 来调用 /etc/init.d/* initscripts,而不是直接调用它们。
Debian 一直在使用sysv-init,将直接转向systemd,我想政策手册会适时更新以供参考systemctl。但是,我不确定的是:我应该使用invoke-rc.d而不是service吗?我可以说dpkg我对某些文件感兴趣(通过触发器),那么有没有办法告诉dpkg我我也对某些服务感兴趣并开始dpkg重新启动/重新加载?
澄清一下:我不是在写初始化脚本。我提供了一个包含其他应用程序配置的包,如 Puppet、NTP 等,所以我停止并重新启动脚本中的相应服务。
例如,这里是一个关于invoke-rc.dvs的 Docker 问题 …
在哪里可以找到下载.deb文件的位置?
我想在重新安装 Ubuntu 之前复制这个文件夹,这样我就不必重新下载软件包。
我正在运行 Ubuntu 12.10 32 位。
我怎样才能做到这一点?
试图让我的 debian 打包工作如我所愿,我修改了 debian/rules 文件(显示行号)
12 %:
13 dh $@
14
15 override_dh_install:
16 dh_install
17 install -m 644 "My Company's Folder" "debian/mainproject/usr/share/MyCompanyFolder"
error:
.....
dpkg-buildpackage: host architecture i386
dpkg-source --before-build mainproject-1.0
fakeroot debian/rules clean
debian/rules:16: *** missing separator. Stop.
dpkg-buildpackage: error: fakeroot debian/rules clean gave error exit status 2
Run Code Online (Sandbox Code Playgroud) 我很好奇 Ubuntu 是否会为其每个版本“固定”较小的 Python 版本。查看Focal 中的软件包详细信息python3,与其他 LTS 版本相比,例如Bionic似乎坚持使用 Python 3.6。这在任何地方都有记载吗?或者这只是目前的现状?或者我误解了 Ubuntu 软件包?
我确实找到了一个相关的问题,但不完全相同,所以它没有回答我的问题:Pin Python Minor version in Ubuntu 18.04.4 LTS