在mac上安装Google Protocol Buffers

时间:2014-02-14 09:13:43

标签: protocol-buffers homebrew

我想使用终端命令行在mac上安装旧版本的Google Protocol Buffers(protobuf-2.4.1)。我尝试使用brew install protobuf,但已安装最新版本2.5.0。是否可以从终端安装旧版本。

由于

15 个答案:

答案 0 :(得分:131)

在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

答案 1 :(得分:66)

这不是通过brew,但最终结果是一样的。

  1. https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
  2. 下载protobuf-2.4.1
  3. 解压缩tar.gz文件。
  4. $ cd~ / Downloads / protobuf-2.4.1
  5. $。/配置
  6. $化妆
  7. $ make check
  8. $ sudo make install
  9. $ which protoc
  10. $ protoc --version
  11. 步骤4-7来自protobuf tarball的README.txt文件。

答案 2 :(得分:34)

这是新的一年,Homebrew版本protobuf与最新版本之间出现了新的不匹配。截至2016年2月,brew install protobuf将为您提供2.6.1版本。

如果您想要3.0 beta版本,可以使用以下命令安装:

brew install --devel protobuf

答案 3 :(得分:12)

来自https://github.com/paulirish/homebrew-versions-1。适合我!

brew install https://raw.githubusercontent.com/paulirish/homebrew-versions-1/master/protobuf241.rb

答案 4 :(得分:11)

出于某种原因,我需要在我的OS X El Capitan项目中使用protobuf 2.4.1。然而,自制软件已从其公式中删除了protobuf241。我根据@kksensei的答案手动安装它,并且必须在此过程中修复一些错误。

在制作过程中,我得到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应显示正确的结果。

答案 5 :(得分:7)

我使用了macports

sudo port install protobuf-cpp

答案 6 :(得分:6)

brew install --devel protobuf

如果它告诉你&#34;已经安装了protobuf-2.6.1&#34;:  1. brew uninstall --devel protobuf  2. brew link libtool  3. brew install --devel protobuf

答案 7 :(得分:2)

FWIW。,brew的最新版本是protobuf 3.0,并不包含旧版本的任何公式。这有点“不方便”。

虽然protobuf可能在线级兼容,但它在生成的java类级别上绝对不兼容:你不能使用protoc 2.4生成的.class文件与protobuf-2.5 JAR等等。为什么更新protobuf版本在Hadoop堆栈中是一个如此敏感的主题:它总是需要跨不同项目的协调,并且足够创伤,没有人喜欢这样做。

答案 8 :(得分:1)

您可以从Google http://google.github.io/proto-lens/installing-protoc.html提供的官方链接页面安装

答案 9 :(得分:1)

此过程简化为

brew install protobuf

它会安装最新版本的protobuf。对我而言,在撰写本文时,它已安装 v3.7.1

答案 10 :(得分:1)

对于v3用户。

http://google.github.io/proto-lens/installing-protoc.html

PROTOC_ZIP=protoc-3.7.1-osx-x86_64.zip
curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/$PROTOC_ZIP
sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc
sudo unzip -o $PROTOC_ZIP -d /usr/local 'include/*'
rm -f $PROTOC_ZIP

答案 11 :(得分:0)

要安装协议缓冲区(从v3.7.0版开始)

  1. 转到此website
  2. 根据您的操作系统下载zip文件(例如:protoc-3.7.0-osx-x86_64.zip)。这也适用于其他操作系统。

  3. 将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

答案 12 :(得分:0)

还有另一位用户提到的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

为我工作。

P.S。
这仅适用于osx中的3.7.1版本。 如果您要安装其他版本/平台,请访问releases link并查看最新版本的详细信息,然后使用这些信息。 Reference

答案 13 :(得分: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. 从文件夹的根目录(即protobuf-2.4.1 /

  7. )运行make命令
  8. 运行sudo make install

  9. 运行/usr/local/bin/protoc --version以检查protobuf编译器版本 终端输出应为:

    Version: libprotoc 2.4.1

答案 14 :(得分:0)

应该有更好的方法,但我今天所做的是:

  1. https://github.com/protocolbuffers/protobuf/releases 下载(此时为 protoc-3.14.0-osx-x86_64.zip

  2. 解压缩(双击 zip 文件)

  3. 这里,我添加了一个符号链接

ln -s ~/Downloads/protoc-3.14.0-osx-x86_64/bin/protoc /usr/local/bin/protoc
  1. 检查是否有效
protoc --version