在阅读有关NPM,Yarn,Paket,Cargo等软件包管理器的信息时,我最近被引入了依赖版本锁定文件的概念。我的理解是,它是一个文件,其中列出了所有直接和可传递的依赖关系以及它们的确切含义。版本号,因此可以确保以后的版本使用等效的一组依赖关系。这似乎是一个理想的功能,因为许多程序包管理器已经或正在采用该概念。
我的问题是:
为什么Maven或Gradle不使用锁定文件?或者,如果这样做,我为什么还没有看到呢?
在包管理器的依赖关系解决方案策略中允许版本范围与仅允许确切版本相比,其优缺点是什么?
我想避免在默认环境中"意外"工作.
我希望总是有一个等效的文件requirements.txt或package.json文件,既可以清楚地将一个项目与另一个项目分开,也可以让我轻松回顾一下安装的内容(以及它的版本).
但我主要在数据科学/分析领域工作,主要是使用Python.
因此,我使用Anaconda,pip和Homebrew(我有一台Mac).依靠一个包管理器会很棒,而且许多人都支持一种或另一种方法来实现这一目标.事实是,截至目前(2018年9月),不可能在任何广泛的主题中工作,并至少避免一些混合.
让我的目标更低,更现实,我只想确保尽可能没有默认环境,使其更清洁,更容易与他人合作.
据我所知,Homebrew中根本没有环境概念.Conda当然有环境,但它首先设置一个默认环境,然后才能创建其他环境.
有没有办法在没有任何默认环境的情况下安装Anaconda ,这样我将永远不得不这样做source activate <my_env>?如果是这样,我该怎么做?
除此之外,有什么最好的建议可以实现我想要的,哪些是在我不清楚我的依赖关系是什么的环境中从不会意外地工作,认识到我主要谈论但不仅仅是关于使用Python?
(请不要建议我在安装包装时"要小心".是的,我理解.但是我试图先做出选择,尽可能做出错误或不可能的错误选择.如果我有的话例如,没有默认环境,pip直到我采购环境才会工作,因为在我的正常环境中找不到它.)
我有很多JS 片段和文件在多个项目中共享.我必须将它们复制到每个项目的单个文件中,或者将它们作为cdn上的单个文件提供.两者都是坏主意.
是否有任何依赖管理和构建工具,如Maven for JavaScript?理想情况下,它需要一组js依赖项并构建一个可以在cdn上提供的单个js文件.
我可以写一个脚本来做到这一点.但是我想找出是否存在与Maven相当的东西.
2014年更新:基于此处的答案,以下我的研究是最受欢迎的工具:
Bower,NPM,RequireJS,Browserify,Webpack,Grunt,Gulp
我试图将Nuget用作软件部署系统(存储库,版本控制和交付) - 来自Octopus的想法.以前我将ASP.NET站点打包成一个自解压的RAR档案,其中嵌入了.CMD启动脚本.现在我正在尝试使用Nuget在自动构建期间创建puckages.问题是如果使用命令行安装软件包,则不会执行软件包安装脚本(tools\Install.ps1或tools\Init.ps1):
nuget.exe install <package_id> -OutputDirectory <install_folder> -source <local_repo>
Run Code Online (Sandbox Code Playgroud)
从Visual Studio包管理器或控制台安装包时,可以执行相同的脚本.
鉴于PowerShell无处不在,我不明白为什么这不可能实现.
我错过了什么或这是设计行为?非常感谢你的帮助.
是的,我们确实考虑过MSDeploy,但是我们已经安装了相同的安装脚本并提供了更多控制,我们需要一些强大的包管理和存储库来构建工件(Java人员使用Maven做的事情).
我正在尝试使用名为GLV的小部件库来处理我正在开发的应用程序.我正在运行Linux Mint 17.我安装了所有库,并且我已经成功构建了GLV库,但是当我尝试运行其中一个构建的示例时,我得到了这个共享库错误.
Inconsistency detected by ld.so: dl-version.c: 224: _dl_check_map_versions:
Assertion `needed != ((void *)0)' failed!
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我找出共享库中的不一致来自哪里?
在README文件中,它说
GLV requires only OpenGL, GLU, and GLEW (Linux only). There are
no other dependencies, unless a window binding is used, such as GLUT."
Run Code Online (Sandbox Code Playgroud)
当我从源代码安装GLEW时,它会打印一份已安装的文件列表.
$ sudo make install
install -d -m 0755 /usr/include/GL
install -m 0644 include/GL/wglew.h /usr/include/GL/
install -m 0644 include/GL/glew.h /usr/include/GL/
install -m 0644 include/GL/glxew.h /usr/include/GL/
install -d -m 0755 /usr/lib64
install -m 0644 lib/libGLEW.so.1.8.0 /usr/lib64/
ln …Run Code Online (Sandbox Code Playgroud) 我想通过使用PackageInfo将Application中的所有活动作为列表.请告诉我有没有办法做到这一点.
提前致谢.
我正在编写一个应用程序并导入一些包B.这个包的vendor目录里面包含了包C.我也想C直接在我的应用程序中使用该包.
所以我决定使用glide包管理器.这两种下载B和C进入myapp/vendor目录,但保持myapp/vendor/B/vendor/C里面.因此,当我构建我的应用程序时,它构建了两个不同版本的C(也有myapp/vendor/C).
怎么避免呢?
1)是否有一个包管理器来处理它?govend似乎与它的--prune论点,但它不尊重这些C包的版本.
2)或者,如何glide正确处理嵌套vendor目录?
编辑
我的例子是https://github.com/orloffm/flat.它使用cat和 - 间接 - toy包.cat有一些旧版本的toyvendored并提交到存储库.我这样做glide create && glide install并最终结果如下:
.
??? flat.go
??? glide.lock
??? glide.yaml
??? vendor
??? github.com
??? orloffm
??? cat
? ??? cat.go
? ??? vendor
? …Run Code Online (Sandbox Code Playgroud) 我在大约20个其他开发人员的团队中工作.我们所有的项目都使用npm软件包,目前我们所有的开发人员都在运行npm来管理这些软件包.我对Yarn非常好奇,并且现在已经在我的机器上安装了它.但是,我很担心实际使用它来安装软件包,以防它为其他开发人员搞砸了一个项目.
我的问题是,一个开发人员可以在项目中使用Yarn而其他开发人员在同一个仓库中使用npm吗?根据我的阅读,Yarn使用相同的package.json文件来获取其依赖项.我们忽略了repo中的node_modules,但是我们npm shrinkwrap用来锁定依赖项.我知道Yarn有一个Yarn.lock档案,这就是我关注的地方.有没有人试图独立于他们的团队运行纱线,你遇到了什么问题?
我们的学校计算机安装了Stack,但由于用户目录的空间非常有限,因此很难使用.我想知道是否有办法拥有一个系统范围的.stack文件夹,而不是在用户目录中.
如果我找到了解决方案,我可以将它传达给我们的IT人员 - 他们历来对用户请求非常有帮助.
我注意到,通常使用各种软件包管理器(对于python)安装软件包时,它们将安装在/home/user/anaconda3/envs/env_name/conda上,并在/home/user/anaconda3/envs/env_name/lib/python3.6/lib-packages/conda上使用pip。
但是conda也会缓存所有最近下载的软件包。
所以,我的问题是:为什么conda不将所有软件包都安装在一个中央位置,然后在特定环境中安装时创建指向目录的链接而不是将其安装在目录中?
我注意到环境变得很大,这种方法可能可以节省一些空间。