【问题标题】:Problems using debuild to upload a python/GTK program to Launchpad使用 debuild 将 python/GTK 程序上传到 Launchpad 的问题
【发布时间】:2020-12-03 00:04:53
【问题描述】:
[更新,我找到了解决办法,请看下面的答案]
我为 protonvpn 制作了一个 GUI 包装器,这是一个用于 Linux 的 cmd 程序。 dpkg -b 得到我 ProtonVPNgui.deb,效果很好。但是,我使用debuild -S -sa 将其上传到Launchpad 时遇到问题。
-
照原样,一旦使用dput 上传,它就不会构建,参见。 error msg
-
我尝试使用debuild -i -us -uc -b 构建一个用于本地测试的 .deb 文件,但它返回:
dpkg-genchanges: error: binary build with no binary artifacts found; cannot distribute
有什么想法吗?这整个过程让我发疯。 (我用这个tar.gz)
【问题讨论】:
标签:
python
package
debian
dpkg
launchpad
【解决方案1】:
我自己想通了。在本地创建一个 .deb 包进行测试并将项目上传到 Launchchpad:
-
创建启动板用户account。
-
使用包管理器安装 dh-python
-
创建包源目录
mkdir myscript-0.1
-
将您的 python3 脚本(或下面的示例脚本)复制到源目录(不要使用 !/usr/bin/python,使用 !/usr/bin/python3 或 !/usr/bin/python2 并在下面进行相应编辑)
cp ~/myscript myscript-0.1
cd myscript-0.1
示例脚本:
#!/usr/bin/python3
if __name__ == '__main__':
print("Hello world")
-
创建打包骨架(debian/*)
dh_make -s --createorig
-
删除示例文件
rm debian/*.ex debian/*.EX debian/README.*
-
添加最终的二进制文件以包含,例如获取文本 .mo 文件
mkdir myscript-0.1/source
echo debian/locales/es/LC_MESSAGES/base.mo > myscript-0.1/source/include-binaries
-
编辑 debian/控件
将其内容替换为以下文本:
Source: myscript
Section: utils
Priority: optional
Maintainer: Name,
Build-Depends: debhelper (>= 9), python3, dh-python
Standards-Version: 4.1.4
X-Python3-Version: >= 3.2
Package: myscript
Architecture: all
Depends: ${misc:Depends}, ${python3:Depends}
Description: insert up to 60 chars description
insert long description, indented with spaces
-
debian/install 必须包含要安装的脚本(或几个,python,perl 等,还有用于开始菜单快捷方式的最终 .desktop 文件)以及目标目录,每个目录都在一行
echo myscript usr/bin > debian/install
-
编辑 debian/规则
将其内容替换为以下文本:
#!/usr/bin/make -f
%:
dh $@ --with=python3
注意:在 dh $@ 之前是一个制表符,而不是四个空格!
-
构建 .deb 包
debuild -us -uc
你会收到一些 Lintian 警告/错误,但你的包已经可以使用了:
../myscript_0.1-1_all.deb
-
准备上传到 Launchpad,在 -k 后插入你的 gdp 指纹
debuild -S -sa -k12345ABC
-
上传到启动板
dput ppa:[your ppa name]/ppa myscript_0.1-1_source.changes
这是对askubuntu.com/399552 的更新。在您准备好之前,可能需要一些错误消息和谷歌搜索...... C.f. launchpad 的 ...orig.tar.gz 文件,用于完整项目。