据我所知,Flutter for linux app只针对snap打包格式。
可以从flutter版本生成.rpm和.deb (跨linux平台)软件包吗?
请发布任何有关如何将flutter-linux应用程序打包为RPM包的帮助
发布于 2021-11-03 20:15:46
构建RPM和DEBs是可行的,但这是一个相当复杂的过程。我将尽可能地概述RPM的基本流程。制作DEB的过程基本相同,但有一些不同之处。现在,我将坚持使用RPM。
最令人头疼的是,要构建包,您需要特定的工具,而这些工具只能在发行版上使用。因此,如果你想做这个跨平台的工作(例如,在ubuntu机器上生成一个RPM ),我们需要使用Docker。
Dockerfile,我们将在其中安装rpm-build包,其中包含构建RPM的所有工具。FROM centos:7
RUN yum install -y -q rpm-buildmkdir -p build/{BUILD,RPMS,SOURCES,SPECS,SRPMS}。这将创建rpmbuildrpmbuild命令的配置文件,并将其放置在build/SPECS目录中。此文件的内容非常特定于包必须执行的操作。RPM非常灵活,可以做很多事情,从复制文件到在目标机器上运行复杂的bash脚本,以便在目标机器上执行编译和执行复杂的安装。这里有一些我发现有用的指南:redhat guide.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.build/RPMS中有一个.rpm文件,在build/SRPMS目录中有一个源包。对于DEB,这个过程几乎是一样的,除了你需要一个debian或ubuntu docker镜像,你使用dpkg-deb命令来构建,你需要一个control文件而不是一个.spec文件(相同的目的,不同的格式)
https://stackoverflow.com/questions/69828408
复制相似问题