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

informatiker
la source
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

John Gilmore
la source
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.

kksensei
la source
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
danvk
la source
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

Aditya Vikas Devarapalli
la source
1
Mais l'OP demande spécifiquement d'installer l'ancienne version.
Himanshu Tanwar
13

Sur https://github.com/paulirish/homebrew-versions-1 . Travaille pour moi!

brew install https://raw.githubusercontent.com/paulirish/homebrew-versions-1/master/protobuf241.rb
Xiaofan Hu
la source
Tu as sauvé ma journée. Merci beaucoup!
Deepankar Sarkar
Remarque, il est toujours recommandé de parcourir les formules lors de l'installation à partir de sources inconnues. J'ai fait ça, c'était sûr.
Agoston Horvath
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é.

Xiaoqi Chu
la source
8

J'ai utilisé macports

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

Andrii Kovalchuk
la source
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.

stevel
la source
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
Imran
la source
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

Revanth Kausikan
la source
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
or-kou
la source
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

Shapan Dashore
la source