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



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



спасибо

501   8  

8 ответов:

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

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

brew tap homebrew/versions
brew install protobuf241

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

brew link --force --overwrite protobuf241

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

protoc --version

Он должен показать 2.4.1

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

  1. загрузите protobuf-2.4.1 из https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
  2. извлечь tar.файл GZ.
  3. $cd ~ / Downloads / protobuf-2.4.1
  4. $./настроить
  5. $ make
  6. $make check
  7. $sudo make install
  8. долларов США, что protoc
  9. $protoc --version

шагов 4-7 из README.txt-файл из архива protobuf.

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

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

brew install --devel protobuf

по какой-то причине мне нужно использовать protobuf 2.4.1 в моем проекте на OS X El Capitan. Однако homebrew удалил 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 должен показать правильный результат.

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

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

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

sudo port install protobuf-cpp
brew install --devel protobuf

если он говорит вам "protobuf-2.6.1 уже установлен": 1. brew uninstall --devel protobuf 2. brew link libtool 3. brew install --devel protobuf

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

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

Comments

    Ничего не найдено.