Snapcraft 基于操作系统的不同安装要求

Snapcraft 基于操作系统的不同安装要求,snapcraft,Snapcraft,我继承了一个python项目,该项目正好由1个python文件组成,设计用于在Linux上安装和运行。我对python知之甚少,对Linux知之甚少 目前Ubuntu、Fedora和Arch有单独的构建过程,分别生成一个DEB文件、一个RPM文件和一个PKG.TAR.XZ文件。然后,用户需要根据其系统经历不同的安装过程 我的首要任务之一是为我们的用户整合和简化这个过程。经过调查,这似乎是一个很好的解决方案。快照存储区似乎需要 不过,我的每种构建类型都取决于不同的需求。例如,DEB和RPM需要py

我继承了一个python项目,该项目正好由1个python文件组成,设计用于在Linux上安装和运行。我对python知之甚少,对Linux知之甚少

目前Ubuntu、Fedora和Arch有单独的构建过程,分别生成一个DEB文件、一个RPM文件和一个PKG.TAR.XZ文件。然后,用户需要根据其系统经历不同的安装过程

我的首要任务之一是为我们的用户整合和简化这个过程。经过调查,这似乎是一个很好的解决方案。快照存储区似乎需要

不过,我的每种构建类型都取决于不同的需求。例如,DEB和RPM需要
python3 sud
,而ARCH需要
python sud
。ARCH和RPM想要
libappindicator-gtk3
,但DEB想要
gir1.2-appindicator3-0.1
gir1.2-gtk-3.0

我找不到明显的方法将这些条件要求包含在我的setup.py
install\u requires
属性中。你将如何着手实现这一点?还是说,我完全走错了方向

当你回答时,请记住我是新手!谢谢

首先,您可以检查它是否类似于Snap。只是稍微好一点


在使用Snap或Flatpak时,您不关心是需要python软件还是需要python软件。结果基本上是一个容器。您只需选择一个在其上构建的运行时,并在那里求解DEP。然后容器(无论是Flatpak的Snap)在每个操作系统上运行——无论是Ubuntu、Fedora还是Arch。它与包管理工具没有任何关系。它是孤立的。

经过大量研究后,我发现,由于snap应用程序都是在Ubuntu VM上构建的,所以只需包含所有Ubuntu依赖项,snap过程就会将这些依赖项捆绑到应用程序中。该应用程序将在任何Linux版本上运行。因此,我没有必要尝试在
install\u requires
中编写条件依赖项。我所需要做的就是包含Ubuntu依赖项

通过这次非常有用的演练,我终于得出了这个结论,我自己的测试也证实了这一点:


我希望这对其他人有所帮助。

从外观上看,这与Python或setuptools没有多大关系。您命名的依赖项不是Python依赖项,从某种意义上讲,在setuptools
install\u requires
中列出这些依赖项不会让您有任何收获,它们并不指可从中安装的Python项目。但它们似乎是应该从操作系统(Linux发行版)自己的包管理器(
apt
pacman
等)安装的依赖项。听起来正确吗?中华民国,是的,如果我理解你的意思,听起来正确。那你建议我怎么处理?不确定。似乎存在一个依赖项,因此可能可以将此依赖项添加到setuptools
install\u requires
。我认为其他的都在Python生态系统之外,所以我不知道如何声明它们。但我改变了标签,希望能吸引具有这种知识的用户。Flatpak限制了对其他流程的访问。我的应用程序需要这个访问权限。除此之外,我不明白你建议我做什么,关于我必须处理的条件依赖性。。。?