Instalación de búfer de protocolo de Google en mac


101

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

Gracias


2
¿Por qué quieres una versión anterior? Son compatibles con versiones anteriores, siempre que regenere los archivos .pb.hy .pb.cc.
Kenton Varda

Pensé que sería mejor usar la versión anterior ya que el proyecto se compiló con 2.4.1. Pero como dijiste, he regenerado los dos archivos y funciona bien. Gracias.
informatiker

4
Y, en general, aquí se explica cómo instalar una versión específica de una fórmula .
Duvrai

Respuestas:


146

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

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

brew tap homebrew/versions
brew install protobuf241

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

brew link --force --overwrite protobuf241

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

protoc --version

Debería mostrar 2.4.1


2
Oye, probé esto, sin embargo en el protocolo --versión obtengo -bash: protocol: comando no encontrado
ramin

La versión 2.4.1 está instalada en "/usr/local/Cellar/protobuf241/2.4.1", solo debe crear un enlace simbólico de "../2.4.1/protoc" y ponerlo en "/ usr / local / bin ". Pruebe que "protocol --version" y debería funcionar exactamente como debería.
Gyuri Majercsik

4
Ese grifo ya no está disponible
Mihai Todor

22
Ya no funciona. ReciboWarning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
Shih-Min Lee

1
había migrado al núcleo, use esto en su lugar: brew tap homebrew / homebrew-core
Huy Hóm Hỉnh

70

Esto no es a través de la preparación, pero el resultado final es el mismo.

  1. Descargue el protobuf-2.4.1 de https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
  2. Extraiga el archivo tar.gz.
  3. $ cd ~ / Descargas / protobuf-2.4.1
  4. $. / configure
  5. $ hacer
  6. $ hacer cheque
  7. $ sudo make install
  8. $ cual protocolo
  9. $ protocol --versión

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


2
Probé el enfoque de preparación, pero para la última versión de protobuf (ahora 2.6.0) se compila fácilmente a partir de fuentes utilizando la lista exacta de pasos anteriores. Esto se vuelve aún más útil cuando se intenta extender las definiciones de proto estándar (por ejemplo, agregar opciones de campo extendiendo descriptor.proto) ya que necesita las fuentes originales o de lo contrario debe hacer referencia a la ruta de la bodega en la versión casera de la instalación (¿feo?) .
Necro

2
Al ejecutar el comando make terminé con errores: 3 errores generados. make [2]: *** [message.lo] Error 1 make [1]: *** [all-recursive] Error 1 make: *** [all] Error 2
Anandaraja_Srinivasan

Esta es la solución que funcionó para mí. Pero vea la respuesta de Xiaoqi Chu cuando se enfrenta a los errores durante la realización.
Amudhan

los pasos 4-7 están en /protobuf/src/README.md, me gustaría que estuviera README.mden el /protobufdirectorio
Kevin Zhao

4
Esto funcionó para mí, el único cambio es que necesita descargar fuentes de github.com/google/protobuf/releases
r00tt

34

Es un año nuevo y hay un nuevo desajuste entre la versión de protobufHomebrew y el lanzamiento de vanguardia. A 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

17

Si llegó aquí buscando cómo instalar Protocol Buffers en Mac, puede hacerlo usando Homebrew ejecutando el siguiente comando

brew install protobuf

Instala la última versión de protobuf disponible. Para mí, en el momento de escribir este artículo, esto instaló la v3.7.1

Si desea instalar una versión anterior, busque las disponibles en la página del paquete Protobuf Package - Homebrew e instale esa versión específica del paquete.

La versión de protobuf más antigua disponible en este paquete es v3.6.1.3


1
Pero el OP solicita específicamente instalar la versión anterior.
Himanshu Tanwar


12

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 manualmente y tengo que corregir algún error durante el proceso.

Durante el proceso de creación, obtengo 3 errores como el siguiente:

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 $ makevuelva a hacerlo y no debería obtener errores. Después de eso, hazlo $ sudo make install. Cuando finalice la instalación, $protoc --versiondebería mostrar el resultado correcto.



6
brew install --devel protobuf

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


2

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".

Si bien protobuf puede ser compatible a nivel de cable, no es absolutamente compatible a nivel de clases java generadas: no puede usar archivos .class generados con protobuf 2.4 con protobuf-2.5 JAR, etc. etc. 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.


2

Para instalar Protocol Buffer (a partir de hoy versión v3.7.0)

  1. Ir a este sitio web
  2. descargue el archivo zip de acuerdo con su sistema operativo (por ejemplo: protocol-3.7.0-osx-x86_64.zip). Esto también se aplica a otros sistemas operativos.

  3. Mueva el ejecutable en protocol-3 / bin / protocol a uno de sus directorios en PATH. En Mac sugiero ponerlo en / usr / local / bin

Ahora estás listo para irte 💪🏾

(opcional) También hay un archivo de inclusión que puede agregar. Este es un fragmento de 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

2

Hay otra forma oficial de Google, como lo mencionó otro usuario.

Léelo completamente antes de intentarlo.

Estos son los pasos:

Abra Terminal y escriba lo siguiente

  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

Trabajó para mi.

PD:
Esto es solo para la versión 3.7.1 en osx. Si desea instalar alguna otra versión / plataforma, visite el enlace de versiones consulte los detalles de la última versión y utilice esa información. Referencia


1
Agradable y sencillo. ¡Gracias! : tada:
rodrigo-silveira



0

Se han eliminado las versiones de HomeBrew y se han vaciado las fórmulas. Por tanto, mi consejo es instalarlo manualmente siguiendo los siguientes pasos.

Por el momento, deberá crear e instalar el conjunto de herramientas Protocol Buffers manualmente.

  1. Descargar código fuente: https://github.com/google/protobuf/releases/download/v2.4.1/protobuf-2.4.1.tar.gz

  2. tar xvfz protobuf-2.4.1.tar.gz

  3. cd protobuf-2.4.1

  4. correr ./configure

  5. Edite src / google / protobuf / message.cc, agregue #include en la parte superior del archivo

  6. Ejecute el makecomando desde la raíz de la carpeta, es decir, protobuf-2.4.1 /

  7. correr sudo make install

  8. Ejecutar /usr/local/bin/protoc --versionpara verificar la versión de la versión del compilador protobuf La salida del terminal debe ser:

    Version: libprotoc 2.4.1

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.