包管理器

优质
小牛编辑
146浏览
2023-12-01

包管理器

像各种编程语言提供的包管理器 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 以后已经很大的提升

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 的版本一样