问题标签 [packaging]

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.

0 投票
1 回答
245 浏览

linux - Debian 软件包创建错误

我正在尝试构建一个 Debian 软件包,但我遇到了这个奇怪的伪目录问题。我跑:

我之前已经构建了二进制文件,但是我的系统上肯定发生了一些变化。现在 dh_md5sums 出错并返回:

的确,include是一个目录。因此,我在 dh_md5sums 中添加了一些调试语句,以找出为什么include会被散列,尽管应该过滤掉目录的行。添加:

表明,include当 dh_md5sums 运行时,它确实不是一个目录:

那么,我可以删除它吗?我补充说:

并得到:

也许它......变成了一个目录?我ls -l在下面添加了另一个rm并得到:

当脚本运行完毕后,我可以这样做:

...这很奇怪,因为它include变成了一个目录并且所有权发生了变化(x是我的用户名)。 include甚至包含它应该包含的所有头文件。

有谁知道发生了什么?

0 投票
3 回答
2515 浏览

c# - 为 .NET 应用程序创建单个文件安装程序

我的 .NET 应用程序的安装程序包含两个文件 MyApp.msi 和 setup.exe。我想要一个带有指定图标的安装程序 MyApp.exe(自解压存档就可以了)。我怎样才能做到这一点?有没有可用的免费工具?

0 投票
5 回答
6783 浏览

python - 在 Python 中组合模块文件

有没有办法将 Python 文件放在一起,类似于 Java 中的 JAR?我需要一种打包 Python 类和函数集的方法,但与标准模块不同,我希望它位于一个文件中。

0 投票
5 回答
12434 浏览

python - 如何打包命令行 Python 脚本

我创建了一个旨在从命令行使用的 python 脚本。我该如何包装它?这是我的第一个 python 包,我读过一些关于 setuptools 的内容,但我仍然不确定最好的方法。


解决方案

我最终使用了setup.py和下面提到的关键配置:

这是上下文中的一个很好的例子

0 投票
6 回答
3615 浏览

python - 如何让 setuptools 忽略颠覆清单?

当使用 setup.py 打包 Python 包时,使用 setuptools:

由以下人员创建的源分发:

不仅像往常一样包括在 MANIFEST.in 中指定的文件,而且还无偿地包括 Subversion 列出的所有文件,这些文件在包目录下被版本控制。这非常烦人。不仅难以对与我的包一起分发的文件进行任何形式的显式控制,而且这意味着当我按照“svn export”而不是“svn checkout”构建包时,我的内容包可能完全不同,因为没有 .svn 元数据 setuptools 将对包含的内容做出不同的选择。

我的问题:我如何才能关闭这种可怕的行为,以便“setuptools”以同样的方式对待我的项目,无论我使用的是 Subversion,还是从未听说过的版本控制,还是使用“svn export”创建的裸树,我'已经在我的项目结束时创建以确保它在我的工作目录之外的某个地方干净地构建?

到目前为止,我所管理的最好的是一个丑陋的猴子补丁:

但这是 Python,而不是丛林,所以我当然想要一个完全不涉及猴子的更好的解决方案。我怎样才能驯服 setuptools,关闭它的魔力,并通过查看 MANIFEST.py 中可见的、可预测的规则来让它表现得明智?

0 投票
1 回答
4720 浏览

java - 如何在一个 Maven 项目中打包多个 WAR 文件?

我正在编写一个将Geoserver与自定义组件集成的应用程序,旨在托管在单个 servlet 引擎上。两者都是基于 Maven 的项目,我想留在 Maven 的土地上,将它们全部打包成一个很好的可分发文件。我的总体想法是向我的应用程序添加另一个模块,将应用程序本身、Geoserver 和所有依赖项打包到一个不错的存档中。

我知道 maven-assembly-plugin 及其将所有依赖项存储在目标文件夹中的能力,但我不确定创建易于部署的包的最佳方法是什么。谷歌搜索任何示例都没有成功。

如果模块可以通过mvn jetty:run.

0 投票
4 回答
386 浏览

java - 托管 Java Web Start 应用程序以包含在 Linux 发行版中

我编写了一个 Java 免费软件(封闭源代码)产品,我将其部署在 Web 主机上并通过 JNLP 分发,包括 Linux 客户端。

如果可能的话,我计划建议将该产品包含在几个 Linux 发行版中,“按原样”(基于 JNLP)。

我是否已经联系发行版,或者我需要重新配置某些东西(在另一台主机上部署,将 JNLP 转换为某些东西等)?你的经验是什么?

0 投票
1 回答
338 浏览

bison - 将生成的文件添加到分发的最佳方法?

我有一个使用 autoconf / automake 的非常复杂的(C++)项目,其中包括一些“生成的”文件(foo.yy -> foo.cc)。实际构建是使用“控制脚本”(Gentoo .ebuild 对于那些熟悉该概念的人)在各种平台上完成的。

现在,其中一个目标平台不正确支持 foo.yy -> foo.cc 步骤,必须使用在 Linux 机器上生成的 foo.cc 文件。

现在我有两种方法可以解决这个问题:

1) 将 foo.cc 签入项目存储库,并以某种方式修补 configure.in(或其他)以包括对 foo.yy / foo.cc 的时间戳检查,如果在有问题的目标上运行时会生成一个可理解的错误消息,并且过时foo.cc;

2) 将 foo.cc 签入到控制脚本库中,并有脚本控制时间戳并给出错误消息。

我可以做 2) 没问题,但我认为这不是放置 foo.cc 的正确位置。

另一方面,我对 autoconf / automake 了解不多,也不知道如何在 configure.in (或任何地方)中实现时间戳检查 / 错误消息。

您有什么建议,这里有人知道如何解决解决方案 1)吗?

编辑:使用解决方案 3) 解决,调整有问题的目标框,直到它能够自己执行 foo.yy -> foo.cc 步骤。我的问题解决了。

但我会留下这个问题 - 如何使用 autoconf / automake 进行时间戳检查 / 可理解的错误消息?

0 投票
2 回答
1978 浏览

algorithm - Packaging Algorithm

I've got a set of items, with associated attributes (Weight, Length, Width). I've also got a set of Packaging Types, with associated attributes (Max Weight, Length, Width)

I'm looking for an algorithm to determine the LEAST amount of boxes to package the items into.

So far, I've explored the knapsack problem, and although it can come close, I'm not exactly dealing with a weight, value type problem.

Here's an example:

Items: 10 x Item #1, (1lb each, 24" long, 12" wide) 5 x Item #2, (2lb each, 24" long, 6" wide)

Packaging Types: Small Box (MaxWeight = 40lbs, 24"x12") Large Box (MaxWeight = 75lbs, 24"x24")

The possible ways to package this would be: 2x Small Box -> One for each item type 1x Large Box -> Everything in it

I would want to return the single box result, although if I could return all possible combinations, that would also work.

0 投票
1 回答
93 浏览

sql-server - 将 SQLServer 数据库与应用程序一起分发的正确方法是什么?

多年来,我看到了很多方法:

  • 打包分离的数据库文件
  • 打包备份,在安装时恢复
  • 使用脚本从头开始创建数据库

在我看来,第 3 个选项,从头开始创建一个新数据库,从脚本构建数据结构并使用脚本填充任何静态数据是最好的方法。它是可重复的,并且应该始终有效。

这个问题也适用于其他 dbms。