问题标签 [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.
.net - 使 .NET 配置环境中立
我想了解有关使 .NET 应用程序配置环境中立的最佳实践的一些想法。
背景。先来点背景。我来自 Java 世界,而不是 .NET 世界,在 Java 中,我们可以做一些事情来构建环境中立的包。它们通常基于以某种方式抽象配置。这里有一些例子:
- JNDI 允许应用程序通过名称引用企业资源(例如,数据库、JavaMail 会话、JCR 存储库等),然后根据环境(dev、test、prod)将该名称映射到特定的配置。
- 另一个例子是属性文件。您可能有一堆属性(例如,“encryption_key”、“smtp.server.url”、“admin.email”等),应用程序在启动时会从已知位置的属性文件中获取这些属性。属性键再次根据环境映射到不同的值。
- 一些应用程序开发框架(如 Spring)知道如何拉入属性文件,以便可以将属性与框架配置集成。
我在 Java 中看到的另一种方法是构建时方法,您可以使用 Ant(令牌替换)或 Maven(构建配置文件)来构建特定于环境的包。我不太喜欢这种方法,因为我非常喜欢部署完全相同的包来测试和生产。但这是我见过的一种方法。
所需的解决方案。我假设在 .NET 中有一些类似的策略可以将配置(以及扩展包含的包)与其环境解耦。
理想情况下,我想要一个解决方案,允许我保持与应用程序密切相关的非环境配置,仅外部化环境内容。回到 Java 示例,很多时候“配置”实际上是开发人员控制的东西,例如包含用于页面装饰的 Sitemesh servlet 过滤器、依赖注入或应用程序连接、映射某某 MVC 控制器方法到请求 URI 等。我不想被外部化的东西。但是加密密钥、数据库连接字符串、日志级别等等,是的。
python - 如何在不依赖 SCM 的情况下处理 Python 包的开发版本?
Pinax 开发过程中出现的一个问题是处理外部应用程序的开发版本。我正在尝试提出一个不涉及引入版本控制系统的解决方案。原因是我宁愿不必在我的系统上安装所有可能的版本控制系统(或强加给贡献者)并处理环境创建期间可能出现的问题。
拿这种情况来说(知道 Pinax 是如何工作的,会有利于理解):
我们正在开始开发新版本的 Pinax。以前的版本有一个 pip 要求文件,其中设置了明确的版本。我们希望解决的外部应用程序出现错误。要在 Pinax 中修复该错误,当前流程是简单地制作应用程序的次要版本,假设我们可以控制该应用程序。我们无法控制的应用程序我们只是处理应用程序作者的发布周期或强迫他们发布 ;-) 我不太喜欢不断地发布小版本来修复错误,因为在某些情况下我想成为也在为应用程序开发新功能。当然,分支旧版本是我们所做的,然后根据需要进行反向移植。
我很想听听对此的一些想法。
java - 使用 Maven 在 jar 中包含依赖项
有没有办法强制 maven(2.0.9) 将所有依赖项包含在一个 jar 文件中?
我有一个项目构建成一个 jar 文件。我也希望将依赖项中的类复制到 jar 中。
更新:我知道我不能只在 jar 文件中包含一个 jar 文件。我正在寻找一种方法来解压缩指定为依赖项的 jar,并将类文件打包到我的 jar 中。
python - 将程序*和*动态加载的文件打包成单个可执行文件?(python + pygame,或与语言无关)
关于制作独立可执行文件的问题有很多很好的答案,但我不知道如何将艺术资产(或动态加载的文件)打包到其中。我为什么要这样做?因为分发一个完全存在于一个没有安装程序的单个可执行文件中的简单(丢弃)游戏会很棒。
据我从搜索中可以看出,有两种基本方法。
1) 避免使用有利于内容生成的艺术资产。我可以有一个程序,将一个简单的精灵变成一个存在于 python 脚本中的 RLE 像素颜色列表。由于它是一个脚本,它会通过打包工具绑定到 exe 中。对?
2)使用某种自解压存档,可以将目录结构转储到临时目录(或者可能转储到内存中?),然后自动运行程序的入口点。
我想做的事情有意义吗?第二种选择似乎更加明智,但我不确定使用 python 和 pygame 可以使用哪些工具来完成它。我用过py2exe,但它只打包了python脚本和导入的模块。
编辑:
该线程使我认为您可以告诉打包实用程序将程序数据与依赖项一起包含在内。真的吗?
c# - 跟踪我的程序安装位置的最简单方法是什么?
在我处理它时,我将应用程序的位置硬编码:
显然,一旦我打包和分发我的应用程序,这将不起作用。如何跟踪它的安装位置?
我主要关注 linux 打包(特别是 .deb),但我计划将此作为练习来学习 Windows 和 Mac 打包,因此欢迎所有提示。
c# - 如何使用 MonoDevelop 打包我的 linux 应用程序?
我有一个使用 MonoDevelop 用 C# 编写的爱好项目。一段时间以来,我一直在尝试了解 linux 封装,但我总是感到沮丧和不知所措。
我的程序包括:
- 一个库项目(“生成器”),它处理我的程序创建的数据。
- 使用 Gtk# 的 ui(“接口”)项目。这个项目有两个子目录:“glade”(gtk 用来构建小部件的 xml 文件)和“book”(我的程序使用的数据)。
- 库和接口项目都使用的实用程序项目(“Utils”)。
- 一个刚刚启动界面的主项目(“MyProgramName”)。
我想做的(我认为)真的很简单(我认为):
- 编译我的应用程序
- 复制 .exe 和 .dll 文件(到 /usr/local/bin?)
- 复制“book”目录(到 /usr/local/bin?)
- 复制“glade”目录(到 /usr/local/bin?)
哦,我想把它作为一个 .deb 包来做。我想如果我能让 tarball 工作,一个 .deb 包应该不会太麻烦,但这就是我最终想要做的。
我仍然不确定该怎么做。我使用 MonoDevelop 创建了一个 Tarball。当我安装 tarball(使用./configure
, make
, sudo checkinstall
)时,它似乎安装了可执行代码(甚至创建了一个运行程序的命令),但忘记了“book”和“glade”目录。
我该怎么做呢?对不起,如果这是一个基本/广泛的问题。我一直在谷歌上搜索这个,我似乎找不到任何不假设我知道包装基础知识的东西(即使它声称它不假设这个)。
linux - .deb 包配置文件问题
我正在使用 .deb 包分发我的一个应用程序,但遇到与其中一个文件有关的问题。
该发行版包括一个由应用程序不断更新的数据库文件,在全新安装时,我希望安装程序将新的空 db 文件复制到用户系统上,但在升级时,我希望安装程序保留现有副本(覆盖它会导致所有用户数据丢失)。
目前我已将该文件包含在“conffiles”文件中,因此安装程序总是询问用户是否覆盖现有文件,但这不是我想要的行为 - 覆盖文件永远不是正确的做法,并且我担心用户可能会在升级过程中选择错误的选项并处理他们的数据。
有什么方法可以告诉安装程序,如果 db 文件已经存在,请不要管它,不要问用户该怎么做?
debian - 将您自己的软件导入 Debian 和 Fedora 的最佳途径是什么?
假设我能够遵循打包指南并弄清楚如何制作有效的 .deb 和 .rpm,我怎样才能让发行版真正包含我的软件?
首先最快/最简单的方法是什么,其次是最合适/官方的方法是什么?
如果我的软件依赖于其他人的没有包的库怎么办?然后我有责任包装这些吗?
unix - 如何为 solaris 创建安装程序
我已经为我的应用程序创建了 rpm 文件。它适用于 Fedora linux。同样适用于 linux mint。但是 Solaris 不支持 rpm。那么如何为 solaris OS 创建安装程序包。我有 solaris 10 linux 作为操作系统。
谢谢 Sunil Kumar Sahoo
installation - Java程序的打包和分发
我需要一种将 Java 程序打包并分发到远程设备的方法。Web Start 并不理想,因为它只分发 Jars 并且需要 Web Server。我需要在安装过程中分发和运行脚本,并且需要一些其他类型的文件。