Instalação de buffers de protocolo do Google no mac

101

Gostaria de instalar a versão mais antiga do Google Protocol Buffers (protobuf-2.4.1) no mac usando a linha de comando do Terminal. Tentei brew install protobuf, mas a última versão 2.5.0 foi instalada. É possível instalar a versão mais antiga do terminal.

obrigado

informatiker
fonte
2
Por que você quer uma versão mais antiga? Eles são compatíveis com versões anteriores, desde que você gere novamente os arquivos .pb.he .pb.cc.
Kenton Varda de
Achei melhor usar a versão antiga já que o projeto foi construído com 2.4.1. Mas, como você disse, gerei novamente os dois arquivos e funciona bem. Obrigado.
informatiker de
4
E, em geral, aqui está como instalar uma versão específica de uma fórmula .
Duvrai

Respostas:

146

Existem alguns problemas com a construção do protobuf 2.4.1 a partir da fonte em um Mac. Existe um patch que também deve ser aplicado. Tudo isso está contido na fórmula protobuf241 do homebrew, então eu aconselho usá-la.

Para instalar o buffer de protocolo versão 2.4.1, digite o seguinte em um terminal:

brew tap homebrew/versions
brew install protobuf241

Se você já tem uma versão de buffer de protocolo que tentou instalar a partir da fonte, pode digitar o seguinte em um terminal para que o código-fonte seja substituído pela versão homebrew:

brew link --force --overwrite protobuf241

Verifique se agora você tem a versão correta instalada digitando:

protoc --version

Deve exibir 2.4.1

John Gilmore
fonte
2
Ei, eu tentei isso, no entanto, no protoc --version i get -bash: protoc: command not found
ramin
A versão 2.4.1 está instalada em "/usr/local/Cellar/protobuf241/2.4.1", você deve apenas criar um link simbólico de "../2.4.1/protoc" e colocá-lo em "/ usr / local / bin " Tente então "protoc --version" e deve funcionar exatamente como deveria.
Gyuri Majercsik
4
Esse toque não está mais disponível
Mihai Todor
22
Não está funcionando mais. Eu entendoWarning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
Shih-Min Lee,
1
ele havia migrado para o núcleo, use este: brew tap homebrew / homebrew-core
Huy Hóm Hỉnh
70

Não é via fermentação, mas o resultado final é o mesmo.

  1. Baixe o protobuf-2.4.1 em https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
  2. Extraia o arquivo tar.gz.
  3. $ cd ~ / Downloads / protobuf-2.4.1
  4. $. / configure
  5. $ make
  6. $ make check
  7. $ sudo make install
  8. $ qual protoc
  9. $ protoc --version

As etapas 4 a 7 são do arquivo README.txt do tarball do protobuf.

kksensei
fonte
2
Eu tentei a abordagem fermentada, mas para a versão mais recente do protobuf (agora 2.6.0) ele compila facilmente a partir de fontes usando a lista exata de etapas acima. Isso se torna ainda mais útil ao tentar estender as definições de protótipo padrão (por exemplo, adicionar opções de campo estendendo descriptor.proto), pois você precisa das fontes originais ou deve consultar o caminho Cellar na versão caseira da instalação (feio?) .
Necro
2
Ao executar o comando make acabei com erros: 3 erros gerados. make [2]: *** [message.lo] Erro 1 make [1]: *** [all-recursive] Erro 1 make: *** [all] Erro 2
Anandaraja_Srinivasan
Esta é a solução que funcionou para mim. Mas veja a resposta de Xiaoqi Chu ao enfrentar os erros durante o make.
Amudhan
passos 4-7 estão em /protobuf/src/README.md, eu gostaria que fosse na README.mdno /protobufdiretório
Kevin Zhao
4
Isso funcionou para mim, a única mudança é que você precisa baixar as fontes de github.com/google/protobuf/releases
r00tt
34

É um novo ano e há uma nova incompatibilidade entre a versão do protobufHomebrew e o lançamento de última geração. A partir de fevereiro de 2016, brew install protobufapresentará a versão 2.6.1.

Se você quiser a versão beta 3.0, poderá instalá-la com:

brew install --devel protobuf
danvk
fonte
17

Se você chegou aqui procurando como instalar Protocol Buffers no Mac, isso pode ser feito usando o Homebrew executando o comando abaixo

brew install protobuf

Ele instala a versão mais recente do protobuf disponível. Para mim, no momento da escrita, isso instalou o v3.7.1

Se desejar instalar uma versão mais antiga, procure as disponíveis na página do pacote Protobuf Package - Homebrew e instale essa versão específica do pacote.

A versão de protobuf mais antiga disponível neste pacote é a v3.6.1.3

Aditya Vikas Devarapalli
fonte
1
Mas o OP pede especificamente a instalação da versão antiga.
Himanshu Tanwar
13

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

brew install https://raw.githubusercontent.com/paulirish/homebrew-versions-1/master/protobuf241.rb
Xiaofan Hu
fonte
Você salvou meu dia. Muito obrigado!
Deepankar Sarkar
Observe, é sempre recomendável verificar as fórmulas ao instalar de fontes desconhecidas. Eu fiz isso, era seguro.
Agoston Horvath
12

Por algum motivo, preciso usar o protobuf 2.4.1 em meu projeto no OS X El Capitan. No entanto, o homebrew removeu o protobuf241 de sua fórmula. Eu o instalo de acordo com a resposta do @kksensei manualmente e tenho que corrigir alguns erros durante o processo.

Durante o processo de criação, recebo 3 erros como o seguinte:

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;

                           ^

(Desculpe, não sei como anexar código quando o código contém '`')

Se você receber o mesmo erro, edite src / google / protobuf / message.cc, adicione #include <istream>na parte superior do arquivo e faça $ makenovamente e não deve obter erros. Depois disso, faça $ sudo make install. Quando a instalação terminar, $protoc --versiondeve exibir o resultado correto.

Xiaoqi Chu
fonte
8

Eu usei macports

sudo port install protobuf-cpp
Roozbeh Zabihollahi
fonte
6
brew install --devel protobuf

Se ele disser "protobuf-2.6.1 já instalado": 1. brew uninstall --devel protobuf 2. brew link libtool 3.brew install --devel protobuf

Andrii Kovalchuk
fonte
2

FWIW., A versão mais recente da cerveja está no protobuf 3.0 e não inclui nenhuma fórmula para as versões anteriores. Isso é um pouco "inconveniente".

Embora protobuf possa ser compatível no nível do fio, ele não é absolutamente compatível no nível das classes java geradas: você não pode usar arquivos .class gerados com protoc 2.4 com o protobuf-2.5 JAR, etc. etc. É por isso que atualizar Versões de protobuf é um tópico tão sensível na pilha do Hadoop: invariavelmente, requer coordenação entre diferentes projetos e é traumático o suficiente para que ninguém goste de fazer isso.

nível
fonte
2

Para instalar o Buffer de protocolo (a partir da versão atual v3.7.0)

  1. Vá para este site
  2. baixe o arquivo zip de acordo com seu sistema operacional (por exemplo: protoc-3.7.0-osx-x86_64.zip). Isso se aplica também a outros sistemas operacionais.

  3. Mova o executável em protoc-3 / bin / protoc para um de seus diretórios em PATH. No Mac, sugiro colocá-lo em / usr / local / bin

Agora você está pronto para ir 💪🏾

(opcional) Há também um arquivo de inclusão que você pode adicionar. Este é um trecho do 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
fonte
2

Existe outra forma oficial do Google, conforme mencionado por outro usuário.

Leia completamente antes de tentar.

Aqui estão as etapas:

Abra o Terminal e digite o seguinte

  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

Funcionou para mim.

PS
Isso é para a versão 3.7.1 no osx apenas. Se você deseja instalar alguma outra versão / plataforma, visite o link de lançamentos e confira os detalhes da versão mais recente e use essas informações. Referência

Revanth Kausikan
fonte
1
Bom e simples. Obrigado! : tada:
rodrigo-silveira
0

Para usuários da 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
gold-kou
fonte
0

As versões do HomeBrew foram removidas e as fórmulas foram esvaziadas. Portanto, meu conselho é instalá-lo manualmente seguindo as etapas a seguir.

Por enquanto, você precisará criar e instalar o conjunto de ferramentas de buffers de protocolo manualmente.

  1. Faça download do código-fonte: 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. Corre ./configure

  5. Edite src / google / protobuf / message.cc, adicione #include na parte superior do arquivo

  6. Execute o makecomando a partir da raiz da pasta, ou seja, protobuf-2.4.1 /

  7. Corre sudo make install

  8. Execute /usr/local/bin/protoc --versionpara verificar a versão da versão do compilador protobuf. A saída do terminal deve ser:

    Version: libprotoc 2.4.1

Shapan Dashore
fonte