J'aimerais installer l'ancienne version de Google Protocol Buffers (protobuf-2.4.1) sur mac à l'aide de 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 depuis un terminal?.
Merci
La création de protobuf 2.4.1 à partir de la source sur un Mac pose quelques problèmes. Il y a un patch qui doit aussi être appliqué. Tout cela est contenu dans la formule de l'homebrew protobuf241, je vous conseillerais 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à essayé d'installer une version du tampon de protocole à partir de la source, vous pouvez saisir ce qui suit dans un terminal pour que le code source soit remplacé 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
Ce n'est pas par brassage, mais le résultat final est le même.
Les étapes 4 à 7 proviennent du fichier README.txt de l'archive protobuf.
C'est une nouvelle année et il y a un nouveau décalage entre la version de protobuf
dans Homebrew et la version tranchante. À partir de février 2016, brew install protobuf
vous donnera la version 2.6.1.
Si vous souhaitez plutôt la version 3.0 bêta, vous pouvez l'installer avec:
brew install --devel protobuf
De https://github.com/paulirish/homebrew-versions-1 . Travaille pour moi!
brew install https://raw.githubusercontent.com/paulirish/homebrew-versions-1/master/protobuf241.rb
Pour une raison quelconque, je dois utiliser protobuf 2.4.1 dans mon projet sur OS X El Capitan. Cependant, l'homebrew a supprimé le protobuf241 de sa formule. Je l'installe en fonction de la réponse de @ kksensei manuellement 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 attacher un code quand le code contient '' ')
Si vous obtenez la même erreur, modifiez src/google/protobuf/message.cc, ajoutez #include <istream>
en haut du fichier, puis relancez $ make
et ne recevez aucune erreur. Après cela, faites $ Sudo make install
. Une fois l'installation terminée, $protoc --version
devrait afficher le résultat correct.
J'ai utilisé macports
Sudo port install protobuf-cpp
brew install --devel protobuf
Si cela vous indique "protobuf-2.6.1 déjà installé": 1. brew uninstall --devel protobuf
2. brew link libtool
3. brew install --devel protobuf
FWIW., La dernière version de brasser est à protobuf 3.0, et n'inclut aucune formule pour les versions plus anciennes. C'est un peu "gênant".
Alors que protobuf peut être compatible au niveau du câblage, il n’est absolument pas compatible au niveau des classes Java générées: vous ne pouvez pas utiliser de fichiers .class générés avec le protocole 2.4 avec le fichier JOB protobuf-2.5, etc. C'est pourquoi la mise à jour Les versions de protobuf sont un sujet tellement sensible dans la pile Hadoop: elles nécessitent invariablement une coordination entre différents projets et sont suffisamment traumatisantes pour que personne n’aime le faire.
Ce processus a été simplifié pour simplement
brew install protobuf
Il installe la dernière version de protobuf disponible. Pour moi, au moment de l'écriture, cela a installé le v3.7.1
téléchargez le fichier Zip en fonction de votre système d’exploitation (par exemple: protoc-3.7.0-osx-x86_64.Zip). Cela s'applique également à d'autres systèmes d'exploitation.
Déplacez l'exécutable de 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
(facultatif) Il existe également un fichier d'inclusion que vous pouvez ajouter. Ceci est un extrait du fichier 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
vous pouvez installer depuis la page de liens officielle fournie par google http://google.github.io/proto-lens/installing-protoc.html
Il existe un autre moyen officiel de Google, mentionné par un autre utilisateur.
Lisez-le complètement avant d'essayer.
Voici les étapes:
Ouvrez Terminal et tapez ce qui suit
PROTOC_Zip=protoc-3.7.1-osx-x86_64.Zip
curl -OL https://github.com/google/protobuf/releases/download/v3.7.1/$PROTOC_Zip
Sudo unzip -o $PROTOC_Zip -d /usr/local bin/protoc
rm -f $PROTOC_Zip
Travaillé pour moi.
P.S.
Ceci concerne uniquement la version 3.7.1 dans osx. Si vous souhaitez installer une autre version/plate-forme, visitez le lien releases release et consultez les détails de la dernière version, puis utilisez ces informations. Référence