Installation de Google Protocol Buffers sur Mac


101

Je voudrais installer l'ancienne version de Google Protocol Buffers (protobuf-2.4.1) sur mac en utilisant la ligne de commande Terminal. J'ai essayé avec brew install protobuf, mais la dernière version 2.5.0 a été installée. Est-il possible d'installer l'ancienne version à partir du terminal.

Merci


2
Pourquoi voulez-vous une version plus ancienne? Ils sont rétrocompatibles, tant que vous régénérez les fichiers .pb.het .pb.cc.
Kenton Varda

J'ai pensé que je ferais mieux d'utiliser l'ancienne version car le projet a été construit avec 2.4.1. Mais comme vous l'avez dit, j'ai régénéré les deux fichiers et cela fonctionne très bien. Merci.
informatiker

4
Et en général, voici comment installer une version spécifique d'une formule .
Duvrai

Réponses:


146

Il y a quelques problèmes avec la construction de protobuf 2.4.1 à partir des sources sur un Mac. Il y a un patch qui doit également être appliqué. Tout cela est contenu dans la formule homebrew protobuf241, je vous conseille donc de l'utiliser.

Pour installer la version 2.4.1 du tampon de protocole, tapez ce qui suit dans un terminal:

brew tap homebrew/versions
brew install protobuf241

Si vous avez déjà une version de tampon de protocole que vous avez essayé d'installer à partir des sources, vous pouvez taper ce qui suit dans un terminal pour que le code source soit écrasé par la version homebrew:

brew link --force --overwrite protobuf241

Vérifiez que vous avez maintenant la bonne version installée en tapant:

protoc --version

Il devrait afficher 2.4.1


2
Hey j'ai essayé ceci, cependant sur protoc --version je reçois -bash: protoc: commande not found
ramin

La version 2.4.1 est installée dans "/usr/local/Cellar/protobuf241/2.4.1", vous devez simplement créer un lien symbolique de "../2.4.1/protoc" et le mettre dans "/ usr / local / bin ". Essayez que "protoc --version" et devrait fonctionner exactement comme il se doit.
Gyuri Majercsik

4
Ce robinet n'est plus disponible
Mihai Todor

22
Ne fonctionne plus. Je reçoisWarning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
Shih-Min Lee

1
il avait migré vers le noyau, utilisez plutôt ceci: brew tap homebrew / homebrew-core
Huy Hóm Hỉnh

70

Ce n'est pas par infusion, mais le résultat final est le même.

  1. Téléchargez le protobuf-2.4.1 depuis https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
  2. Extrayez le fichier tar.gz.
  3. $ cd ~ / Téléchargements / protobuf-2.4.1
  4. $. / configurer
  5. $ faire
  6. $ faire chèque
  7. $ sudo faire l'installation
  8. $ quel protocole
  9. $ protoc --version

Les étapes 4 à 7 proviennent du fichier README.txt de l'archive tar protobuf.


2
J'ai essayé l'approche brew, mais pour la dernière version de protobuf (maintenant 2.6.0), il se compile facilement à partir des sources en utilisant la liste exacte des étapes ci-dessus. Cela devient encore plus utile lorsque vous essayez d'étendre les définitions proto standard (par exemple, en ajoutant des options de champ en étendant descriptor.proto) car vous avez besoin des sources originales ou vous devez faire référence au chemin Cellar dans la version home-brew de l'installation (moche?) .
Necro

2
En exécutant la commande make, je me suis retrouvé avec des erreurs: 3 erreurs générées. make [2]: *** [message.lo] Erreur 1 make [1]: *** [all-recursive] Erreur 1 make: *** [all] Erreur 2
Anandaraja_Srinivasan

C'est la solution qui a fonctionné pour moi. Mais voyez la réponse de Xiaoqi Chu face aux erreurs de make.
Amudhan

les étapes 4 à 7 sont à /protobuf/src/README.md, j'aurais aimé qu'il soit README.mddans le /protobufrépertoire
Kevin Zhao

4
Cela a fonctionné pour moi, le seul changement est que vous devez télécharger les sources de github.com/google/protobuf/releases
r00tt

34

C'est une nouvelle année et il y a un nouveau décalage entre la version de protobufHomebrew et la version de pointe. À partir de février 2016, brew install protobufvous donnera la version 2.6.1.

Si vous souhaitez plutôt la version bêta 3.0, vous pouvez l'installer avec:

brew install --devel protobuf

18

Si vous avez atterri ici pour savoir comment installer Protocol Buffers sur Mac, cela peut être fait à l'aide de Homebrew en exécutant la commande ci-dessous

brew install protobuf

Il installe la dernière version de protobuf disponible. Pour moi, au moment de la rédaction de cet article, cela a installé la v3.7.1

Si vous souhaitez installer une version plus ancienne, veuillez rechercher les versions disponibles sur la page du package Paquet Protobuf - Homebrew et installer cette version spécifique du package.

La plus ancienne version de protobuf disponible dans ce package est la v3.6.1.3


1
Mais l'OP demande spécifiquement d'installer l'ancienne version.
Himanshu Tanwar


12

Pour une raison quelconque, je dois utiliser protobuf 2.4.1 dans mon projet sur OS X El Capitan. Cependant, l'homebrew a supprimé protobuf241 de sa formule. Je l'installe manuellement selon la réponse de @ kksensei et je dois corriger une erreur pendant le processus.

Pendant le processus de création, j'obtiens 3 erreurs comme suit:

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;

                           ^

(Désolé, je ne sais pas comment joindre du code lorsque le code contient '' ')

Si vous obtenez la même erreur, veuillez modifier src / google / protobuf / message.cc, ajoutez #include <istream>en haut du fichier et $ makerecommencez et ne devrait pas avoir d'erreur. Après cela, faites $ sudo make install. Une fois l'installation terminée, $protoc --versionle résultat doit être affiché.



6
brew install --devel protobuf

S'il vous indique "protobuf-2.6.1 déjà installé": 1. brew uninstall --devel protobuf 2. brew link libtool 3.brew install --devel protobuf


2

FWIW., La dernière version de brew est à protobuf 3.0 et n'inclut aucune formule pour les anciennes versions. C'est quelque peu «gênant».

Alors que protobuf peut être compatible au niveau du fil, il n'est absolument pas compatible au niveau des classes java générées: vous ne pouvez pas utiliser les fichiers .class générés avec protoc 2.4 avec le JAR protobuf-2.5, etc. etc. Les versions de protobuf sont un sujet tellement sensible dans la pile Hadoop: cela nécessite invariablement une coordination entre différents projets et est suffisamment traumatisant pour que personne n'aime le faire.


2

Pour installer Protocol Buffer (à partir de la version v3.7.0 d'aujourd'hui)

  1. Aller sur ce site
  2. téléchargez le fichier zip en fonction de votre OS (par exemple: protoc-3.7.0-osx-x86_64.zip). Ceci s'applique également à d'autres OS.

  3. Déplacez l'exécutable dans protoc-3 / bin / protoc vers l'un de vos répertoires dans PATH. Sous Mac, je suggère de le mettre dans / usr / local / bin

Maintenant tu es prêt à partir 💪🏾

(facultatif) Il existe également un fichier d'inclusion que vous pouvez ajouter. Ceci est un extrait du 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

Il existe un autre moyen officiel de Google, comme mentionné par un autre utilisateur.

Lisez-le entièrement avant d'essayer.

Voici les étapes:

Ouvrez le terminal et saisissez ce qui suit

  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

A travaillé pour moi.

PS
Ceci est pour la version 3.7.1 dans osx uniquement. Si vous souhaitez installer une autre version / plate-forme, visitez le lien des versions et consultez les détails de la dernière version, puis utilisez ces informations. Référence


1
Sympa et simple. Merci! : tada:
rodrigo-silveira


0

Pour les utilisateurs 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

0

Les versions de HomeBrew ont été supprimées et les formules ont été vidées. Par conséquent, mon conseil est de l'installer manuellement en suivant les étapes suivantes.

Pour le moment, vous devrez créer et installer le jeu d'outils Protocol Buffers manuellement.

  1. Télécharger le code source: 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. Courir ./configure

  5. Modifiez src / google / protobuf / message.cc, ajoutez #include en haut du fichier

  6. Exécutez la makecommande à partir de la racine du dossier, c'est-à-dire protobuf-2.4.1 /

  7. Courir sudo make install

  8. Exécutez /usr/local/bin/protoc --versionpour vérifier la version de la version du compilateur protobuf La sortie du terminal doit être:

    Version: libprotoc 2.4.1

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.