Установка буферов протокола Google на Mac

Я хотел бы установить более старую версию буферов протокола Google (protobuf-2.4.1) на Mac с помощью командной строки терминала. Я попытался с brew install protobuf, но была установлена ​​последняя версия 2.5.0. Возможно установить более старую версию из терминала.

Спасибо

65
задан 14 февр. '14 в 12:13
источник поделиться
8 ответов

Есть некоторые проблемы с построением protobuf 2.4.1 от источника на Mac. Существует также патч, который также должен применяться. Все это содержится в формуле homeobrew protobuf241, поэтому я бы посоветовал использовать ее.

Чтобы установить буфер протокола версии 2.4.1, введите в терминал следующее:

brew tap homebrew/versions
brew install protobuf241

Если у вас уже есть версия буфера протокола, которую вы пытались установить из источника, вы можете ввести следующее в терминал, чтобы исходный код был перезаписан версией homebrew:

brew link --force --overwrite protobuf241

Убедитесь, что у вас установлена ​​правильная версия, набрав:

protoc --version

Он должен отображать 2.4.1

113
ответ дан 20 мая '14 в 15:58
источник

Это не через brew, но конечный результат тот же.

Этапы 4-7 взяты из файла README.txt из файла tarobob.

45
ответ дан 22 апр. '14 в 19:18
источник

Это новый год и новое несоответствие между версией protobuf в Homebrew и выпуском самой последней версии. По состоянию на февраль 2016 года brew install protobuf предоставит вам версию 2.6.1.

Если вы хотите использовать бета-версию 3.0, вы можете установить его с помощью:

brew install --devel protobuf
28
ответ дан 16 февр. '16 в 23:20
источник

По какой-то причине мне нужно использовать 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 должен отображаться правильный результат.

8
ответ дан 15 июня '16 в 15:45
источник

Я использовал macports

sudo port install protobuf-cpp
6
ответ дан 12 июня '14 в 2:09
источник

От https://github.com/paulirish/homebrew-versions-1. Работает для меня!

brew install https://raw.githubusercontent.com/paulirish/homebrew-versions-1/master/protobuf241.rb
5
ответ дан 27 февр. '17 в 6:15
источник
brew install --devel protobuf

Если он сообщает вам, что "protobuf-2.6.1 уже установлен":  1. brew uninstall --devel protobuf  2. brew link libtool  3. brew install --devel protobuf

3
ответ дан 11 авг. '16 в 22:08
источник

FWIW., последняя версия brew находится в protobuf 3.0 и не содержит никаких формул для более старых версий. Это несколько неудобно.

Хотя protobuf может быть совместим на уровне проводов, он абсолютно несовместим на уровне сгенерированных классов Java: вы не можете использовать .class файлы, созданные с protoc 2.4 с protobuf-2.5 JAR и т.д. и т.д. Это почему обновление версий protobuf является такой чувствительной темой в стеке Hadoop: она неизменно требует координации в разных проектах и ​​достаточно травматична, что никто не любит это делать.

0
ответ дан 13 февр. '17 в 21:25
источник

Другие вопросы по меткам или Задайте вопрос