包管理器
包管理器
像各种编程语言提供的包管理器 java有maven、gradle,python有pip,php有composer, nodejs有npm, objective-c和swift有pod, ruby有gem, Linux上有yum,apt,dnf等包管理工具, Mac常用的有brew、macport
结合自身从事iOS开发, 整理汇总了曾接触、使用过的一些包管理器
Homebrew 和 Homebrew cask
Homebrew 是一款开源的软件包管理系统,用以简化 macOS 上的软件安装过程,可以类比于 Windows 上软件管家的一键安装。Homebrew 在 2009 年由马克斯·霍威尔(Max Howell)写成,它在 GitHub 上拥有大量贡献者,目前仍处于活跃状态。
Homebrew Cask 是 Homebrew 的扩展,借助它可以方便地在 macOS 上安装图形界面程序,即我们常用的各类应用。Homebrew 中文含义为自制、自酿酒,Cask 中文含义为桶、木桶,桶装酒是一种成品,也就是说每一个 homebrew cask 都可以直接使用的,比如 Atom 的 Cask 名称为 atom,那么就可以使用如下命令安装:
brew cask install 应用名称 brew cask install <甲应用名称> <乙应用名称> <丙应用名称>
确认它支持所要安装的应用:
brew cask search 关键字
比如要确定是否支持应用
gooooooogle
,可搜索关键字goo
,即可显示所有包含goo
的应用。如果不加关键字,会显示出所有支持的应用名称查看环境:
brew config
HOMEBREW_VERSION: 2.4.16 ORIGIN: https://github.com/Homebrew/brew HEAD: 2a4c9f610e69b9fed1eec61ac2c53e4b11a32e4c Last commit: 3 months ago Core tap ORIGIN: https://github.com/Homebrew/homebrew-core Core tap HEAD: 1033049ed60f359aac79b6fe00c7070960fa5388 Core tap last commit: 3 months ago Core tap branch: master HOMEBREW_PREFIX: /usr/local HOMEBREW_CASK_OPTS: [] HOMEBREW_MAKE_JOBS: 12 HOMEBREW_NO_AUTO_UPDATE: set CPU: dodeca-core 64-bit kabylake Homebrew Ruby: 2.6.3 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby Clang: 12.0 build 1200 Git: 2.24.3 => /Applications/Xcode.app/Contents/Developer/usr/bin/git Curl: 7.64.1 => /usr/bin/curl Java: 1.8.0_191 macOS: 11.0.1-x86_64 CLT: 1103.0.32.59 Xcode: 12.2
Macport
Macport与brew提供的功能基本一致,不过使用它的时候需要超级管理员权限、它安装的位置与brew安装的位置不一样,另外软件比brew多一点。
有时候brew没有的软件到port这边可能会有的
使用Macport,命令行操作macport使用的是port命令, 常用的命令:
- 搜索软件包:
port search xxx
- 安装软件包:
port install xxx
- 查看已经安装的软件包:
port installed
- 卸载软件包:
port remove xxx
- 查看软件包的信息:
port info xxx
- 搜索软件包:
RubyGems
RubyGems 是 Ruby 的一个包管理框架, 提供了分发 Ruby 程序和函式库的标准格式 gem,目的在于方便管理安装 gem 过程中需要的工具。Mac 系统本身支持 Ruby,需要对 RubyGems 进行检查更新。
Gem 是 Ruby 模块 (叫做 Gems) 的包管理器。其包含包信息,以及用于安装的文件。它通常是依照".gemspec"文件构建的,包含了有关Gem信息的YAML文件。Ruby代码也可以直接建立Gem,这种情况下通常利用Rake来进行,它的命令用于构建、上传、下载以及安装Gem包。
RubyGems默认的源
https://rubygems.org/
国内使用的源有很多, 我使用的源: `https://gems.ruby-china.com/`
更换
RubyGems
源// 移除原默认的源 gem sources -r http://rubygems.org/ // 添加新源, 切记末尾的/不能缺少 gem sources -a https://gems.ruby-china.com/ // 检查下是否已经有且只有 https://gems.ruby-china.com/源 gem sources
pip、pip3
- python 安装包的工具有easy_install, setuptools, pip,distribute
- pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。
- 由于在 Mac 上 python2 和 python3 是共存的。因而 python3 对应的包管理工具的命令就是:pip3
NPM
NPM是Node Package Manager的缩写,它是Node环境下用来管理包的工具,能够跟踪所有的包以及所用的版本号,使得开发可以很容易的增加或者删除依赖包, 所有的依赖包都被保存在一个叫“package.json”的文件中, npm会随着Node.js自动安装, npm 5 以后已经很大的提升
- npm中文文档
- 自己曾经整理的笔记-检查指定npm组件版本
Yarn
Yarn 是由 Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,Yarn 是为了弥补当时 NPM 的一些缺陷而出现的,跟 NPM 是一样的东西
Yarn和NPM命令对比
npm install
===>yarn
npm install taco --save
===>yarn add taco
npm uninstall taco --save
===>yarn remove taco
npm install taco --save-dev
===>yarn add taco --dev
npm update --save
===>yarn upgrade
CocoaPods
CocoaPods是iOS开发、macOS开发中的包依赖管理工具,效果如Java中的Maven,nodejs的npm。
CocoaPods是一个开源的项目,源码是用ruby写的,源码地址在GitHub上。 无论是做iOS开发还是macOS开发,都不可避免的要使用到一些第三方库,优秀的第三方库能够提升我们的开发效率。如果不使用包依赖管理工具,我们需要手动管理第三方包,包括但不限于: 将这些第三方库的源码拷贝到项目中 第三方库代码有可能依赖一些系统framework,我们需要把第三方库依赖的framework导入到项目中 当第三方库有更新时,需要将更新过的代码拷贝到项目中 以上工作虽然简单,但是如果项目中的第三方库较多,需要耗费大量的时间和精力。CocoaPods可以将我们从这些繁琐的工作中解放出来。
Carthage
Carthage 轻耦合,更灵活;使用 xcodebuild 工具来编译依赖项目成二进制 Framework,再引入到项目中去。
Carthage 是由 Swift 语言写的,只支持动态框架,只支持 iOS8+。
Bundler
Bundler 是项目的 Gem 包版本管理工具
类似于
CocoaPods
, 通过配置Gemfile
配置文件, 设置Source
源和依赖库后, 执行bundle install
完成依赖包的安装作为一名
iOS developer
, 可以把它理解成为Ruby
界的CocoaPods
CocoaPods
是借鉴了Bundler
的思想和模式。由于CocoaPods
本身也是一个Ruby
项目,因此我们可以通过Bundler
来管理我们要使用的CocoaPods
版本RubyGems
是为ruby library
提供集中代码托管的服务。Bundler
则是针对当前项目来管理Gem
版本的工具,Bundler
依据项目中的Gemfiles
文件来管理Gem
,就好比CocoaPods
通过Podfile
来管理Pod
的版本一样