ターミナルコマンドラインを使用して、Macに古いバージョンのGoogle Protocol Buffers(protobuf-2.4.1)をインストールしたいと思います。 brew install protobuf
で試しましたが、最新バージョン2.5.0がインストールされています。ターミナルから古いバージョンをインストールすることは可能ですか?.
ありがとう
Macのソースからprotobuf 2.4.1をビルドする場合、いくつかの問題があります。パッチも適用する必要があります。これらはすべて自作のprotobuf241式に含まれているので、使用することをお勧めします。
プロトコルバッファバージョン2.4.1をインストールするには、以下を端末に入力します。
brew tap homebrew/versions
brew install protobuf241
ソースからインストールしようとしたプロトコルバッファーバージョンが既にある場合は、ターミナルに次を入力して、homebrewバージョンでソースコードを上書きできます。
brew link --force --overwrite protobuf241
次のように入力して、正しいバージョンがインストールされていることを確認します。
protoc --version
2.4.1と表示されるはずです
これはbrew経由ではありませんが、最終結果は同じです。
手順4〜7は、protobuf tarballのREADME.txtファイルからのものです。
それは新年であり、Homebrewのprotobuf
のバージョンと最先端のリリースの間に新しい不一致があります。 2016年2月現在、brew install protobuf
はバージョン2.6.1を提供します。
代わりに3.0ベータリリースが必要な場合は、次の方法でインストールできます。
brew install --devel protobuf
https://github.com/paulirish/homebrew-versions-1 から。私のために働く!
brew install https://raw.githubusercontent.com/paulirish/homebrew-versions-1/master/protobuf241.rb
何らかの理由で、OS X El Capitanのプロジェクトでprotobuf 2.4.1を使用する必要があります。しかし、homebrewはその式からprotobuf241を削除しました。 @kksenseiの回答に従って手動でインストールし、プロセス中にエラーを修正する必要があります。
Makeプロセス中に、次のような3つのエラーが表示されます。
google/protobuf/message.cc:130:60: error: implicit instantiation of undefined template 'std::__1::basic_istream<char, std::__1::char_traits<char> >'
return ParseFromZeroCopyStream(&zero_copy_input) && input->eof();
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iosfwd:108:28: note: template is declared here
class _LIBCPP_TYPE_VIS basic_istream;
^
google/protobuf/message.cc:135:67: error: implicit instantiation of undefined template 'std::__1::basic_istream<char, std::__1::char_traits<char> >'
return ParsePartialFromZeroCopyStream(&zero_copy_input) && input->eof();
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iosfwd:108:28: note: template is declared here
class _LIBCPP_TYPE_VIS basic_istream;
^
google/protobuf/message.cc:175:16: error: implicit instantiation of undefined template 'std::__1::basic_ostream<char, std::__1::char_traits<char> >'
return output->good();
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iosfwd:110:28: note: template is declared here
class _LIBCPP_TYPE_VIS basic_ostream;
^
(申し訳ありませんが、コードに '`'が含まれている場合にコードを添付する方法はわかりません)
同じエラーが発生する場合は、src/google/protobuf/message.ccを編集し、ファイルの先頭に#include <istream>
を追加して、もう一度$ make
を実行してください。エラーは発生しません。その後、$ Sudo make install
を実行します。インストールが完了すると、$protoc --version
は正しい結果を表示するはずです。
私はmacportsを使用しました
Sudo port install protobuf-cpp
brew install --devel protobuf
「protobuf-2.6.1 already installed」と表示された場合:1. brew uninstall --devel protobuf
2. brew link libtool
3. brew install --devel protobuf
FWIW。、brewの最新バージョンはprotobuf 3.0であり、古いバージョンの公式は含まれていません。これはやや「不便」です。
Protobufはワイヤレベルでは互換性がありますが、生成されたJavaクラスのレベルではまったく互換性がありません。protoc2.4で生成された.classファイルをprotobuf-2.5 JARなどで使用することはできません。これが、protobufバージョンの更新がHadoopスタックで非常にデリケートなトピックである理由です。異なるプロジェクト間での調整が必ず必要であり、誰もそれを好まないほどのトラウマです。
このプロセスは単純化され、
brew install protobuf
利用可能なprotobufの最新バージョンをインストールします。私にとって、これを書いている時点で、これはv3.7.1をインストールしました
googleが提供する公式リンクページからインストールできます http://google.github.io/proto-lens/installing-protoc.html
oSに応じてZipファイルをダウンロードします(例:protoc-3.7.0-osx-x86_64.Zip)。これは他のOSにも適用されます。
Protoc-3/bin/protocの実行可能ファイルをPATH内のいずれかのディレクトリに移動します。 Macでは、/ usr/local/binに置くことをお勧めします
(オプション)インクルードファイルもあり、追加できます。これはREADME.mdのスニペットです
If you intend to use the included well known types then don't forget to
copy the contents of the 'include' directory somewhere as well, for example
into '/usr/local/include/'.
Please refer to our official github site for more installation instructions:
https://github.com/protocolbuffers/protobuf
別のユーザーが述べたように、Googleによる別の公式な方法があります。
試みる前にそれを完全に読んでください。
手順は次のとおりです。
ターミナルを開き、次を入力します
PROTOC_Zip=protoc-3.7.1-osx-x86_64.Zip
curl -OL https://github.com/google/protobuf/releases/download/v3.7.1/$PROTOC_Zip
Sudo unzip -o $PROTOC_Zip -d /usr/local bin/protoc
rm -f $PROTOC_Zip
私のために働いた。
追伸.
これは、osxのバージョン3.7.1専用です。他のバージョン/プラットフォームをインストールする場合は、 releases link にアクセスして、最新バージョンの詳細を確認し、それらの情報を使用してください。 参照