首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以从flutter linux应用程序生成linux .rpm包吗?

可以从flutter linux应用程序生成linux .rpm包吗?
EN

Stack Overflow用户
提问于 2021-11-03 16:26:04
回答 1查看 104关注 0票数 1

据我所知,Flutter for linux app只针对snap打包格式。

可以从flutter版本生成.rpm.deb (跨linux平台)软件包吗?

请发布任何有关如何将flutter-linux应用程序打包为RPM包的帮助

EN

回答 1

Stack Overflow用户

发布于 2021-11-03 20:15:46

构建RPM和DEBs是可行的,但这是一个相当复杂的过程。我将尽可能地概述RPM的基本流程。制作DEB的过程基本相同,但有一些不同之处。现在,我将坚持使用RPM。

最令人头疼的是,要构建包,您需要特定的工具,而这些工具只能在发行版上使用。因此,如果你想做这个跨平台的工作(例如,在ubuntu机器上生成一个RPM ),我们需要使用Docker。

  1. 创建一个Dockerfile,我们将在其中安装rpm-build包,其中包含构建RPM的所有工具。

代码语言:javascript
复制
FROM centos:7

RUN yum install -y -q rpm-build

  1. 构建这个dockerfile并记住docker镜像,我们将需要它来执行下面的命令mkdir -p build/{BUILD,RPMS,SOURCES,SPECS,SRPMS}。这将创建rpmbuild
  2. Create .spec文件所需的目录结构,该文件是rpmbuild命令的配置文件,并将其放置在build/SPECS目录中。此文件的内容非常特定于包必须执行的操作。RPM非常灵活,可以做很多事情,从复制文件到在目标机器上运行复杂的bash脚本,以便在目标机器上执行编译和执行复杂的安装。这里有一些我发现有用的指南:redhat guide.
  3. Download,fedora guide和down.
  • docker run --rm -v $(pwd)/build:/rpmbuild {name of image}你想打包的文件,它们通常是以tarball的形式分发的,并将其放在tarball文件中。我们可以执行以下命令,我将中断命令package guide:我们从之前创建的镜像启动一个容器,并挂载.spec和.tar.gz所在的docker run --rm -v $(pwd)/build:/rpmbuild {name of image} /bin/bash -c "cd /rpmbuild && rpmbuild --define '_topdir /rpmbuild' -ba SPECS/flutter.spec"目录,这样容器就可以看到它们。--rm在我们完成后清理容器,因为我们在第一个command.
  • /bin/bash -c之后不需要它-这是一个技巧,因为我们需要在docker容器内执行2个命令,如果我们不这样做,我们的外壳将认为docker命令之后的意思是RPM,而不是传递到RPM-移动到挂载的build目录并构建RPM包。-ba选项告诉rpmbuild构建二进制和源包,以防您希望源包在well.
  1. If一切顺利的情况下运行您现在应该在build/RPMS中有一个.rpm文件,在build/SRPMS目录中有一个源包。

对于DEB,这个过程几乎是一样的,除了你需要一个debian或ubuntu docker镜像,你使用dpkg-deb命令来构建,你需要一个control文件而不是一个.spec文件(相同的目的,不同的格式)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69828408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档