问题标签 [snapcraft]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ubuntu - 如何构建运行可执行 jar 的 snap 包?
我有一个可执行的 jar 程序。这是一个JavaFX程序。它在 OpenJDK 8 及更高版本上运行良好。我想在 Ubuntu 的开发者门户中将它作为 snap 包发布。我目前将它打包为 deb 文件,但是,Ubuntu 不接受这些。我需要将其作为快照包提交。
这是我目前的障碍。我对 Snapcraft 完全陌生。我阅读了 http://snapcraft.io上的文档,它很好地概述了终端命令和 snap 包背后的理论。
我似乎仍然无法正确打包我的程序(编码我的 snapcraft.yaml)。我只需要包含的 openjdk-8-jre 依赖项和我的可执行 jar。我创建的 deb 包安装完美,并创建了一个带有图标的桌面文件,以便人们可以从菜单中运行它。有没有办法将它包含在 snap 包中?
感谢您的任何帮助!
snapcraft - Tcl 在 snap 包中找不到 init.tcl
在常规系统中,如果必须,我可以导出库以阻止 tcl 抱怨找不到 init.tcl。我正在构建一个快照包来分发 tcl。一旦构建和安装,我可以运行 tcl.tclsh(这是维护 snap 命名空间的形式),它会抱怨上述抱怨并停留在 tclsh 提示符中。我可以很好地运行 tcl 脚本。但是,我无法执行另一个名为 wish 的二进制文件。这具有快照名称 tcl.wish。这两个都在同一个快照中,并且有问题的文件 init.tcl 存在于库位置 tcl 抱怨找不到。我相信我需要在 tclsh 执行之前导出必要的库位置,以便它可以找到这个文件。我试过这个,包括这些路径的回声,所以我知道它被执行了。这有效,但仍然没有帮助。我想我只是被不止一件事难住了。我不是 tcl pro 并且 snappy 包是新的并且命令总是在不断发展。我可以使用组织命令将所有二进制文件移动到 /bin 并将所有库移动到 /lib,或者我可以将它们完全按照 tcl 的期望放置。我投票赞成将文件按预期放置。我的问题:
- tcl 和 tk 是否有一组明确定义的预期位置?开箱即用的理想设置?
- 我可以将 init.tcl 移动到它知道的路径中的位置吗?我避免将这些库路径放在 bashrc 中,因为这只会解决我的情况,但不会解决在他们的机器上安装它的人。运行快照包时应该进行任何路径设置......我认为。
对不起长度。我想明确表示,无论这是否重要,我们都是在一个活泼的环境中处理 tcl。我知道我错过了显而易见的事情,因为 snapcraft 应该将这些文件放在 .debs 告诉它的位置,并且我在计算机上的安装工作得很好。$ export -p 不显示任何 tcl 或 tk
ubuntu-16.04 - Snapcraft 放置默认配置文件
我正在尝试使用Snapcraft.io构建应用程序版本,并且几乎所有工作都已完成。
Snapcraft 已经编译了源代码,生成了 .snap 文件,包含了所有的依赖,等等。
但是,我被困在如何SNAP_USER_DATA
在第一次安装应用程序后初始化文件夹中的一些配置文件。
我不想将文件放在默认的只读路径SNAP
中,因为默认参数应该由用户修改,我还需要生成一些额外的文件,比如服务器证书。
所以我需要复制一些文件,并在第一次安装后运行一个脚本。
这可能吗?
谢谢。
python - 将 python venv 部署为 snap
我们有一个 python(3) venv rest api。在同一个 venv 中,我们还安装并配置了uwsgi
运行 api 的应用程序服务器。我们正在寻找一种干净的方式来部署它。
到目前为止,我们正在部署的是一个简单的脚本,它创建 venv 从 pip 安装依赖项,然后运行应用程序。
我想知道使用 snap 是否可以很好地打包所有内容并简单地将它们安装在服务器上。
以这种方式部署 Web api 是否可能或一种好的做法?
谢谢你的时间。
linux - 如何使用 snapcraft 提取要打包的二进制文件的库依赖项
我正在尝试新的 linux 打包工具http://snapcraft.io/create/
它确实有一些文档,但不是很成熟,也不包含所有内容。
我要做的是为我的二进制文件生成一个包,该包是使用 Qt 框架编译的,因此它依赖于 .so 文件的加载。我在文档中找不到任何方法来说服 snapcraft 提取所有这些依赖项并将它们添加到程序层次结构(已安装的 squashfs)中。
因此,为了“暂时解决这个问题”,我破解了一个非常蹩脚的 shell 脚本,它在我的二进制文件上执行 ldd 并自行执行此操作。这种“有点”有效,因为现在确实所有必要的库都在图像中,但是程序找不到它们,因为它们中的大多数都有自己的路径并且不在根 lib 文件夹中/usr/lib
我尝试启动程序时遇到的错误示例是:
但是图书馆在那里:
它只是不知道如何找到它。另一方面,鉴于 snapcraft 被宣传为很棒的简单愚蠢的打包工具,我觉得很奇怪,像打包 C++ 二进制文件这样简单的事情会如此复杂。我应该如何正确地做到这一点?
python - Snapcraft python only packages dependencies, not app?
I have a pretty standard python application, including setup.py
and requirements.txt
, which installs fine with pip
:
I'd like to use snaps to build and deploy the application, and noticed that snapcraft
only installs my app's dependencies, but not the app itself. It does build a wheel, but does not install it:
Does anyone know why myAPP
is not part of the pip install?
For reference, the snapcraft.yaml
is super simple at this stage, but I think should be all that's needed. Snapcraft is v2.27.1
on Ubuntu 16.04
Progress
I checked what packages are installed after building the application:
If I then manually re-run pip install -U myAPP
, it does get included into site-packages
. Will see if I can repeat the other build steps separately.
snapcraft - 如何在快照上下文之外从快照应用程序启动外部程序?
在 vala 中,我正在启动这样的基本操作系统设置:
但这失败了,因为我假设该过程以某种方式隔离运行。
有什么想法可以正确启动这个外部程序吗?
linux - 使用 snap 安装包后出错
我使用snap包管理器安装包,但我总是遇到同样的错误,即使是简单的 hello world 示例:
运行 withsudo
解决了hello
程序的问题,但为什么我什至需要这样做sudo
?
顺便说一句,对于其他软件包(Meshlab、CloudCompare),它也不能使用sudo
并给出不同的错误。例如:
snap 版本和 Ubuntu 发行版是:
snapcraft - Snapcraft 自定义 LD_LIBRARY_PATH
构建 snap 包时,包装脚本会自动添加$SNAP/usr/lib
到LD_LIBRARY_PATH
.
在 docker 上构建我的包时,一些库(在本例中为liblapack
和libblas
)分别安装在子目录中:$SNAP/usr/lib/lapack
和$SNAP/usr/lib/libblas
。
尽管所有依赖项都stage-packages
在我的 snapcraft.yaml 中定义,但上面的路径不包含在包装脚本中。
如何强制 snapcraft 自动将所有库的路径添加到包装脚本?
alpine - 在 AlpineLinux 上 snapcraft 的可用性
我一直在寻找 snap 包管理系统和 alpine linux 之间的兼容性,但找不到任何相关资源。有没有计划让它在 alpine linux 上可用?在这方面有什么进展吗?