터미널 명령 줄을 사용하여 이전 버전의 Google 프로토콜 버퍼 (protobuf-2.4.1)를 Mac에 설치하고 싶습니다. 로 시도 brew install protobuf
했지만 최신 버전 2.5.0이 설치되었습니다. 터미널에서 이전 버전을 설치할 수 있습니까?
감사
터미널 명령 줄을 사용하여 이전 버전의 Google 프로토콜 버퍼 (protobuf-2.4.1)를 Mac에 설치하고 싶습니다. 로 시도 brew install protobuf
했지만 최신 버전 2.5.0이 설치되었습니다. 터미널에서 이전 버전을 설치할 수 있습니까?
감사
답변:
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이 표시되어야합니다.
Warning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
이것은 양조를 통한 것이 아니지만 최종 결과는 동일합니다.
4-7 단계는 protobuf tarball의 README.txt 파일에서 가져온 것입니다.
/protobuf/src/README.md
, 나는 그것이 있었다하고자하는 README.md
의 /protobuf
디렉토리
Mac에 프로토콜 버퍼를 설치하는 방법을 찾고있는 경우 아래 명령을 실행하여 Homebrew를 사용하여 수행 할 수 있습니다.
brew install protobuf
사용 가능한 최신 버전의 protobuf를 설치합니다. 저에게는 글을 쓰는 시점에 v3.7.1 이 설치되었습니다.
이전 버전을 설치하려면 패키지 페이지 Protobuf Package-Homebrew 에서 사용 가능한 버전을 찾아 패키지의 특정 버전을 설치하십시오.
이 패키지에서 사용 가능한 가장 오래된 protobuf 버전은 v3.6.1.3입니다.
에서 https://github.com/paulirish/homebrew-versions-1 . 나를 위해 작동합니다!
brew install https://raw.githubusercontent.com/paulirish/homebrew-versions-1/master/protobuf241.rb
어떤 이유로 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
올바른 결과가 표시되어야합니다.
나는 맥 포트를 사용했다
sudo port install protobuf-cpp
FWIW., brew의 최신 버전은 protobuf 3.0이며 이전 버전에 대한 공식은 포함되어 있지 않습니다. 이것은 다소 "불편하다".
protobuf는 와이어 수준에서 호환 될 수 있지만 생성 된 자바 클래스 수준에서는 절대 호환되지 않습니다. protobuf-2.5 JAR 등과 함께 protoc 2.4로 생성 된 .class 파일을 사용할 수 없습니다. 이것이 업데이트 이유입니다. protobuf 버전은 Hadoop 스택에서 매우 민감한 주제입니다. 항상 서로 다른 프로젝트에 대한 조정이 필요하며 아무도 좋아하지 않을 정도로 충격적입니다.
OS에 따라 zip 파일을 다운로드합니다 (예 : protoc-3.7.0-osx-x86_64.zip). 이것은 다른 OS에도 적용됩니다.
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
다른 사용자가 언급했듯이 Google의 또 다른 공식적인 방법이 있습니다.
시도하기 전에 완전히 읽으십시오.
단계는 다음과 같습니다.
터미널을 열고 다음을 입력하십시오.
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
나를 위해 일했습니다.
PS
이것은 osx의 버전 3.7.1 전용입니다. 다른 버전 / 플랫폼을 설치하려면 릴리스 링크를 하여 최신 버전의 세부 정보를 확인하고 해당 정보를 사용하십시오.
참고
google http://google.github.io/proto-lens/installing-protoc.html에서 제공하는 공식 링크 페이지에서 설치할 수 있습니다.
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
HomeBrew 버전이 제거되고 공식이 비었습니다. 따라서 다음 단계에 따라 수동으로 설치하는 것이 좋습니다.
당분간은 프로토콜 버퍼 도구 세트를 수동으로 빌드하고 설치해야합니다.
소스 코드 다운로드 : https://github.com/google/protobuf/releases/download/v2.4.1/protobuf-2.4.1.tar.gz
tar xvfz protobuf-2.4.1.tar.gz
cd protobuf-2.4.1
운영 ./configure
src / google / protobuf / message.cc를 수정하고 파일 상단에 #include를 추가합니다.
make
폴더의 루트, 즉 protobuf-2.4.1 /에서 명령을 실행 합니다.
운영 sudo make install
실행 /usr/local/bin/protoc --version
하여 protobuf 컴파일러 버전의 버전을 확인합니다. 터미널 출력은 다음과 같아야합니다.
Version: libprotoc 2.4.1
.pb.h
및.pb.cc
파일 을 재생성하는 한 이전 버전과 호환됩니다 .