Cài đặt Bộ đệm giao thức Google trên mac


101

Tôi muốn cài đặt phiên bản cũ hơn của Google Protocol Buffers (protobuf-2.4.1) trên mac bằng cách sử dụng dòng lệnh Terminal. Tôi đã thử với brew install protobuf, nhưng phiên bản mới nhất 2.5.0 đã được cài đặt. Có thể cài đặt phiên bản cũ hơn từ thiết bị đầu cuối không.

Cảm ơn


2
Tại sao bạn muốn một phiên bản cũ hơn? Chúng tương thích ngược, miễn là bạn tạo lại tệp .pb.h.pb.cc.
Kenton Varda

Tôi nghĩ tốt hơn tôi nên sử dụng phiên bản cũ vì dự án được xây dựng với 2.4.1. Nhưng như bạn đã nói, tôi đã tạo lại hai tệp và nó hoạt động tốt. Cảm ơn.
tin vào

Câu trả lời:


146

Có một số vấn đề với việc xây dựng protobuf 2.4.1 từ nguồn trên máy Mac. Có miếng dán cũng phải dán. Tất cả điều này được chứa trong công thức homebrew protobuf241, vì vậy tôi khuyên bạn nên sử dụng nó.

Để cài đặt bộ đệm giao thức phiên bản 2.4.1, hãy nhập thông tin sau vào một thiết bị đầu cuối:

brew tap homebrew/versions
brew install protobuf241

Nếu bạn đã có phiên bản bộ đệm giao thức mà bạn đã cố gắng cài đặt từ nguồn, bạn có thể nhập thông tin sau vào một thiết bị đầu cuối để mã nguồn được ghi đè bởi phiên bản homebrew:

brew link --force --overwrite protobuf241

Kiểm tra để đảm bảo rằng bạn đã cài đặt đúng phiên bản bằng cách nhập:

protoc --version

Nó sẽ hiển thị 2.4.1


2
Hey Tôi cố gắng này, howeever trên protoc --version i get -bash: protoc: command not found
ramin

Phiên bản 2.4.1 được cài đặt tại "/usr/local/Cellar/protobuf241/2.4.1", bạn chỉ cần tạo một liên kết biểu tượng của "../2.4.1/protoc" và đặt nó vào "/ usr / local / bin ". Hãy thử hơn "protoc --version" và sẽ hoạt động chính xác như thế nào.
Gyuri Majercsik

4
Tap Đó là không có sẵn nữa
Mihai Todor

22
Không hoạt động nữa. Tôi nhận đượcWarning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
Shih-Min Lee

1
nó đã di chuyển sang lõi, hãy sử dụng cái này thay thế: brew tap homebrew / homebrew-core
Huy Hóm Hỉnh

70

Đây không phải là thông qua bia, nhưng kết quả cuối cùng là như nhau.

  1. Tải xuống protobuf-2.4.1 từ https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
  2. Giải nén tệp tar.gz.
  3. $ cd ~ / Tải xuống / protobuf-2.4.1
  4. $. / config
  5. $ make
  6. $ làm séc
  7. $ sudo thực hiện cài đặt
  8. $ nào protoc
  9. $ protoc --version

Các bước 4-7 là từ tệp README.txt từ tarball protobuf.


2
Tôi đã thử cách tiếp cận bia, nhưng đối với phiên bản mới nhất của protobuf (hiện tại là 2.6.0), nó biên dịch dễ dàng từ các nguồn bằng cách sử dụng danh sách chính xác các bước ở trên. Điều này thậm chí còn trở nên hữu ích hơn khi cố gắng mở rộng các định nghĩa proto tiêu chuẩn (ví dụ: thêm các tùy chọn trường bằng cách mở rộng descriptor.proto) khi bạn cần các nguồn gốc hoặc nếu không thì phải tham khảo đường dẫn Cellar trong phiên bản cài đặt home-brew (xấu?) .
Necro

2
Khi chạy lệnh make, tôi đã gặp lỗi: 3 lỗi được tạo ra. make [2]: *** [message.lo] Lỗi 1 make [1]: *** [all-recursive] Lỗi 1 make: *** [all] Lỗi 2
Anandaraja_Srinivasan 19/08/2016

Đây là giải pháp phù hợp với tôi. Nhưng hãy xem câu trả lời của Xiaoqi Chu khi đối mặt với các lỗi trong quá trình thực hiện.
Amudhan

bước 4-7 đang ở /protobuf/src/README.md, tôi muốn nó được trong README.mdtrong /protobufthư mục
Kevin Triệu

4
Điều này phù hợp với tôi, thay đổi duy nhất là bạn cần tải xuống các nguồn từ github.com/google/protobuf/releases
r00tt 27/02/17

34

Đó là một năm mới và có một sự không phù hợp mới giữa phiên bản protobuftrong Homebrew và bản phát hành tiên tiến. Kể từ tháng 2 năm 2016, brew install protobufsẽ cung cấp cho bạn phiên bản 2.6.1.

Nếu bạn muốn bản phát hành 3.0 beta thay thế, bạn có thể cài đặt nó với:

brew install --devel protobuf

17

Nếu bạn đã đến đây để tìm cách cài đặt Bộ đệm giao thức trên máy Mac, thì có thể thực hiện bằng Homebrew bằng cách chạy lệnh bên dưới

brew install protobuf

Nó cài đặt phiên bản protobuf mới nhất có sẵn. Đối với tôi, tại thời điểm viết bài, điều này đã cài đặt v3.7.1

Nếu bạn muốn cài đặt phiên bản cũ hơn, vui lòng tra cứu những phiên bản có sẵn từ trang gói Protobuf Package - Homebrew và cài đặt phiên bản cụ thể đó của gói.

Phiên bản protobuf cũ nhất có sẵn trong gói này là v3.6.1.3


1
Nhưng OP đặc biệt yêu cầu cài đặt phiên bản cũ.
Himanshu Tanwar


12

Vì một số lý do, tôi cần sử dụng protobuf 2.4.1 trong dự án của mình trên OS X El Capitan. Tuy nhiên homebrew đã loại bỏ protobuf241 khỏi công thức của nó. Tôi cài đặt nó theo câu trả lời của @ kksensei theo cách thủ công và phải sửa một số lỗi trong quá trình này.

Trong quá trình thực hiện, tôi gặp 3 lỗi như sau:

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;

                           ^

(Xin lỗi, tôi không biết cách đính kèm mã khi mã chứa '' ')

Nếu bạn gặp lỗi tương tự, vui lòng chỉnh sửa src / google / protobuf / message.cc, thêm #include <istream>ở đầu tệp và thực hiện $ makelại và sẽ không gặp lỗi. Sau đó làm $ sudo make install. Khi cài đặt xong $protoc --versionsẽ hiển thị kết quả chính xác.



6
brew install --devel protobuf

Nếu nó cho bạn biết "protobuf-2.6.1 đã được cài đặt": 1. brew uninstall --devel protobuf 2. brew link libtool 3.brew install --devel protobuf


2

FWIW., Phiên bản mới nhất của brew là protobuf 3.0 và không bao gồm bất kỳ công thức nào cho các phiên bản cũ hơn. Điều này hơi "bất tiện".

Mặc dù protobuf có thể tương thích ở cấp dây, nhưng nó hoàn toàn không tương thích ở cấp các lớp java được tạo: bạn không thể sử dụng tệp .class được tạo bằng protoc 2.4 với protobuf-2.5 JAR, v.v. Đây là lý do tại sao phải cập nhật phiên bản protobuf là một chủ đề nhạy cảm trong ngăn xếp Hadoop: nó luôn đòi hỏi sự phối hợp giữa các dự án khác nhau và đủ gây chấn thương để không ai thích làm điều đó.


2

Để cài đặt Bộ đệm giao thức (kể từ phiên bản hôm nay v3.7.0)

  1. Đi đến trang web này
  2. tải xuống tệp zip theo hệ điều hành của bạn (ví dụ: protoc-3.7.0-osx-x86_64.zip). Điều này cũng áp dụng cho hệ điều hành khác.

  3. Di chuyển tệp thực thi trong protoc-3 / bin / protoc đến một trong các thư mục của bạn trong PATH. Trong Mac, tôi khuyên bạn nên đặt nó vào / usr / local / bin

Bây giờ bạn tốt để đi 💪🏾

(tùy chọn) Ngoài ra còn có một tệp bao gồm, bạn có thể thêm. Đây là một đoạn trích của 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

Có một cách chính thức khác của Google, như được đề cập bởi một người dùng khác.

Đọc nó đầy đủ trước khi thử.

Đây là các bước:

Mở Terminal và nhập dòng sau

  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

Đã làm cho tôi.

PS
Đây chỉ dành cho phiên bản 3.7.1 trong osx. Nếu bạn muốn cài đặt một số phiên bản / nền tảng khác, hãy truy cập liên kết bản phát hành và xem chi tiết của phiên bản mới nhất và sử dụng những thông tin đó. Tài liệu tham khảo


1
Đẹp và đơn giản. Cảm ơn! : tada:
rodrigo-silveira



0

Phiên bản HomeBrew đã bị xóa và các công thức đã được làm trống. Do đó, lời khuyên của tôi là hãy cài đặt thủ công theo các bước sau.

Hiện tại, bạn sẽ cần phải xây dựng và cài đặt bộ công cụ Protocol Buffers theo cách thủ công.

  1. Tải xuống mã nguồn: 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. Chạy ./configure

  5. Chỉnh sửa src / google / protobuf / message.cc, thêm #include ở đầu tệp

  6. Chạy makelệnh từ thư mục gốc, tức là protobuf-2.4.1 /

  7. Chạy sudo make install

  8. Chạy /usr/local/bin/protoc --versionđể kiểm tra phiên bản của phiên bản trình biên dịch protobuf Đầu ra đầu cuối phải là:

    Version: libprotoc 2.4.1

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.