我想使用终端命令行在mac上安装旧版本的Google Protocol Buffers(protobuf-2.4.1)。我尝试使用brew install protobuf
,但已安装最新版本2.5.0。是否可以从终端安装旧版本。
由于
答案 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,但最终结果是一样的。
步骤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)
根据您的操作系统下载zip文件(例如:protoc-3.7.0-osx-x86_64.zip)。这也适用于其他操作系统。
将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的另一种官方方式。
在尝试之前请仔细阅读。
以下是步骤:
打开终端并输入以下内容
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
为我工作。
P.S。
这仅适用于osx中的3.7.1版本。
如果您要安装其他版本/平台,请访问releases link并查看最新版本的详细信息,然后使用这些信息。
Reference
答案 13 :(得分:0)
HomeBrew版本已被删除,配方已清空。因此,我的建议是按照以下步骤手动安装它。
暂时,您将需要手动构建和安装协议缓冲区工具集。
下载源代码:https://github.com/google/protobuf/releases/download/v2.4.1/protobuf-2.4.1.tar.gz
tar xvfz protobuf-2.4.1.tar.gz
cd protobuf-2.4.1
运行./configure
编辑src / google / protobuf / message.cc,在文件顶部添加#include
从文件夹的根目录(即protobuf-2.4.1 /
make
命令
运行sudo make install
运行/usr/local/bin/protoc --version
以检查protobuf编译器版本
终端输出应为:
Version: libprotoc 2.4.1
答案 14 :(得分:0)
应该有更好的方法,但我今天所做的是:
从 https://github.com/protocolbuffers/protobuf/releases 下载(此时为 protoc-3.14.0-osx-x86_64.zip
)
解压缩(双击 zip
文件)
这里,我添加了一个符号链接
ln -s ~/Downloads/protoc-3.14.0-osx-x86_64/bin/protoc /usr/local/bin/protoc
protoc --version