releases protocol protoc protobuf notes mac google compiler buffers protocol-buffers homebrew

protobuf - Instalar Google Protocol Buffers en mac



protobuf windows (8)

Me gustaría instalar la versión anterior de Buffers de Protocolo de Google (protobuf-2.4.1) en mac usando la línea de comandos del Terminal. Intenté con brew install protobuf , pero se ha instalado la última versión 2.5.0. ¿Es posible instalar la versión anterior desde la terminal?

Gracias



Es un nuevo año y hay una nueva falta de coincidencia entre la versión de protobuf en Homebrew y la versión de vanguardia. A partir de febrero de 2016, brew install protobuf le dará la versión 2.6.1.

Si desea la versión 3.0 beta en su lugar, puede instalarla con:

brew install --devel protobuf


Esto no es por brebaje, pero el resultado final es el mismo.

  1. Descargue el archivo protobuf-2.4.1 de https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
  2. Extraiga el archivo tar.gz.
  3. $ cd ~ / Downloads / protobuf-2.4.1
  4. $. / configure
  5. $ make
  6. $ hacer cheque
  7. $ sudo make install
  8. $ qué protocolo
  9. $ protocolo --version

Los pasos 4 a 7 son del archivo README.txt del protobuf tarball.


FWIW., La última versión de brew está en protobuf 3.0, y no incluye ninguna fórmula para las versiones anteriores. Esto es algo "inconveniente".

Mientras que protobuf puede ser compatible a nivel de cable, no es absolutamente compatible al nivel de las clases java generadas: no puede usar archivos .class generados con el protocolo 2.4 con el protobuf-2.5 JAR, etc. etc. Esta es la razón por la cual se actualizan las versiones de protobuf son un tema tan delicado en la pila de Hadoop: invariablemente requiere coordinación entre diferentes proyectos, y es lo suficientemente traumático como para que a nadie le guste hacerlo.


Hay algunos problemas con la construcción de protobuf 2.4.1 desde la fuente en una Mac. Hay un parche que también debe aplicarse. Todo esto está contenido en la fórmula de protobuf241 homebrew, así que aconsejaría usarlo.

Para instalar la versión 2.4.1 del búfer de protocolo, escriba lo siguiente en un terminal:

brew tap homebrew/versions brew install protobuf241

Si ya tiene una versión del búfer de protocolo que intentó instalar desde el origen, puede escribir lo siguiente en un terminal para que el código fuente sea sobrescrito por la versión homebrew:

brew link --force --overwrite protobuf241

Compruebe que ahora tiene instalada la versión correcta escribiendo:

protoc --version

Debería mostrar 2.4.1


Por alguna razón, necesito usar protobuf 2.4.1 en mi proyecto en OS X El Capitan. Sin embargo homebrew ha eliminado protobuf241 de su fórmula. Lo instalo de acuerdo con la respuesta de @ kksensei de forma manual y tengo que corregir algunos errores durante el proceso.

Durante el proceso de make, obtengo 3 errores como los siguientes:

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; ^

(Lo siento, no sé cómo adjuntar código cuando el código contiene '''' '')

Si obtiene el mismo error, edite src / google / protobuf / message.cc, agregue #include <istream> en la parte superior del archivo y vuelva a $ make y no obtenga ningún error. Después de eso do $ sudo make install . Cuando la instalación finalice $protoc --version debería mostrar el resultado correcto.


Usé macports

sudo port install protobuf-cpp


brew install --devel protobuf

Si te dice que "protobuf-2.6.1 ya está instalado": 1. brew uninstall --devel protobuf 2. brew link libtool 3. brew install --devel protobuf