各种语言常见的包管理工具

简介: 各种语言常见的包管理工具

包管理和构建系统是现代的软件开发团队中必不可少的工具,也是 Linux 软件系统的常见组织方式。 现代编程语言大多给出了自己专用的包管理和构建系统,那么本文便来总结一下小编用过的那些包管理和构建系统。

JavaScript

服务器端 Javascript 通常使用 NPM 作为依赖管理工具。

  • 通过 NPM 提供的 npm 命令来进行依赖的下载、升级和移除。
  • 通过 package.json 来定义软件包的元信息、开发依赖(开发或测试需要)、部署依赖(运行时需要)。
  • 依赖递归地存储在 node_modules 中。
  • 依赖在项目之间是隔离的,全局安装(-g)会使它成为命令行工具而不是全局依赖。 > 递归的依赖下载风格使得 NPM 的缓存及其重要。缓存位于 ~/.npm 下,这里保存这.tgz 格式的包文件。

JavaScript 通常使用 Grunt 进行构建。

  • Grunt 通过插件来完成任务,每个插件相当于 Makefile 的一个命令。
  • Grunt 任务定义在 Gruntfile.js 中。
  • NPM 提供了众多的 Grunt 插件,当然你也可以手写。
  • Grunt 任务继承了 JavaScript 的异步特性。

前端 lib

前端 lib 可以通过 Bower 来下载。Bower 不仅可以下载已注册的软件包,还可以下载 Github Repo,甚至是一个文件的 URL。

  • 通过 bower 命令进行依赖管理。
  • bower.json 定义了软件包的元信息与依赖。
  • 依赖所在路径可以在 bower.json 中进行设置。
  • Bower 只是一个命令行工具,你需要在正确的路径执行 Bower 命令。

Bower 可以灵活地下载各种依赖,但它的缺点也是明显的:未注册的软件包往往包含冗余的非生产环境的代码,有时甚至需要手动构建。

Java

Maven 是基于项目对象模型 (POM) 的项目管理工具,通过文本文件来描述项目的版本、URL、License、依赖等信息。

  • 通过 pom.xml 来描述 Maven 项目。
  • Maven 是项目管理工具,其功能包括依赖管理、软件构建。
  • Maven 通过.properties 文件和命令行参数读取系统特性。

Ant 是由 Java 写成的编译、测试和部署 Java 应用的命令行工具。

  • 通过 build.xml 来描述构建过程。
  • build.xml 的逻辑类似 Makefile,每个 target 由命令和参数构成。
  • 通过命令行参数来读取系统特性。

Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化建构工具。它使用一种基于 Groovy 的特定领域语言来声明项目设置,而不是传统的 XML。

Python

Python 的包管理工具能讲一整天的故事:distribute、setuptools、distutils、easy_install、pip、distutils2、packaging、eggs、wheels、pyvenv、virtualenv……

这也是我为什么讨厌安装 python 软件的原因,与此同时,旧版本的 python2 比新的 python3 更加流行以及两者不兼容也常常给 Linux 包管理造成麻烦。

现在开始讲故事:

  1. distutils 是 python 的标准库;
  2. setuptools 试图完成 distutils 缺少的特性而开始开发;
  3. easy_install 是 setuptools 的命令行接口,有更多的特性;
  4. 在 setuptools 的开发过程中产生了分歧,于是出现了 distribute,它 fork 自 setuptools,并在 2013 年取得和解并重新 merge 到 setuptools 0.7 版本;
  5. 相比于上述工具,pip 是一个更加高阶的接口,pip 成为事实上的 python 软件的安装工具;
  6. eggs 和 wheels 成为事实上的二进制 python 软件的安装工具。

venvvirtualenv 则是用来创建 python 虚拟环境来实现应用隔离的。

  • venv 在 python3.3 中引入,用于在自己的目录下创建轻量级的虚拟环境,也可以孤立于系统环境。
  • virtualenv 则是一个 python 软件包,用于创建孤立的 python 环境。

Ruby

Ruby 的软件包单元为 RubyGem

  • Gem 由.gemspec 文件描述。
  • Gem 的构建过程由 Rakefile 描述。
  • Rake 是 Gem 的构建工具,它与 Make 类似,用以完成自动化测试和代码生成。
  • Bundle 则是 Ruby 的包管理工具,用来跟踪和下载正确版本的 Gem。
相关文章
|
缓存 数据安全/隐私保护 虚拟化
windows端口被占用,无法通过netstat找到进程,占用的端口又不能修改,该怎么办?
项目运行时服务器8080端口被占用,常规`netstat`命令找不到占用进程。解决方法包括:1) 强制关机重启释放端口;2) 使用`netstat -anobq`或Windows 10的`Get-NetTCPConnection` PowerShell命令查找BOUND状态的进程;3) 调整Windows动态端口范围,避免冲突。注意,强制关机可能影响数据安全。
7214 2
|
SQL 存储 运维
【共读】企业信息安全建设与运维指南(一)
【共读】企业信息安全建设与运维指南(一)
2783 1
【共读】企业信息安全建设与运维指南(一)
|
Linux 算法
服务器可靠性提升(一)内存CE增强隔离技术
为了提升系统的稳定, 阿里巴巴基础设施服务器系统创新团队联合阿里云等业务团队,对服务器硬件问题导致非预期的宕机进行治理。
9156 0
|
存储 监控 关系型数据库
从天津滨海新区大爆炸、危化品监管聊聊 IT人背负的社会责任感
标签 PostgreSQL , 天津滨海新区大爆炸 , 危险品 , 危化品监管 , RDKit , 化学插件 , 社会关系分析 , 毒品分析 , 化学反应 , 机器学习 , 地理位置 , PostGIS 背景 缘分所致,前几天与一些来自ING行业的企业做了一次深入的交流,有感而发,写下本文
4771 0
|
NoSQL Linux
GDB如何调试没有符号表(未加-g选项的编译)的程序
/********************************************************************* * Author  : Samson * Date    : 01/30/2015 * Test platform: *              3.
3534 0
|
17天前
|
人工智能 缓存 前端开发
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
DeepSeek Harness + DeepSeek V4 Pro 项目实战保姆级教程!手把手带你从零安装开源 AI 编程工具,开发架构图、知识讲解网站、3D 网页游戏、全栈 AI 应用 4 个项目,覆盖运行模式选择、插件安装与开发,看看能不能对标 Claude。
12763 75
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
|
5天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
10天前
|
Web App开发 人工智能 API
16 个超火的 DeepSeek Harness 插件,大肥鱼已经落后 N 个版本了。。。
DeepSeek Harness 精选插件推荐合集,从图片识别、浏览器操控、多 Agent 协作到手机远程控制,一口气带你看完 DSH 社区热门的十几个插件,覆盖技能扩展、UI 界面增强、整活玩法三大类,让你的鲸鱼变得更强。
1617 2

热门文章

最新文章