MacへのGoogle Protocol Buffersのインストール


101

ターミナルコマンドラインを使用して、古いバージョンのGoogleプロトコルバッファ(protobuf-2.4.1)をMacにインストールしたいと思います。で試しましたbrew install protobufが、最新バージョン2.5.0がインストールされています。端末から旧バージョンをインストールすることは可能ですか?

ありがとう


2
なぜ古いバージョンが必要なのですか?.pb.hおよび.pb.ccファイルを再生成する限り、下位互換性があります。
ケントンバルダ2014

プロジェクトは2.4.1でビルドされたので、古いバージョンを使用するほうがよいと思いました。しかし、あなたが言ったように、私は2つのファイルを再生成しました、そしてそれはうまく働きます。ありがとう。
情報提供者

回答:


146

Mac上のソースからprotobuf 2.4.1をビルドする際にいくつかの問題があります。また、適用する必要があるパッチがあります。これはすべて自作のprotobuf241式に含まれているので、使用することをお勧めします。

プロトコルバッファバージョン2.4.1をインストールするには、次のように端末に入力します。

brew tap homebrew/versions
brew install protobuf241

ソースからインストールしようとしたプロトコルバッファーバージョンが既にある場合は、ターミナルに次のように入力して、ソースコードを自作バージョンで上書きできます。

brew link --force --overwrite protobuf241

次のように入力して、正しいバージョンがインストールされていることを確認します。

protoc --version

2.4.1と表示されます


2
ちょっと私はこれを試しましたが、protoc --version i get -bash:protoc:command not found
ramin

バージョン2.4.1は「/usr/local/Cellar/protobuf241/2.4.1」にインストールされます。「../ 2.4.1 / protoc」のシンボリックリンクを作成し、「/ usr / local / bin」に配置するだけです。 」「protoc --version」よりも試してみてください。正しく機能するはずです。
Gyuri Majercsik

4
その蛇口はもう利用できません
Mihai Todor

22
もう働いていない。私が取得Warning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
シーズー-ミン・リー

1
コアに移行しました。代わりにこれを使用してください:brew tap homebrew / homebrew-core
HuyHómHỉnhJun

70

これは醸造ではありませんが、最終結果は同じです。

  1. https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gzからprotobuf-2.4.1をダウンロードします
  2. tar.gzファイルを抽出します。
  3. $ cd〜/ Downloads / protobuf-2.4.1
  4. $。/ configure
  5. $ make
  6. $ makeチェック
  7. $ sudo make install
  8. $ whichプロトコル
  9. $ protoc --version

手順4〜7は、protobuf tarballのREADME.txtファイルからのものです。


2
私はbrewアプローチを試しましたが、protobufの最新バージョン(現在は2.6.0)では、上記の手順の正確なリストを使用してソースから簡単にコンパイルできます。これは、元のソースが必要であるか、インストールの自家製バージョンのCellarパスを参照する必要があるため、標準のプロト定義を拡張しようとする場合(たとえば、descriptor.protoを拡張してフィールドオプションを追加する場合)にさらに役立ちます(醜いですか?) 。
Necro

2
makeコマンドを実行すると、エラーが発生しました。3つのエラーが生成されました。make [2]:*** [message.lo]エラー1 make [1]:*** [all-recursive]エラー1 make:*** [all]エラー2
Anandaraja_Srinivasan

これは私のために働いたソリューションです。しかし、make中のエラーに直面したときのXiaoqi Chuの応答を参照してください。
Amudhan、2016年

手順4-7であり/protobuf/src/README.md、私はそれがでたことを望む、README.md中に/protobufディレクトリ
ケビン・趙

4
これは私にとっては機能しましたが、唯一の変更点は、github.com
google /

34

今年は新しい年でprotobuf、Homebrew のバージョンと最新のリリースとの間に新しい不一致があります。2016年2月の時点で、brew install protobufバージョン2.6.1が提供されます。

代わりに3.0ベータリリースが必要な場合は、次のコマンドでインストールできます。

brew install --devel protobuf

17

Macにプロトコルバッファーをインストールする方法を探してここに着陸した場合、Homebrewを使用して以下のコマンドを実行できます。

brew install protobuf

入手可能な最新バージョンのprotobufをインストールします。私にとって、執筆の時点で、これはv3.7.1をインストールしました

古いバージョンをインストールする場合は、パッケージページProtobuf Package-Homebrewから使用可能なバージョンを検索し、その特定のバージョンのパッケージをインストールしてください。

このパッケージで利用可能な最も古いprotobufバージョンはv3.6.1.3です。


1
しかし、OPは特に古いバージョンのインストールを要求します。
Himanshu Tanwar


12

何らかの理由で、OS X El Capitanのプロジェクトでprotobuf 2.4.1を使用する必要があります。しかし、自作はその式から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すると、正しい結果が表示されます。



6
brew install --devel protobuf

「protobuf-2.6.1はすでにインストールされています」と表示された場合:1. brew uninstall --devel protobuf 2. brew link libtool 3。brew install --devel protobuf


2

FWIW。、brewの最新バージョンはprotobuf 3.0にあり、古いバージョンの式は含まれていません。これはやや「不便」です。

protobufはワイヤーレベルで互換性があるかもしれませんが、生成されたJavaクラスのレベルでは完全に互換性がありません。protobuf-2.5JARなどでprotoc 2.4で生成された.classファイルを使用することはできません。これが更新の理由です。 protobufバージョンは、Hadoopスタックの中で非常にデリケートなトピックです。常に異なるプロジェクト間での調整が必要であり、誰もそれを好まないほどトラウマ的です。


2

プロトコルバッファをインストールするには(現在のバージョンv3.7.0以降)

  1. このウェブサイトに行く
  2. OSに応じてzipファイルをダウンロードします(例:protoc-3.7.0-osx-x86_64.zip)。これは他のOSにも当てはまります。

  3. protoc-3 / bin / protocの実行可能ファイルをPATHのディレクトリの1つに移動します。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

2

別のユーザーが述べたように、Googleによる別の公式の方法があります。

試す前によく読んでください。

手順は次のとおりです。

ターミナルを開き、次のように入力します

  1. PROTOC_ZIP=protoc-3.7.1-osx-x86_64.zip
  2. curl -OL https://github.com/google/protobuf/releases/download/v3.7.1/$PROTOC_ZIP
  3. sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc
  4. rm -f $PROTOC_ZIP

私のために働いた。

PS
これは、OSXのみのバージョン3.7.1の場合です。他のバージョン/プラットフォームをインストールする場合は、リリースリンクにアクセスして最新バージョンの詳細を確認し、それらの情報を使用してください。 参照


1
素敵でシンプル。ありがとう!:
tada



0

HomeBrewバージョンが削除され、数式が空になりました。したがって、私のアドバイスは、次の手順に従って手動でインストールすることです。

当面は、プロトコルバッファツールセットを手動でビルドしてインストールする必要があります。

  1. ソースコードをダウンロード:https : //github.com/google/protobuf/releases/download/v2.4.1/protobuf-2.4.1.tar.gz

  2. tar xvfz protobuf-2.4.1.tar.gz

  3. cd protobuf-2.4.1

  4. 走る ./configure

  5. src / google / protobuf / message.ccを編集し、ファイルの先頭に#includeを追加します

  6. makeフォルダのルート、つまりprotobuf-2.4.1 /からコマンドを実行します

  7. 走る sudo make install

  8. 実行/usr/local/bin/protoc --versionしてprotobufコンパイラーのバージョンを確認します端末出力は次のようになります。

    Version: libprotoc 2.4.1

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.