Instalowanie buforów protokołów Google na komputerze Mac


101

Chciałbym zainstalować starszą wersję buforów protokołów Google (protobuf-2.4.1) na komputerze Mac za pomocą wiersza poleceń terminala. Próbowałem z brew install protobuf, ale najnowsza wersja 2.5.0 została zainstalowana. Czy można zainstalować starszą wersję z terminala.

Dzięki


2
Dlaczego chcesz starszą wersję? Są kompatybilne wstecz, o ile ponownie wygenerujesz pliki .pb.hi .pb.cc.
Kenton Varda,

Pomyślałem, że lepiej użyć starej wersji, ponieważ projekt został skompilowany z 2.4.1. Ale jak powiedziałeś, zregenerowałem oba pliki i działa dobrze. Dzięki.
informatiker

4
Ogólnie rzecz biorąc, oto jak zainstalować określoną wersję formuły .
Duvrai

Odpowiedzi:


146

Istnieją pewne problemy z budowaniem protobuf 2.4.1 ze źródeł na komputerze Mac. Jest łatka, którą również należy nałożyć. Wszystko to zawarte jest w formule protobuf241 homebrew, więc radziłbym go używać.

Aby zainstalować bufor protokołu w wersji 2.4.1, wpisz w terminalu:

brew tap homebrew/versions
brew install protobuf241

Jeśli masz już wersję bufora protokołu, którą próbowałeś zainstalować ze źródła, możesz wpisać następujące polecenie w terminalu, aby kod źródłowy został nadpisany przez wersję homebrew:

brew link --force --overwrite protobuf241

Sprawdź, czy masz teraz zainstalowaną poprawną wersję, wpisując:

protoc --version

Powinien wyświetlić 2.4.1


2
Hej, próbowałem tego, jednak na protokole - wersja otrzymuję -bash: protokół: polecenie nie zostało znalezione
ramin

Wersja 2.4.1 jest zainstalowana w "/usr/local/Cellar/protobuf241/2.4.1", powinieneś po prostu utworzyć dowiązanie symboliczne "../2.4.1/protoc" i umieścić je w "/ usr / local / bin ”. Spróbuj zamiast "protoc --version" i powinno działać dokładnie tak, jak powinno.
Gyuri Majercsik

4
Ten kran nie jest już dostępny
Mihai Todor

23
Już nie działa. DostajęWarning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
Shih-Min Lee

1
migrował do rdzenia, użyj tego zamiast tego: napar z kranu homebrew / homebrew-core
Huy Hóm Hỉnh

70

To nie jest napar, ale efekt końcowy jest taki sam.

  1. Pobierz protobuf-2.4.1 z https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
  2. Rozpakuj plik tar.gz.
  3. $ cd ~ / Downloads / protobuf-2.4.1
  4. $. / configure
  5. $ make
  6. $ zrób czek
  7. $ sudo make install
  8. $ który protokół
  9. $ protoc --version

Kroki 4-7 pochodzą z pliku README.txt z tarballa protobuf.


2
Wypróbowałem podejście do parzenia, ale dla najnowszej wersji protobuf (obecnie 2.6.0) łatwo kompiluje się ze źródeł, używając dokładnej listy powyższych kroków. Staje się to jeszcze bardziej przydatne, gdy próbujesz rozszerzyć standardowe definicje proto (np. Dodając opcje pola poprzez rozszerzenie descriptor.proto), ponieważ potrzebujesz oryginalnych źródeł lub w inny sposób musisz odwołać się do ścieżki piwnicy w domowej wersji instalacji (brzydka?) .
Necro

2
Po uruchomieniu polecenia make skończyło się na błędach: wygenerowano 3 błędy. make [2]: *** [message.lo] Błąd 1 make [1]: *** [all-recursive] Error 1 make: *** [all] Error 2
Anandaraja_Srinivasan

To rozwiązanie, które mi się sprawdziło. Ale zobacz odpowiedź Xiaoqi Chu, gdy napotkasz błędy podczas tworzenia.
Amudhan

Kroki 4-7 są /protobuf/src/README.md, życzę było w README.mdw /protobufkatalogu
Kevin Zhao

4
To zadziałało dla mnie, jedyną zmianą jest to, że musisz pobrać źródła z github.com/google/protobuf/releases
r00tt

34

Jest nowy rok i pojawia się nowa niezgodność między wersją protobufw Homebrew a najnowszą wersją. Od lutego 2016 r brew install protobuf. Udostępniamy wersję 2.6.1.

Jeśli zamiast tego chcesz wersję beta 3.0, możesz zainstalować ją za pomocą:

brew install --devel protobuf

18

Jeśli wylądowałeś tutaj, szukając sposobu zainstalowania buforów protokołów na komputerze Mac, można to zrobić za pomocą Homebrew, uruchamiając poniższe polecenie

brew install protobuf

Instaluje najnowszą dostępną wersję protobuf. Dla mnie, w momencie pisania tego tekstu , zainstalowałem v3.7.1

Jeśli chcesz zainstalować starszą wersję, wyszukaj dostępne wersje na stronie pakietu Protobuf Package - Homebrew i zainstaluj tę konkretną wersję pakietu.

Najstarszą dostępną wersją protobuf w tym pakiecie jest 3.6.1.3


1
Ale OP konkretnie prosi o zainstalowanie starej wersji.
Himanshu Tanwar


12

Z jakiegoś powodu muszę używać protobuf 2.4.1 w moim projekcie na OS X El Capitan. Jednak homebrew usunął protobuf241 ze swojej formuły. Instaluję go zgodnie z odpowiedzią @ kksensei ręcznie i muszę naprawić jakiś błąd podczas procesu.

Podczas procesu tworzenia otrzymuję 3 błędy, takie jak:

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;

                           ^

(Przepraszam, nie wiem, jak dołączyć kod, gdy kod zawiera '' '')

Jeśli napotkasz ten sam błąd, edytuj src / google / protobuf / message.cc, dodaj #include <istream>na początku pliku i zrób to $ makeponownie. Nie powinno pojawić się żadnych błędów. Po tym zrób $ sudo make install. Po zakończeniu instalacji $protoc --versionpowinien wyświetlić prawidłowy wynik.



6
brew install --devel protobuf

Jeśli powie Ci, że „protobuf-2.6.1 jest już zainstalowany”: 1. brew uninstall --devel protobuf 2. brew link libtool 3.brew install --devel protobuf


2

FWIW., Najnowsza wersja brew to protobuf 3.0 i nie zawiera żadnych formuł dla starszych wersji. Jest to nieco „niewygodne”.

Chociaż protobuf może być kompatybilny na poziomie wire, to jest absolutnie niekompatybilny na poziomie generowanych klas java: nie możesz używać plików .class wygenerowanych za pomocą protokołu 2.4 z protokołem protobuf-2.5 JAR itp. Itd. Dlatego właśnie aktualizowanie wersje protobuf to tak delikatny temat w stosie Hadoop: niezmiennie wymaga koordynacji między różnymi projektami i jest na tyle traumatyczny, że nikt nie lubi tego robić.


2

Aby zainstalować Protocol Buffer (od dzisiejszej wersji v3.7.0)

  1. Przejdź do tej witryny
  2. pobierz plik zip zgodnie z Twoim systemem operacyjnym (np .: protoc-3.7.0-osx-x86_64.zip). Dotyczy to również innych systemów operacyjnych.

  3. Przenieś plik wykonywalny w protokole protoc-3 / bin / protoc do jednego z katalogów w PATH. W Mac sugeruję umieścić go w / usr / local / bin

Teraz możesz iść 💪🏾

(opcjonalnie) Istnieje również plik dołączania, który możesz dodać. To jest fragment pliku 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

Istnieje inny oficjalny sposób Google, o którym wspomniał inny użytkownik.

Przeczytaj go w pełni, zanim spróbujesz.

Oto kroki:

Otwórz Terminal i wpisz następujące polecenie

  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

Pracował dla mnie.

PS
Dotyczy tylko wersji 3.7.1 w systemie OSX. Jeśli chcesz zainstalować inną wersję / platformę, odwiedź łącze do wersji, sprawdź szczegóły najnowszej wersji i skorzystaj z tych informacji. Odniesienie


1
Ładnie i prosto. Dzięki! : tada:
rodrigo-silveira



0

Wersje HomeBrew zostały usunięte, a formuły opróżnione. Dlatego radzę zainstalować go ręcznie, wykonując następujące kroki.

Na razie będziesz musiał ręcznie zbudować i zainstalować zestaw narzędzi Protocol Buffers.

  1. Pobierz kod źródłowy: 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. Biegać ./configure

  5. Edytuj src / google / protobuf / message.cc, dodaj #include na górze pliku

  6. Uruchom makepolecenie z katalogu głównego folderu, tj. Protobuf-2.4.1 /

  7. Biegać sudo make install

  8. Uruchom, /usr/local/bin/protoc --versionaby sprawdzić wersję kompilatora protobuf. Wyjście terminala powinno wyglądać następująco:

    Version: libprotoc 2.4.1

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.