

xserver上にbrewをインストールしました。  
`brew doctor` にて正常に動作しているか確かめたところ、下記のエラーが発生しました。

[code]

    Error: Please update your system curl.
    Minimum required version: 7.41.0
    Your curl version: 7.29.0
    Your curl executable: /usr/bin/curl
    Error: Please update your system Git.
    Minimum required version: 2.7.0
    Your Git version: 1.8.3.1
    Your Git executable: /usr/bin/git
    
[/code]

どうやらcurlとGitのバージョンが古いとのことなので、ひとまずはcurlのバージョンを7.74.0に上げ、実際にバージョンアップできていることを確認しました。

[code]

    $ ~/opt/bin/curl --version
    curl 7.74.0 (x86_64-pc-linux-gnu) libcurl/7.74.0 zlib/1.2.7
    Release-Date: 2020-12-09
    Protocols: dict file ftp gopher http imap mqtt pop3 rtsp smtp telnet tftp
    Features: alt-svc AsynchDNS Largefile libz UnixSockets
    
[/code]

xserverでは、サーバ標準の古いバージョン(7.29.0)のcurlが強制的に参照されるとのことなので、下記記事を参照して、.bash_profileの内容を変更・sourceにて設定を反映させて自分がインストールしたcurlを参照できるようにしました。

[自分がインストールしたBrewを使うように変更する方法](https://book.studio947.net/article/4586/)

変更後の.bash_profileを下記に示します。

[code]

    if [ -f ~/.bashrc ]; then
        . ~/.bashrc
    fi
    
    PATH=$HOME/opt/bin:$PATH
    
    export PATH
    export HOMEBREW_FORCE_BREWED_CURL="1"
    
[/code]

しかしながら、再び `brew doctor`
を行っても下記のエラーメッセージが出力されて、xserverの古いバージョンのcurlが参照されてしまいます。

[code]

    $ brew doctor
    Error: Please update your system curl.
    Minimum required version: 7.41.0
    Your curl version: 7.29.0
    Your curl executable: /usr/bin/curl
    Error: Please update your system Git.
    Minimum required version: 2.7.0
    Your Git version: 1.8.3.1
    Your Git executable: /usr/bin/git
    Please note that these warnings are just used to help the Homebrew maintainers
    with debugging if you file an issue. If everything you use Homebrew for is
    working fine: please don't worry or file an issue; just ignore this. Thanks!
    
    Warning: Some installed formulae are deprecated or disabled.
    You should find replacements for the following formulae:
      isl@0.18
    
    Warning: "config" scripts exist outside your system or Homebrew directories.
    `./configure` scripts often look for *-config scripts to determine if
    software packages are installed, and which additional flags to use when
    compiling and linking.
    
    Having additional scripts in your path can confuse software installed via
    Homebrew if the config script overrides a system or Homebrew-provided
    script of the same name. We found the following "config" scripts:
      /home/[xserverID]/opt/bin/curl-config
    
    Warning: An outdated version (1.8.3.1) of Git was detected in your PATH.
    Git 2.7.0 or newer is required for Homebrew.
    Please upgrade:
      brew install git
    
    Warning: Your Homebrew's prefix is not /home/linuxbrew/.linuxbrew.
    Some of Homebrew's bottles (binary packages) can only be used with the default
    prefix (/home/linuxbrew/.linuxbrew).
    You will encounter build failures with some formulae.
    Please create pull requests instead of asking for help on Homebrew's GitHub,
    Twitter or any other official channels. You are responsible for resolving
    any issues you experience while you are running this
    unsupported configuration.
    
[/code]

どのようにすれば、自分がインストールしたcurlをbrewが参照できるようになるのでしょうか？教えていただけると幸いです。


CC BY-SA 4.0
2021-06-09T13:21:46.340
77435
2021-12-22T02:02:00.173
2021-06-10T00:11:57.493
3060
35877
question
linux homebrew curl
Homebrew に対応するためインストールした Curl コマンドが認識されない


`~/.bash_profile` における環境変数 `PATH` の設定(`export
PATH=$HOME/opt/bin:$PATH`)が効かないのは brew コマンド(シェルスクリプト)の内部で `PATH`
がリセットされているためです。

[brew/brew at master ·
Homebrew/brew](https://github.com/Homebrew/brew/blob/master/bin/brew#L104)

[code]

    if [[ -z "${HOMEBREW_NO_ENV_FILTERING}" ]]
    then
      PATH="/usr/bin:/bin:/usr/sbin:/sbin"
    
      FILTERED_ENV=()
      # Filter all but the specific variables.
      for VAR in HOME SHELL PATH ...
      do
                  :
    
        FILTERED_ENV+=( "${VAR}=${!VAR}" )
      done
    
      exec /usr/bin/env -i "${FILTERED_ENV[@]}" /bin/bash "${HOMEBREW_LIBRARY}/Homebrew/brew.sh" "$@"
    
[/code]

次に、brew コマンドで exec されている `brew.sh` では以下の様な処理が行われています。

[brew/brew.sh at master ·
Homebrew/brew](https://github.com/Homebrew/brew/blob/master/Library/Homebrew/brew.sh#L283)

[code]

    if [[ -n "${HOMEBREW_FORCE_BREWED_CURL}" &&
          -x "${HOMEBREW_PREFIX}/opt/curl/bin/curl" ]] &&
             "${HOMEBREW_PREFIX}/opt/curl/bin/curl" --version >/dev/null
    then
      HOMEBREW_CURL="${HOMEBREW_PREFIX}/opt/curl/bin/curl"
    elif [[ -n "${HOMEBREW_DEVELOPER}" && -x "${HOMEBREW_CURL_PATH}" ]]
    then
      HOMEBREW_CURL="${HOMEBREW_CURL_PATH}"
    else
      HOMEBREW_CURL="curl"
    fi
    
[/code]

質問文では curl コマンドのファイルパスは `~/opt/bin/curl` となっていますので、`HOMEBREW_CURL` は `curl`
にセットされます。`PATH` は `"/usr/bin:/bin:/usr/sbin:/sbin"` にリセットされていますので、最終的に
`HOMEBREW_CURL` の値は `/usr/bin/curl` になります。

これを回避して `HOMEBREW_CURL` に `$HOME/opt/bin/curl` をセットするためには `~/.bash_profile`
に以下を追加すればよいかと思います。

[code]

    export HOMEBREW_DEVELOPER=1
    export HOMEBREW_CURL_PATH="$HOME/opt/bin/curl"
    
[/code]


CC BY-SA 4.0
2021-06-09T18:53:18.667
77443
2021-06-09T19:00:34.850
2021-06-09T19:00:34.850
77435
answer