写Java的同学,基本都听过Maven私服一词,而对于不熟悉Java的同学来说,可能会以为这是某个网游私服。的确,私服这个由历史原因传下来的概念,字面意思并不是太好理解,而且近年也有逐渐扩散到其他技术中的迹象。
包管理器
我们说的私服,其实指的是企业局域网内的软件包依赖库。
说到软件库,就会牵扯出另一个概念——包管理器。
包管理器是在电脑中自动安装、配置、卸载和升级软件包的工具组合。包管理器由于其便捷性,被越来越多的新技术所采纳,从老一代的rpm、dpkg、maven,到中生代的npm、pypi、nuget,再到新生代的helm chart等,都属于包管理器。
包管理器为了实现软件包的自动升级和安装配置,一般会有几种类型的仓库:本地仓库、远程仓库/代理仓库、虚拟仓库。
仓库类型
01 本地仓库
本地仓库是在需要使用包管理工具的电脑上产生,一般会由包管理工具自动生成,需要注意的是,我们下文指的本地仓库是服务器本地,跟开发者电脑的本地不同。
02 远程仓库/代理仓库
远程仓库/代理仓库一般指中央仓库、大型机构搭建的中央仓库镜像站,比如:清华镜像站、中科大镜像站,或叠加多个仓库内容的聚合型仓库,比如:阿里的maven仓库。虚拟仓库即聚合型仓库,把多个仓库的内容聚合在一起对外提供服务。