最近我花了一点时间关注了在不同系统之中所用到的包管理器(Package Manager) 。最开始的时候,我是在使用Linux操作系统时,对这种工具以及它背后的想法深深迷恋住了:这真是*的软件世界。全世界所有的开发人员都可以将自己觉得有用的组件或者软件发布到一个共用的地方,其他的所有人都可以很方便地按需取用。
让我们记住Richard Stallman 以及他提出并创立的GNU计划。http://baike.baidu.com/view/36272.htm
在Linux系统中,包管理器是如此强大,让人惊叹。据说这也是Linux之所以很安全的原因,因为几乎所有软件都可以免费地通过包管理器下载到,不需要东找西找(也就免去了中毒的可能性),甚至黑客们连去编写病毒的愿望都没有。
闲话少说,我就从Linux中的包管理器说起吧
apt-get
Ubuntu中,默认采用apt-get 作为包管理器
常见的命令:
- apt-get update
- apt-get upgrade
- apt-get install
- apt-get uninstall
- apt-get source
yum
CentOS中,默认使用yum作为包管理器,用法很类似,有兴趣的朋友可以参考 https://www.centos.org/docs/5/html/yum/
我大部分时间不用CentOS,这里就不截图了。
Nuget Package Manager
这是微软提供的一个包管理器。他提供了可以用于.NET开发平台的各种组件包的托管及管理。
【注意】它提供的只是组件,而且仅限于.NET开发平台用的。这些组件,通常是一些DLL,不能直接运行的,但可以用于我们在具体开发的项目中。
https://www.myget.org/ (这是一个新的站点,目的是想做一个统一的包源管理中心,Create NuGet feeds, npm, Bower and Vsix repositories with your own packages and those from other package sources such as NuGet.org or Npmjs.com.)
如何安装
http://docs.nuget.org/consume/installing-nuget
最好是集成在Visual Studio中,
除了图形化,也有命令行模式
还有独立的命令行工具(nuget.exe)
官方也提供一个独立的图形化界面
chocolatey
这个可以翻译为“巧克力”吗?呵呵。这个与nuget有本质的区别,nuget是提供了组件的包管理器(也就是说它提供的包,是包含了一些组件,本身是不能运行的),而chocolatey提供的是直接可以执行的程序,这一点是很类似于linux中的 apt-get 这个功能的
实际上,它是要基于.NET Framework 4.0和PowerShell才能运行的,也只能在Windows上面运行。
安装好之后,随便启动一个命令行(需要用管理员身份),然后输入choco,就可以看到当前的版本信息
通过choco list命令可以获取到当前所有的包的列表
通过choco install命令可以安装需要的包,例如choco install git
npm
npm is the package manager for javascript. https://www.npmjs.com/
这也是一个神奇的工具。它的背后是神奇的nodejs。https://nodejs.org/ ,所以简单地说,npm就是一个基于nodejs的包管理器,它管理的是javascript。