Installazione di Google Protocol Buffer su mac


101

Vorrei installare la versione precedente di Google Protocol Buffers (protobuf-2.4.1) su Mac utilizzando la riga di comando di Terminal. Ho provato con brew install protobuf, ma è stata installata l'ultima versione 2.5.0. È possibile installare la versione precedente dal terminale.

Grazie


2
Perché vuoi una versione precedente? Sono compatibili con le versioni precedenti, a condizione che vengano rigenerati i file .pb.he .pb.cc.
Kenton Varda

Ho pensato di usare meglio la vecchia versione poiché il progetto è stato compilato con 2.4.1. Ma come hai detto ho rigenerato i due file e funziona benissimo. Grazie.
informatiker

Risposte:


146

Ci sono alcuni problemi con la creazione di protobuf 2.4.1 dai sorgenti su un Mac. C'è anche una patch che deve essere applicata. Tutto questo è contenuto nella formula homebrew protobuf241, quindi consiglierei di usarlo.

Per installare la versione 2.4.1 del buffer di protocollo, digitare quanto segue in un terminale:

brew tap homebrew/versions
brew install protobuf241

Se hai già una versione del buffer di protocollo che hai provato a installare dal sorgente, puoi digitare quanto segue in un terminale per far sì che il codice sorgente venga sovrascritto dalla versione homebrew:

brew link --force --overwrite protobuf241

Verifica di avere installato la versione corretta digitando:

protoc --version

Dovrebbe visualizzare 2.4.1


2
Ehi, ho provato questo, comunque su protoc --version I get -bash: protoc: command not found
ramin

La versione 2.4.1 è installata in "/usr/local/Cellar/protobuf241/2.4.1", dovresti semplicemente creare un collegamento simbolico di "../2.4.1/protoc" e metterlo in "/ usr / local / bin ". Prova "protoc --version" e dovrebbe funzionare esattamente come dovrebbe.
Gyuri Majercsik

4
Quel rubinetto non è più disponibile
Mihai Todor

22
Non funziona più. OttengoWarning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
Shih-Min Lee

1
era migrato al core, usa questo invece: brew tap homebrew / homebrew-core
Huy Hóm Hỉnh

70

Non è tramite birra, ma il risultato finale è lo stesso.

  1. Scarica il protobuf-2.4.1 da https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
  2. Estrai il file tar.gz.
  3. $ cd ~ / Download / protobuf-2.4.1
  4. $. / Configure
  5. $ make
  6. $ make check
  7. $ sudo make install
  8. $ quale protoc
  9. $ protoc --version

I passaggi 4-7 provengono dal file README.txt dal tarball protobuf.


2
Ho provato l'approccio brew, ma per l'ultima versione di protobuf (ora 2.6.0) si compila facilmente dai sorgenti utilizzando l'elenco esatto dei passaggi sopra. Ciò diventa ancora più utile quando si tenta di estendere le definizioni di proto standard (ad esempio, aggiungendo opzioni di campo estendendo descriptor.proto) poiché sono necessari i sorgenti originali o altrimenti si deve fare riferimento al percorso Cellar nella versione home-brew dell'installazione (brutto?) .
Necro

2
Eseguendo il comando make sono finito con errori: 3 errori generati. make [2]: *** [message.lo] Error 1 make [1]: *** [all-recursive] Error 1 make: *** [all] Error 2
Anandaraja_Srinivasan

Questa è la soluzione che ha funzionato per me. Ma guarda la risposta di Xiaoqi Chu quando affronta gli errori durante la creazione.
Amudhan

passaggi 4-7 sono a /protobuf/src/README.md, vorrei che fosse nella README.mdnella /protobufdirectory
Kevin Zhao

4
Questo ha funzionato per me, l'unica modifica è che devi scaricare le fonti da github.com/google/protobuf/releases
r00tt

34

È un nuovo anno e c'è una nuova discrepanza tra la versione di protobufin Homebrew e la versione all'avanguardia. A partire da febbraio 2016, brew install protobufti fornirà la versione 2.6.1.

Se invece desideri la versione beta 3.0, puoi installarla con:

brew install --devel protobuf

17

Se sei arrivato qui alla ricerca di come installare i buffer di protocollo su Mac, puoi farlo utilizzando Homebrew eseguendo il comando seguente

brew install protobuf

Installa l'ultima versione di protobuf disponibile. Per me, al momento della scrittura, questo ha installato la v3.7.1

Se desideri installare una versione precedente, cerca quelle disponibili dalla pagina del pacchetto Protobuf Package - Homebrew e installa quella specifica versione del pacchetto.

La versione protobuf più vecchia disponibile in questo pacchetto è la v3.6.1.3


1
Ma l'OP richiede specificamente l'installazione della vecchia versione.
Himanshu Tanwar


12

Per qualche motivo ho bisogno di utilizzare protobuf 2.4.1 nel mio progetto su OS X El Capitan. Tuttavia, homebrew ha rimosso protobuf241 dalla sua formula. Lo installo manualmente in base alla risposta di @ kksensei e devo correggere alcuni errori durante il processo.

Durante il processo di creazione, ottengo 3 errori come i seguenti:

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;

                           ^

(Mi spiace, non so come allegare il codice quando il codice contiene '' ')

Se ottieni lo stesso errore, modifica src / google / protobuf / message.cc, aggiungi #include <istream>all'inizio del file e ripeti e non $ makedovrebbero ricevere errori. Dopo di che $ sudo make install. Al termine dell'installazione $protoc --versiondovrebbe visualizzare il risultato corretto.



6
brew install --devel protobuf

Se ti dice "protobuf-2.6.1 già installato": 1. brew uninstall --devel protobuf 2. brew link libtool 3.brew install --devel protobuf


2

FWIW., L'ultima versione di brew è protobuf 3.0 e non include formule per le versioni precedenti. Questo è un po '"scomodo".

Sebbene protobuf possa essere compatibile a livello di filo, non è assolutamente compatibile a livello di classi java generate: non puoi usare file .class generati con protoc 2.4 con il JAR protobuf-2.5, ecc. Ecc. Ecco perché l'aggiornamento Le versioni protobuf sono un argomento così delicato nello stack Hadoop: richiede invariabilmente il coordinamento tra diversi progetti ed è abbastanza traumatico che a nessuno piace farlo.


2

Per installare Protocol Buffer (a partire dalla versione odierna v3.7.0)

  1. Vai a questo sito
  2. scarica il file zip in base al tuo sistema operativo (es: protoc-3.7.0-osx-x86_64.zip). Questo vale anche per altri sistemi operativi.

  3. Sposta l'eseguibile in protoc-3 / bin / protoc in una delle tue directory in PATH. In Mac suggerisco di metterlo in / usr / local / bin

Adesso sei a posto 💪🏾

(opzionale) C'è anche un file di inclusione che puoi aggiungere. Questo è uno snippet di 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

C'è un altro modo ufficiale di Google, come menzionato da un altro utente.

Leggilo completamente prima di provare.

Ecco i passaggi:

Apri Terminale e digita quanto segue

  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

Ha funzionato per me.

PS
Questo è solo per la versione 3.7.1 in osx. Se desideri installare qualche altra versione / piattaforma, visita il collegamento alle versioni e controlla i dettagli dell'ultima versione e utilizza tali informazioni. Riferimento


1
Bello e semplice. Grazie! : tada:
rodrigo-silveira



0

Le versioni di HomeBrew sono state rimosse e le formule sono state svuotate. Pertanto, il mio consiglio è di installarlo manualmente seguendo i seguenti passaggi.

Per il momento sarà necessario creare e installare manualmente il set di strumenti Protocol Buffers.

  1. Scarica il codice sorgente: 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. Correre ./configure

  5. Modifica src / google / protobuf / message.cc, aggiungi #include all'inizio del file

  6. Esegui il makecomando dalla radice della cartella, ovvero protobuf-2.4.1 /

  7. Correre sudo make install

  8. Esegui /usr/local/bin/protoc --versionper verificare la versione della versione del compilatore protobuf L'output del terminale dovrebbe essere:

    Version: libprotoc 2.4.1

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.