zoukankan      html  css  js  c++  java
  • mac装brew

    Mac下使用国内镜像安装Homebrew
    一、根据官网上的方法,在终端输入:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    二、下载修改安装文件

    https://raw.githubusercontent.com/Homebrew/install/master/install

    然后另存文件传回来,后做如下修改。

    安装全文如下:

    #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby
    
    # This script installs to /usr/local only. To install elsewhere (which is
    
    # unsupported) you can untar https://github.com/Homebrew/brew/tarball/master
    
    # anywhere you like.
    
    HOMEBREW_PREFIX = "/usr/local".freeze
    
    HOMEBREW_REPOSITORY = "/usr/local/Homebrew".freeze
    
    HOMEBREW_CORE_TAP = "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core".freeze
    
    HOMEBREW_CACHE = "#{ENV["HOME"]}/Library/Caches/Homebrew".freeze
    
    HOMEBREW_OLD_CACHE = "/Library/Caches/Homebrew".freeze
    
    #BREW_REPO = "https://github.com/Homebrew/brew".freeze
    
    #BREW_REPO_INSECURE = "git://github.com/Homebrew/brew.git".freeze
    
    #CORE_TAP_REPO = "https://github.com/Homebrew/homebrew-core".freeze
    
    #CORE_TAP_REPO_INSECURE = "git://github.com/Homebrew/homebrew-core.git".freeze
    
    BREW_REPO = "git://mirrors.ustc.edu.cn/brew.git".freeze
    
    BREW_REPO_INSECURE = "git://mirrors.ustc.edu.cn/brew.git".freeze
    
    CORE_TAP_REPO = "git://mirrors.ustc.edu.cn/homebrew-core.git".freeze
    
    CORE_TAP_REPO_INSECURE = "git://mirrors.ustc.edu.cn/homebrew-core.git".freeze
    
    # TODO: bump version when new macOS is released
    
    MACOS_LATEST_SUPPORTED = "10.14".freeze
    
    # TODO: bump version when new macOS is released
    
    MACOS_OLDEST_SUPPORTED = "10.12".freeze
    
    # no analytics during installation
    
    ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = "1"
    
    ENV["HOMEBREW_NO_ANALYTICS_MESSAGE_OUTPUT"] = "1"
    
    # get nicer global variables
    
    require "English"
    
    module Tty
    
      module_function
    
      def blue
    
        bold 34
    
      end
    
      def red
    
        bold 31
    
      end
    
      def reset
    
        escape 0
    
      end
    
      def bold(code = 39)
    
        escape "1;#{code}"
    
      end
    
      def underline
    
        escape "4;39"
    
      end
    
      def escape(code)
    
        "33[#{code}m" if STDOUT.tty?
    
      end
    
    end
    
    class Array
    
      def shell_s
    
        cp = dup
    
        first = cp.shift
    
        cp.map { |arg| arg.gsub " ", "\ " }.unshift(first).join(" ")
    
      end
    
    end
    
    def ohai(*args)
    
      puts "#{Tty.blue}==>#{Tty.bold} #{args.shell_s}#{Tty.reset}"
    
    end
    
    def warn(warning)
    
      puts "#{Tty.red}Warning#{Tty.reset}: #{warning.chomp}"
    
    end
    
    def system(*args)
    
      abort "Failed during: #{args.shell_s}" unless Kernel.system(*args)
    
    end
    
    def sudo(*args)
    
      args.unshift("-A") unless ENV["SUDO_ASKPASS"].nil?
    
      ohai "/usr/bin/sudo", *args
    
      system "/usr/bin/sudo", *args
    
    end
    
    def getc
    
      system "/bin/stty raw -echo"
    
      if STDIN.respond_to?(:getbyte)
    
        STDIN.getbyte
    
      else
    
        STDIN.getc
    
      end
    
    ensure
    
      system "/bin/stty -raw echo"
    
    end
    
    def wait_for_user
    
      puts
    
      puts "Press RETURN to continue or any other key to abort"
    
      c = getc
    
      # we test for 
     and 
     because some stuff does 
     instead
    
      abort unless (c == 13) || (c == 10)
    
    end
    
    class Version
    
      include Comparable
    
      attr_reader :parts
    
      def initialize(str)
    
        @parts = str.split(".").map { |p| p.to_i }
    
      end
    
      def <=>(other)
    
        parts <=> self.class.new(other).parts
    
      end
    
      def to_s
    
        parts.join(".")
    
      end
    
    end
    
    def macos_version
    
      @macos_version ||= Version.new(`/usr/bin/sw_vers -productVersion`.chomp[/10.d+/])
    
    end
    
    def should_install_command_line_tools?
    
      return false if macos_version < "10.9"
    
      if macos_version > "10.13"
    
        !File.exist?("/Library/Developer/CommandLineTools/usr/bin/git")
    
      else
    
        !File.exist?("/Library/Developer/CommandLineTools/usr/bin/git") ||
    
          !File.exist?("/usr/include/iconv.h")
    
      end
    
    end
    
    def git
    
      @git ||= if ENV["GIT"] && File.executable?(ENV["GIT"])
    
        ENV["GIT"]
    
      elsif Kernel.system "/usr/bin/which -s git"
    
        "git"
    
      else
    
        exe = `xcrun -find git 2>/dev/null`.chomp
    
        exe if $CHILD_STATUS && $CHILD_STATUS.success? && !exe.empty? && File.executable?(exe)
    
      end
    
      return unless @git
    
      @git
    
    end
    
    def can_macos_use_tls12?
    
      macos_version >= "10.9"
    
    end
    
    def user_only_chmod?(path)
    
      return false unless File.directory?(path)
    
      mode = File.stat(path).mode & 0777
    
      # u = (mode >> 6) & 07
    
      # g = (mode >> 3) & 07
    
      # o = (mode >> 0) & 07
    
      mode != 0755
    
    end
    
    def chmod?(path)
    
      File.exist?(path) && !(File.readable?(path) && File.writable?(path) && File.executable?(path))
    
    end
    
    def chown?(path)
    
      !File.owned?(path)
    
    end
    
    def chgrp?(path)
    
      !File.grpowned?(path)
    
    end
    
    # Invalidate sudo timestamp before exiting (if it wasn't active before).
    
    Kernel.system "/usr/bin/sudo -n -v 2>/dev/null" unless macos_version < "10.7"
    
    at_exit { Kernel.system "/usr/bin/sudo", "-k" } unless $CHILD_STATUS.success?
    
    # The block form of Dir.chdir fails later if Dir.CWD doesn't exist which I
    
    # guess is fair enough. Also sudo prints a warning message for no good reason
    
    Dir.chdir "/usr"
    
    ####################################################################### script
    
    abort "See Linuxbrew: #{Tty.underline}http://linuxbrew.sh/#{Tty.reset}" if RUBY_PLATFORM.to_s.downcase.include?("linux")
    
    abort "Mac OS X too old, see: #{Tty.underline}https://github.com/mistydemeo/tigerbrew#{Tty.reset}" if macos_version < "10.5"
    
    abort "Don't run this as root!" if Process.uid.zero?
    
    abort <<-EOABORT unless `dsmemberutil checkmembership -U "#{ENV["USER"]}" -G admin`.include? "user is a member"
    
    This script requires the user #{ENV["USER"]} to be an Administrator.
    
    EOABORT
    
    # Tests will fail if the prefix exists, but we don't have execution permissions.
    
    # Abort in this case.
    
    abort <<-EOABORT if File.directory?(HOMEBREW_PREFIX) && (!File.executable? HOMEBREW_PREFIX)
    
    The Homebrew prefix, #{HOMEBREW_PREFIX}, exists but is not searchable. If this is
    
    not intentional, please restore the default permissions and try running the
    
    installer again:
    
        sudo chmod 775 #{HOMEBREW_PREFIX}
    
    EOABORT
    
    # Require preinstalled git binary if TLS 1.2 not built in.
    
    if !can_macos_use_tls12? && !git
    
      puts "This version of Mac OS X requires Git to perform the installation."
    
      if macos_version == "10.5"
    
        abort "Install from: #{Tty.underline}http://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/git-osx-installer/git-1.7.5.4-i386-leopard.dmg#{Tty.reset}"
    
      elsif macos_version == "10.6"
    
        abort "Install from: #{Tty.underline}http://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/git-osx-installer/git-1.8.4.2-intel-universal-snow-leopard.dmg#{Tty.reset}"
    
      else
    
        abort "Install Xcode or the Command Line Tools: #{Tty.underline}https://developer.apple.com/download/more/#{Tty.reset}"
    
      end
    
    end
    
    # TODO: bump version when new macOS is released
    
    if macos_version > MACOS_LATEST_SUPPORTED ||
    
      macos_version < MACOS_OLDEST_SUPPORTED
    
      who = "We"
    
      if macos_version > MACOS_LATEST_SUPPORTED
    
        what = "pre-release version"
    
      elsif macos_version < MACOS_OLDEST_SUPPORTED
    
        who << " (and Apple)"
    
        what = "old version"
    
      else
    
        return
    
      end
    
      ohai "You are using macOS #{macos_version.parts.join(".")}."
    
      ohai "#{who} do not provide support for this #{what}."
    
      puts <<-EOS
    
    This installation may not succeed.
    
    After installation, you will encounter build failures and other breakages.
    
    Please create pull requests instead of asking for help on Homebrew's
    
    GitHub, Discourse, Twitter or IRC. As you are running this #{what},
    
    you are responsible for resolving any issues you experience.
    
      EOS
    
    end
    
    ohai "This script will install:"
    
    puts "#{HOMEBREW_PREFIX}/bin/brew"
    
    puts "#{HOMEBREW_PREFIX}/share/doc/homebrew"
    
    puts "#{HOMEBREW_PREFIX}/share/man/man1/brew.1"
    
    puts "#{HOMEBREW_PREFIX}/share/zsh/site-functions/_brew"
    
    puts "#{HOMEBREW_PREFIX}/etc/bash_completion.d/brew"
    
    puts HOMEBREW_REPOSITORY.to_s
    
    # Keep relatively in sync with
    
    # https://github.com/Homebrew/brew/blob/master/Library/Homebrew/keg.rb
    
    group_chmods = %w[bin etc include lib sbin share opt var
    
                      Frameworks
    
                      etc/bash_completion.d lib/pkgconfig
    
                      share/aclocal share/doc share/info share/locale share/man
    
                      share/man/man1 share/man/man2 share/man/man3 share/man/man4
    
                      share/man/man5 share/man/man6 share/man/man7 share/man/man8
    
                      var/log var/homebrew var/homebrew/linked
    
                      bin/brew].
    
                  map { |d| File.join(HOMEBREW_PREFIX, d) }.
    
                  select { |d| chmod?(d) }
    
    # zsh refuses to read from these directories if group writable
    
    zsh_dirs = %w[share/zsh share/zsh/site-functions].
    
              map { |d| File.join(HOMEBREW_PREFIX, d) }
    
    mkdirs = %w[bin etc include lib sbin share var opt
    
                share/zsh share/zsh/site-functions
    
                var/homebrew var/homebrew/linked
    
                Cellar Caskroom Homebrew Frameworks].
    
            map { |d| File.join(HOMEBREW_PREFIX, d) }.
    
            reject { |d| File.directory?(d) }
    
    user_chmods = zsh_dirs.select { |d| user_only_chmod?(d) }
    
    chmods = group_chmods + user_chmods
    
    chowns = chmods.select { |d| chown?(d) }
    
    chgrps = chmods.select { |d| chgrp?(d) }
    
    unless group_chmods.empty?
    
      ohai "The following existing directories will be made group writable:"
    
      puts(*group_chmods)
    
    end
    
    unless user_chmods.empty?
    
      ohai "The following existing directories will be made writable by user only:"
    
      puts(*user_chmods)
    
    end
    
    unless chowns.empty?
    
      ohai "The following existing directories will have their owner set to #{Tty.underline}#{ENV["USER"]}#{Tty.reset}:"
    
      puts(*chowns)
    
    end
    
    unless chgrps.empty?
    
      ohai "The following existing directories will have their group set to #{Tty.underline}admin#{Tty.reset}:"
    
      puts(*chgrps)
    
    end
    
    unless mkdirs.empty?
    
      ohai "The following new directories will be created:"
    
      puts(*mkdirs)
    
    end
    
    if should_install_command_line_tools?
    
      ohai "The Xcode Command Line Tools will be installed."
    
    end
    
    wait_for_user if STDIN.tty? && !ENV["CI"]
    
    if File.directory? HOMEBREW_PREFIX
    
      sudo "/bin/chmod", "u+rwx", *chmods unless chmods.empty?
    
      sudo "/bin/chmod", "g+rwx", *group_chmods unless group_chmods.empty?
    
      sudo "/bin/chmod", "755", *user_chmods unless user_chmods.empty?
    
      sudo "/usr/sbin/chown", ENV["USER"], *chowns unless chowns.empty?
    
      sudo "/usr/bin/chgrp", "admin", *chgrps unless chgrps.empty?
    
    else
    
      sudo "/bin/mkdir", "-p", HOMEBREW_PREFIX
    
      sudo "/usr/sbin/chown", "root:wheel", HOMEBREW_PREFIX
    
    end
    
    unless mkdirs.empty?
    
      sudo "/bin/mkdir", "-p", *mkdirs
    
      sudo "/bin/chmod", "g+rwx", *mkdirs
    
      sudo "/bin/chmod", "755", *zsh_dirs
    
      sudo "/usr/sbin/chown", ENV["USER"], *mkdirs
    
      sudo "/usr/bin/chgrp", "admin", *mkdirs
    
    end
    
    [HOMEBREW_CACHE, HOMEBREW_OLD_CACHE].each do |cache|
    
      sudo "/bin/mkdir", "-p", cache unless File.directory? cache
    
      sudo "/bin/chmod", "g+rwx", cache if chmod? cache
    
      sudo "/usr/sbin/chown", ENV["USER"], cache if chown? cache
    
      sudo "/usr/bin/chgrp", "admin", cache if chgrp? cache
    
    end
    
    if should_install_command_line_tools?
    
      ohai "Searching online for the Command Line Tools"
    
      # This temporary file prompts the 'softwareupdate' utility to list the Command Line Tools
    
      clt_placeholder = "/tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress"
    
      sudo "/usr/bin/touch", clt_placeholder
    
      clt_macos_version = if macos_version == "10.9"
    
        "Mavericks"
    
      else
    
        macos_version
    
      end
    
      clt_sort = if macos_version >= "10.13"
    
        "sort -V"
    
      else
    
        "sort"
    
      end
    
      clt_label_command = "/usr/sbin/softwareupdate -l | " 
    
                          "grep -B 1 -E 'Command Line (Developer|Tools)' | " 
    
                          "awk -F'*' '/^ +\*/ {print $2}' | " 
    
                          "grep '#{clt_macos_version}' | " 
    
                          "#{clt_sort} | " 
    
                          "sed 's/^ *//' | " 
    
                          "tail -n1"
    
      clt_label = `#{clt_label_command}`.chomp
    
      unless clt_label.empty?
    
        ohai "Installing #{clt_label}"
    
        sudo "/usr/sbin/softwareupdate", "-i", clt_label
    
        sudo "/bin/rm", "-f", clt_placeholder
    
        sudo "/usr/bin/xcode-select", "--switch", "/Library/Developer/CommandLineTools"
    
      end
    
    end
    
    # Headless install may have failed, so fallback to original 'xcode-select' method
    
    if should_install_command_line_tools? && STDIN.tty?
    
      ohai "Installing the Command Line Tools (expect a GUI popup):"
    
      sudo "/usr/bin/xcode-select", "--install"
    
      puts "Press any key when the installation has completed."
    
      getc
    
      sudo "/usr/bin/xcode-select", "--switch", "/Library/Developer/CommandLineTools"
    
    end
    
    abort <<-EOABORT if `/usr/bin/xcrun clang 2>&1` =~ /license/ && !$CHILD_STATUS.success?
    
    You have not agreed to the Xcode license.
    
    Before running the installer again please agree to the license by opening
    
    Xcode.app or running:
    
        sudo xcodebuild -license
    
    EOABORT
    
    ohai "Downloading and installing Homebrew..."
    
    Dir.chdir HOMEBREW_REPOSITORY do
    
      # we do it in four steps to avoid merge errors when reinstalling
    
      system git, "init", "-q"
    
      # "git remote add" will fail if the remote is defined in the global config
    
      system git, "config", "remote.origin.url", can_macos_use_tls12? ? BREW_REPO : BREW_REPO_INSECURE
    
      system git, "config", "remote.origin.fetch", "+refs/heads/*:refs/remotes/origin/*"
    
      # ensure we don't munge line endings on checkout
    
      system git, "config", "core.autocrlf", "false"
    
      args = git, "fetch", "origin", "master:refs/remotes/origin/master",
    
            "--tags", "--force"
    
      system(*args)
    
      system git, "reset", "--hard", "origin/master"
    
      unless can_macos_use_tls12?
    
        system git, "clone", "--depth", "1", CORE_TAP_REPO_INSECURE, HOMEBREW_CORE_TAP
    
        system git, "config", "--file", "#{HOMEBREW_CORE_TAP}/.git/config", "core.autocrlf", "false"
    
        ENV["HOMEBREW_BOTTLE_DOMAIN"] = "http://homebrew.bintray.com"
    
      end
    
      system "ln", "-sf", "#{HOMEBREW_REPOSITORY}/bin/brew", "#{HOMEBREW_PREFIX}/bin/brew"
    
      system "#{HOMEBREW_PREFIX}/bin/brew", "update", "--force"
    
    end
    
    warn "#{HOMEBREW_PREFIX}/bin is not in your PATH." unless ENV["PATH"].split(":").include? "#{HOMEBREW_PREFIX}/bin"
    
    ohai "Installation successful!"
    
    puts
    
    # Use the shell's audible bell.
    
    print "a"
    
    # Use an extra newline and bold to avoid this being missed.
    
    ohai "Homebrew has enabled anonymous aggregate formulae and cask analytics."
    
    puts <<-EOS
    
    #{Tty.bold}Read the analytics documentation (and how to opt-out) here:
    
      #{Tty.underline}https://docs.brew.sh/Analytics#{Tty.reset}
    
    EOS
    
    ohai "Homebrew is run entirely by unpaid volunteers. Please consider donating:"
    
    puts <<-EOS
    
      #{Tty.underline}https://github.com/Homebrew/brew#donations#{Tty.reset}
    
    EOS
    
    Dir.chdir HOMEBREW_REPOSITORY do
    
      system git, "config", "--local", "--replace-all", "homebrew.analyticsmessage", "true"
    
      system git, "config", "--local", "--replace-all", "homebrew.caskanalyticsmessage", "true"
    
    end
    
    ohai "Next steps:"
    
    if macos_version < "10.9" && macos_version > "10.6"
    
      `/usr/bin/cc --version 2> /dev/null` =~ /clang-(d{2,})/
    
      version = Regexp.last_match(1).to_i
    
      if version < 425
    
        puts "- Install the Command Line Tools for Xcode:"
    
        puts "    #{Tty.underline}https://developer.apple.com/download/more/#{Tty.reset}"
    
      end
    
    elsif !File.exist? "/usr/bin/cc"
    
      puts "- Install Xcode:"
    
      puts "    #{Tty.underline}https://developer.apple.com/download/more/#{Tty.reset}"
    
    end
    
    puts "- Run `brew help` to get started"
    
    puts "- Further documentation: "
    
    puts "    #{Tty.underline}https://docs.brew.sh#{Tty.reset}"
    

    安装

    /usr/bin/ruby ~/brew_install

    替换homebrew源

    替换homebrew默认源

    cd "$(brew --repo)"

    git remote set-url origin git://mirrors.ustc.edu.cn/brew.git

    替换homebrew-core源

    cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"

    git remote set-url origin git://mirrors.ustc.edu.cn/homebrew-core.git

    brew更新

    brew update

    设置 bintray镜像

    echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile

    source ~/.bash_profile

    第二坑开始,提示找不到Command_Line_Tools

    好吧,安装了xcode都不行,按你的要求来,在苹果官网下载一个。

    苹果官网:https://developer.apple.com/download/more/

    接着安装,第三坑出现,说是/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core不存在,好吧,我给你建。
    三、如果遇到如下问题可以参考下

    错误一:fatal: Not a git repository (or any of the parent directories): .git

    解决办法:git init

    错误二:/usr/local/.git: Permission denied

    解决办法:

    //确保目录归属管理组

    sudo chgrp -R admin /usr/local

    //确保管理组可读

    sudo chmod -R g+w /usr/local

    错误三:fatal: No such remote 'origin'

    解决办法:set-url 改成 add

    四、查看当前目录远程信息

    git remote -v

    五:No formulae found in taps.

  • 相关阅读:
    wampServer多站点配置
    wamp中根目录自定义
    [学习笔记] 七步从Angular.JS菜鸟到专家(2):Scopes [转]
    [学习笔记] 七步从Angular.JS菜鸟到专家(1):如何开始 [转]
    [学习笔记] Python标准库简明教程 [转]
    [学习笔记] Python标准库的学习准备 [转]
    [学习笔记] socket通信简介 [转]
    [学习笔记] 国内主流php框架比较 [转]
    [学习笔记] symfony核心类 [转]
    [学习笔记] Symfony2安全机制
  • 原文地址:https://www.cnblogs.com/cizao/p/12298841.html
Copyright © 2011-2022 走看看