Mac에 Google 프로토콜 버퍼 설치


101

터미널 명령 줄을 사용하여 이전 버전의 Google 프로토콜 버퍼 (protobuf-2.4.1)를 Mac에 설치하고 싶습니다. 로 시도 brew install protobuf했지만 최신 버전 2.5.0이 설치되었습니다. 터미널에서 이전 버전을 설치할 수 있습니까?

감사


2
왜 이전 버전을 원하십니까? .pb.h.pb.cc파일 을 재생성하는 한 이전 버전과 호환됩니다 .
Kenton Varda 2014

프로젝트가 2.4.1로 빌드되었으므로 이전 버전을 더 잘 사용한다고 생각했습니다. 그러나 당신이 말했듯이 두 파일을 다시 생성했으며 잘 작동합니다. 감사.
informatiker

답변:


146

Mac의 소스에서 protobuf 2.4.1을 빌드하는 데 몇 가지 문제가 있습니다. 또한 적용해야하는 패치가 있습니다. 이 모든 것은 자작 protobuf241 공식에 포함되어 있으므로 사용하는 것이 좋습니다.

프로토콜 버퍼 버전 2.4.1을 설치하려면 터미널에 다음을 입력하십시오.

brew tap homebrew/versions
brew install protobuf241

소스에서 설치하려는 프로토콜 버퍼 버전이 이미있는 경우 터미널에 다음을 입력하여 홈브류 버전에서 소스 코드를 덮어 쓸 수 있습니다.

brew link --force --overwrite protobuf241

다음을 입력하여 올바른 버전이 설치되었는지 확인하십시오.

protoc --version

2.4.1이 표시되어야합니다.


2
이봐, 난이 시도, howeever에 protoc --version 내가 GET -bash : protoc : 명령을 찾을 수 없습니다
라민

버전 2.4.1은 "/usr/local/Cellar/protobuf241/2.4.1"에 설치되어 있습니다. "../2.4.1/protoc"의 심볼릭 링크를 만들고 "/ usr / local / bin"에 넣어야합니다. ". "protoc --version"보다 시도하고 정확히 작동해야합니다.
규리 Majercsik

4
그 탭은 더 이상 사용할 수 없습니다
미하이 Todor

22
더 이상 작동하지 않습니다. I getWarning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
Shih-Min Lee

1
코어로 마이그레이션
되었으므로

70

이것은 양조를 통한 것이 아니지만 최종 결과는 동일합니다.

  1. https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz 에서 protobuf-2.4.1을 다운로드합니다.
  2. tar.gz 파일을 추출하십시오.
  3. $ cd ~ / 다운로드 /protobuf-2.4.1
  4. $. / 구성
  5. $ make
  6. $ 확인 확인
  7. $ sudo make install
  8. $ which protoc
  9. $ protoc --version

4-7 단계는 protobuf tarball의 README.txt 파일에서 가져온 것입니다.


2
양조 방법을 시도했지만 최신 버전의 protobuf (현재 2.6.0)의 경우 위 단계의 정확한 목록을 사용하여 소스에서 쉽게 컴파일됩니다. 원본 소스가 필요하거나 그렇지 않으면 설치의 홈브류 버전에서 Cellar 경로를 참조해야하기 때문에 표준 proto 정의를 확장하려고 할 때 (예 : descriptor.proto를 확장하여 필드 옵션 추가) 훨씬 더 유용합니다. .
Necro 2015 년

2
make 명령을 실행할 때 오류가 발생했습니다. 메이크업 [2] : *** [message.lo] 오류 1 메이크업 [1] : *** [모든 재귀] 오류 1 메이크업 : *** [모든] 오류 2
Anandaraja_Srinivasan

이것은 나를 위해 일한 솔루션입니다. 그러나 제작 중 오류에 직면했을 때 Xiaoqi Chu의 답변을 참조하십시오.
Amudhan

단계 4-7에있다 /protobuf/src/README.md, 나는 그것이 있었다하고자하는 README.md/protobuf디렉토리
케빈 자오

4
이것이 저에게 효과가 있었던 유일한 변화는 github.com/google/protobuf/releases
r00tt

34

새해를 맞이 protobuf하여 Homebrew 버전 과 최첨단 릴리스 간에 새로운 불일치가 있습니다. 2016 년 2 월부터 brew install protobuf버전 2.6.1이 제공됩니다.

대신 3.0 베타 릴리스를 원하는 경우 다음을 사용하여 설치할 수 있습니다.

brew install --devel protobuf

17

Mac에 프로토콜 버퍼를 설치하는 방법을 찾고있는 경우 아래 명령을 실행하여 Homebrew를 사용하여 수행 할 수 있습니다.

brew install protobuf

사용 가능한 최신 버전의 protobuf를 설치합니다. 저에게는 글을 쓰는 시점에 v3.7.1 이 설치되었습니다.

이전 버전을 설치하려면 패키지 페이지 Protobuf Package-Homebrew 에서 사용 가능한 버전을 찾아 패키지의 특정 버전을 설치하십시오.

이 패키지에서 사용 가능한 가장 오래된 protobuf 버전은 v3.6.1.3입니다.


1
그러나 OP는 특히 이전 버전을 설치하도록 요청합니다.
Himanshu Tanwar


12

어떤 이유로 OS X El Capitan의 프로젝트에서 protobuf 2.4.1을 사용해야합니다. 그러나 homebrew는 공식에서 protobuf241을 제거했습니다. @kksensei의 답변에 따라 수동으로 설치하고 프로세스 중에 일부 오류를 수정해야합니다.

만드는 과정에서 다음과 같은 3 가지 오류가 발생합니다.

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;

                           ^

(죄송합니다. 코드에 '`'가 포함 된 경우 코드를 첨부하는 방법을 모르겠습니다.)

동일한 오류가 발생하는 경우 src / google / protobuf / message.cc를 수정 #include <istream>하고 파일 상단에 추가 한 다음 $ make다시 수행 하면 오류가 발생하지 않습니다. 그 후 $ sudo make install. 설치가 완료되면 $protoc --version올바른 결과가 표시되어야합니다.



6
brew install --devel protobuf

"protobuf-2.6.1이 이미 설치됨"이라고 표시되는 경우 : 1. brew uninstall --devel protobuf 2. brew link libtool 3.brew install --devel protobuf


2

FWIW., brew의 최신 버전은 protobuf 3.0이며 이전 버전에 대한 공식은 포함되어 있지 않습니다. 이것은 다소 "불편하다".

protobuf는 와이어 수준에서 호환 될 수 있지만 생성 된 자바 클래스 수준에서는 절대 호환되지 않습니다. protobuf-2.5 JAR 등과 함께 protoc 2.4로 생성 된 .class 파일을 사용할 수 없습니다. 이것이 업데이트 이유입니다. protobuf 버전은 Hadoop 스택에서 매우 민감한 주제입니다. 항상 서로 다른 프로젝트에 대한 조정이 필요하며 아무도 좋아하지 않을 정도로 충격적입니다.


2

프로토콜 버퍼를 설치하려면 (현재 버전 v3.7.0 기준)

  1. 웹 사이트로 이동
  2. OS에 따라 zip 파일을 다운로드합니다 (예 : protoc-3.7.0-osx-x86_64.zip). 이것은 다른 OS에도 적용됩니다.

  3. protoc-3 / bin / protoc의 실행 파일을 PATH의 디렉토리 중 하나로 이동합니다. Mac에서는 / usr / local / bin에 넣는 것이 좋습니다.

이제 잘하셨습니다 💪🏾

(선택 사항) 포함 파일도 있으며 추가 할 수 있습니다. 이것은 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

다른 사용자가 언급했듯이 Google의 또 다른 공식적인 방법이 있습니다.

시도하기 전에 완전히 읽으십시오.

단계는 다음과 같습니다.

터미널을 열고 다음을 입력하십시오.

  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

나를 위해 일했습니다.

PS
이것은 osx의 버전 3.7.1 전용입니다. 다른 버전 / 플랫폼을 설치하려면 릴리스 링크를 하여 최신 버전의 세부 정보를 확인하고 해당 정보를 사용하십시오. 참고


1
멋지고 간단합니다. 감사! :
tada



0

HomeBrew 버전이 제거되고 공식이 비었습니다. 따라서 다음 단계에 따라 수동으로 설치하는 것이 좋습니다.

당분간은 프로토콜 버퍼 도구 세트를 수동으로 빌드하고 설치해야합니다.

  1. 소스 코드 다운로드 : 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. 운영 ./configure

  5. src / google / protobuf / message.cc를 수정하고 파일 상단에 #include를 추가합니다.

  6. make폴더의 루트, 즉 protobuf-2.4.1 /에서 명령을 실행 합니다.

  7. 운영 sudo make install

  8. 실행 /usr/local/bin/protoc --version하여 protobuf 컴파일러 버전의 버전을 확인합니다. 터미널 출력은 다음과 같아야합니다.

    Version: libprotoc 2.4.1

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.