在 mac 上安装 Google 协议缓冲

我想使用命令行/终端应用程序在 Mac 上安装旧版本的谷歌协议缓冲(Protobuf-2.4.1)。

我试过使用 brew install protobuf,但是最新的版本2.5.0已经安装了。

是否可以从终端安装旧版本?

195683 次浏览

这不是通过酿造,但最终的结果是相同的。

  1. https://github.com/protocolbuffers/protobuf/releases/tag/v2.4.1下载 Protobuf-2.4.1
  2. 提取 tar.gz 文件。
  3. $cd ~/Downloads/Protobuf-2.4.1
  4. $./configure
  5. $make
  6. $检查
  7. $sudo make install
  8. $which protoc
  9. $protoc --version

步骤4-7来自 Protobuf tarball 的 README.txt 文件。

There are some issues with building protobuf 2.4.1 from source on a Mac. There is a patch that also has to be applied. All this is contained within the homebrew protobuf241 formula, so I would advise using it.

要安装协议缓冲区版本2.4.1,在终端中键入以下内容:

brew tap homebrew/versions
brew install protobuf241

如果您已经有一个试图从源代码安装的协议缓冲区版本,您可以在终端中键入以下内容,让自制版本覆盖源代码:

brew link --force --overwrite protobuf241

输入以下命令,检查您现在已经安装了正确的版本:

protoc --version

它应该显示2.4

我用的是电子港口

sudo port install protobuf-cpp

这是一个新的一年,有一个新的错配之间的版本 protobuf在家酿和尖端发行。截至2016年2月,brew install protobuf将为您提供2.6.1版本。

如果你想要3.0 beta 版本,你可以安装:

brew install --devel protobuf

出于某种原因,我需要使用原型2.4.1在我的项目在 OS X El Capitan。然而,自制程序已经从配方中移除了 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应显示正确的结果。

brew install --devel protobuf

如果它告诉你“ Protobuf-2.6.1已经安装”: 1. brew uninstall --devel protobuf 2. brew link libtool 3. brew install --devel protobuf

FWIW,最新版本的酿造是在原型3.0,并没有包括任何公式为旧版本。这有点“不方便”。

虽然 Protobuf 可能在连线级别是兼容的,但是它在生成的 Java 类级别是绝对不兼容的: 您不能使用。使用 Protobuf-2.5 JAR 等协议2.4生成的类文件。这就是为什么在 Hadoop 堆栈中更新 Protobuf 版本是一个如此敏感的话题: 它总是需要不同项目之间的协调,而且这种协调带来的创伤足以让任何人都不愿意这么做。

https://github.com/paulirish/homebrew-versions-1。为我工作!

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

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

安装 Protocol Buffer (从今天的版本3.7.0开始)

  1. 转到这个 网站
  2. download the zip file according to your OS (e.g.: protoc-3.7.0-osx-x86_64.zip). This applies also to other OS.

  3. Move the executable in protoc-3/bin/protoc to one of your directories in PATH. In Mac I suggest to put it into /usr/local/bin

现在你可以走了

(optional) There is also an include file, you can add. This is a snippet of the 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

正如另一位用户所提到的,谷歌还有另一种官方方式。

在尝试之前仔细阅读。

以下是步骤:

Open Terminal and type the following

  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。 如果您希望安装其他版本/平台,请访问 释放链接,查看最新版本的详细信息,并使用这些信息。 参考文献

如果你在这里寻找如何在 Mac 上安装协议缓冲,可以通过运行下面的命令使用 Homebrew 来完成

brew install protobuf

它安装了可用的最新版本的 Protobuf

如果您想安装旧版本,请从软件包页面 Protobuf Package - Homebrew中查找可用的版本,并安装该软件包的特定版本。

The oldest available protobuf version in this package is V3.6.1.3

对于 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

HomeBrew 版本已被删除,配方已被清空。因此,我的建议是按照以下步骤手动安装它。

For the time being you will need to build and install the Protocol Buffers toolset manually.

  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. Run make command from root of the folder, i.e. protobuf-2.4.1/

  7. 运行 sudo make install

  8. Run /usr/local/bin/protoc --version to check the version of protobuf compiler version The terminal output should be:

    Version: libprotoc 2.4.1

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

  1. Download from https://github.com/protocolbuffers/protobuf/releases (protoc-3.14.0-osx-x86_64.zip at this moment)

  2. Unzip (double click the zip file)

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

ln -s ~/Downloads/protoc-3.14.0-osx-x86_64/bin/protoc /usr/local/bin/protoc
  1. 看看有没有用
protoc --version