【问题标题】:Ubuntu snap plugin 'autotools' default 'make install' to be skipped while building with snapcraft使用 snapcraft 构建时要跳过 Ubuntu snap 插件“autotools”默认“make install”
【发布时间】:2017-11-22 19:54:44
【问题描述】:

我正在为我的项目构建一个 snap 包,我有一个我只想编译的库。即只有/configure && make 不是:/configure && make && make install

当我在 Ubuntu snap 中搜索它的文档时,我发现:https://snapcraft.io/docs/reference/plugins/autotools

也在这里搜索过:https://github.com/search?o=desc&q=filename%3Asnapcraft.yaml+%22plugin%3A+autotools%22+&s=indexed&type=Code&utf8=%E2%9C%93

但我找不到任何可以跳过make install 部分的内容。谁能建议我怎么做?在make install 之后可能是一种肮脏的方式,我将添加一个shell 脚本来递归删除make install 生成的文件,然后继续进行应用程序代码编译。但我认为应该有一个很好的方法来做到这一点。 所以请让我知道当我运行snapcraft 来构建快照包时是否有任何方法可以跳过这个make install

【问题讨论】:

  • 我对snap不太熟悉,但是我做过很多其他格式的打包,你的建议听起来很可疑。通过跳过make install,您希望完成什么?在这种情况下,您认为包装中会包含什么?因为我的第一个猜测是“什么都没有”。
  • 我只想编译它,我会将编译后的库与我的代码链接,然后我会安装它。我也不想安装库二进制文件。这就是我想要达到的目标。 lib 的 make install 会将库二进制文件安装到特定文件夹中,该文件夹也打包到该快照中。我不想那样做。希望我能够解释“可疑”部分
  • 您似乎在针对系统工作。将库(-ies)构建为 shared 库是很自然的,即使它们专用于您正在打包的应用程序,并动态链接它们。在这种情况下,您确实需要打包库二进制文件。该模型通常很常见,并且似乎是 snap 的特别目标。
  • 如果您要静态链接应用程序,则不需要 snap。它与大多数其他打包格式的主要区别在于它将依赖项(即共享库)与需要它们的应用程序一起打包。
  • @JohnBollinger 反对系统?并不真地。我不希望该库成为共享库。我只想将我的应用程序作为一个 snap 应用程序编译和发布。我可以通过肮脏的黑客来做到这一点。但我想以更好的方式做到这一点。我只是想知道如何通过 snap 方式完成。

标签: ubuntu autotools snapcraft


【解决方案1】:

我通过试错法得到了答案。解决办法是:

artifacts: [.]

在 snapcraft.yaml 文件中。根据文档,它使默认的 make install 跳过。我把它保持为零,但没有工作。但是这个工作得很好,permision denied 错误也消失了(snapcraft 想安装在系统中,因此 sudo 是那里的解决方案)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 2018-08-28
    • 1970-01-01
    • 2013-11-23
    • 2017-02-17
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多