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

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

Спасибо

Ответ 1

Есть некоторые проблемы с построением 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

Ответ 2

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

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

Ответ 3

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

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

brew install --devel protobuf

Ответ 5

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

                           ^

Ответ 6

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

sudo port install protobuf-cpp

Ответ 7

brew install --devel protobuf

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

Ответ 8

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

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

Ответ 10

Чтобы установить Protocol Buffer (с сегодняшней версии v3.7.0)

  1. Перейти на этот сайт
  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

Ответ 11

Существует другой официальный путь от 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
Это только для версии 3.7.1 в OSX. Если вы хотите установить какую-либо другую версию/платформу, перейдите по ссылке выпусков, ознакомьтесь с информацией о последней версии и используйте эту информацию. Ссылка

Ответ 12

Этот процесс был упрощен до

brew install protobuf

Он устанавливает последнюю доступную версию protobuf. Для меня, на момент написания, это установило v3.7.1