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

informatiker
fuente
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

John Gilmore
fuente
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.

kksensei
fuente
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
danvk
fuente
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

Aditya Vikas Devarapalli
fuente
1
Pero el OP solicita específicamente instalar la versión anterior.
Himanshu Tanwar
13

De https://github.com/paulirish/homebrew-versions-1 . ¡Funciona para mi!

brew install https://raw.githubusercontent.com/paulirish/homebrew-versions-1/master/protobuf241.rb
Xiaofan Hu
fuente
Salvaste mi día. ¡Muchas gracias!
Deepankar Sarkar
Tenga en cuenta que siempre se recomienda escanear las fórmulas al instalar desde fuentes desconocidas. Hice eso, estaba seguro.
Agoston Horvath
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.

Xiaoqi Chu
fuente
8

Usé macports

sudo port install protobuf-cpp
Roozbeh Zabihollahi
fuente
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

Andrii Kovalchuk
fuente
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.

stevel
fuente
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
Imran
fuente
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

Revanth Kausikan
fuente
1
Agradable y sencillo. ¡Gracias! : tada:
rodrigo-silveira
0

Para usuarios de v3.

http://google.github.io/proto-lens/installing-protoc.html

PROTOC_ZIP=protoc-3.7.1-osx-x86_64.zip
curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/$PROTOC_ZIP
sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc
sudo unzip -o $PROTOC_ZIP -d /usr/local 'include/*'
rm -f $PROTOC_ZIP
oro-kou
fuente
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

shapan dashore
fuente