Menginstal Google Protocol Buffer di mac


101

Saya ingin menginstal Google Protocol Buffer (protobuf-2.4.1) versi lama di mac menggunakan baris perintah Terminal. Saya mencoba brew install protobuf, tetapi versi terbaru 2.5.0 telah diinstal. Apakah mungkin untuk menginstal versi lama dari terminal.

Terima kasih


2
Mengapa Anda menginginkan versi yang lebih lama? Mereka kompatibel mundur, selama Anda membuat ulang .pb.hdan .pb.ccfile.
Kenton Varda

Saya pikir lebih baik saya menggunakan versi lama karena proyek ini dibangun dengan 2.4.1. Tapi seperti yang Anda katakan, saya telah membuat ulang kedua file tersebut dan berfungsi dengan baik. Terima kasih.
informatiker

4
Dan secara umum, berikut adalah cara menginstal versi formula tertentu .
Duvrai

Jawaban:


146

Ada beberapa masalah dengan membangun protobuf 2.4.1 dari sumber di Mac. Ada tambalan yang juga harus diaplikasikan. Semua ini terkandung dalam formula homebrew protobuf241, jadi saya sarankan untuk menggunakannya.

Untuk menginstal protokol buffer versi 2.4.1 ketikkan yang berikut ini ke terminal:

brew tap homebrew/versions
brew install protobuf241

Jika Anda sudah memiliki versi buffer protokol yang Anda coba instal dari sumber, Anda dapat mengetik berikut ini ke dalam terminal agar kode sumber ditimpa oleh versi homebrew:

brew link --force --overwrite protobuf241

Periksa apakah sekarang Anda telah menginstal versi yang benar dengan mengetik:

protoc --version

Ini harus menampilkan 2.4.1


2
Hei saya mencoba ini, bagaimanapun pada protoc --version saya dapatkan -bash: protoc: perintah tidak ditemukan
ramin

Versi 2.4.1 diinstal di "/usr/local/Cellar/protobuf241/2.4.1", Anda harus membuat symlink dari "../2.4.1/protoc" dan meletakkannya di "/ usr / local / bin ". Cobalah daripada "protoc --version" dan harus bekerja persis sebagaimana mestinya.
Gyuri Majercsik

4
Keran itu tidak tersedia lagi
Mihai Todor

22
Tidak bekerja lagi. Saya mendapatkanWarning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
Shih-Min Lee

1
itu telah bermigrasi ke inti, gunakan ini sebagai gantinya: brew tap homebrew / homebrew-core
Huy Hóm Hỉnh

70

Ini bukan via brew, tapi hasil akhirnya sama.

  1. Unduh protobuf-2.4.1 dari https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
  2. Ekstrak file tar.gz.
  3. $ cd ~ / Downloads / protobuf-2.4.1
  4. $. / configure
  5. $ make
  6. $ membuat cek
  7. $ sudo buat instal
  8. $ yang protoc
  9. $ protoc --version

Langkah 4-7 berasal dari file README.txt dari protobuf tarball.


2
Saya mencoba pendekatan minuman, tetapi untuk versi terbaru protobuf (sekarang 2.6.0) dapat dikompilasi dengan mudah dari sumber menggunakan daftar langkah-langkah yang tepat di atas. Ini menjadi lebih berguna saat mencoba memperluas definisi proto standar (misalnya, menambahkan opsi bidang dengan memperluas deskriptor.proto) karena Anda memerlukan sumber asli atau sebaliknya harus merujuk ke jalur Cellar dalam versi penginstalan buatan rumah (jelek?) .
Necro

2
Saat menjalankan perintah make saya berakhir dengan kesalahan: 3 kesalahan dihasilkan. make [2]: *** [message.lo] Kesalahan 1 membuat [1]: *** [semua rekursif] Kesalahan 1 membuat: *** [semua] Kesalahan 2
Anandaraja_Srinivasan

Ini adalah solusi yang berhasil untuk saya. Tapi lihat jawaban Xiaoqi Chu saat menghadapi kesalahan saat bercinta.
Amudhan

langkah 4-7 ada di /protobuf/src/README.md, saya berharap itu ada di README.mddalam /protobufdirektori
Kevin Zhao

4
Ini berhasil bagi saya, satu-satunya perubahan adalah Anda perlu mengunduh sumber dari github.com/google/protobuf/releases
r00tt

34

Ini tahun baru dan ada ketidakcocokan baru antara versi protobufHomebrew dan rilis terbaru. Pada Februari 2016, brew install protobufakan memberi Anda versi 2.6.1.

Jika Anda menginginkan rilis 3.0 beta, Anda dapat menginstalnya dengan:

brew install --devel protobuf

17

Jika Anda mendarat di sini mencari cara menginstal Protocol Buffer di Mac, itu dapat dilakukan menggunakan Homebrew dengan menjalankan perintah di bawah ini

brew install protobuf

Ini menginstal versi terbaru dari protobuf yang tersedia. Bagi saya, pada saat penulisan, ini menginstal v3.7.1

Jika Anda ingin menginstal versi yang lebih lama, silakan cari yang tersedia dari halaman paket Protobuf Package - Homebrew dan instal versi paket tersebut.

Versi protobuf tertua yang tersedia dalam paket ini adalah v3.6.1.3


1
Tetapi OP secara khusus meminta untuk menginstal versi lama.
Himanshu Tanwar


12

Untuk beberapa alasan saya perlu menggunakan protobuf 2.4.1 dalam proyek saya di OS X El Capitan. Namun homebrew telah menghapus protobuf241 dari formulanya. Saya menginstalnya sesuai jawaban @ kksensei secara manual dan harus memperbaiki beberapa kesalahan selama proses.

Selama proses make, saya mendapatkan 3 error seperti berikut:

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;

                           ^

(Maaf, saya tidak tahu cara melampirkan kode ketika kode berisi '``)

Jika Anda mendapatkan kesalahan yang sama, harap edit src / google / protobuf / message.cc, tambahkan #include <istream>di bagian atas file dan lakukan $ makelagi dan seharusnya tidak ada kesalahan. Setelah itu lakukan $ sudo make install. Setelah instalasi selesai $protoc --versionharus menampilkan hasil yang benar.



6
brew install --devel protobuf

Jika ini memberitahu Anda "protobuf-2.6.1 sudah diinstal": 1. brew uninstall --devel protobuf 2. brew link libtool 3.brew install --devel protobuf


2

FWIW., Versi terbaru minuman ada di protobuf 3.0, dan tidak menyertakan rumus apa pun untuk versi yang lebih lama. Ini agak "tidak nyaman".

Meskipun protobuf mungkin kompatibel pada level kabel, itu sama sekali tidak kompatibel pada level kelas java yang dihasilkan: Anda tidak dapat menggunakan file .class yang dihasilkan dengan protoc 2.4 dengan protobuf-2.5 JAR, dll. Inilah sebabnya mengapa memperbarui Versi protobuf adalah topik sensitif dalam tumpukan Hadoop: selalu membutuhkan koordinasi di berbagai proyek, dan cukup traumatis sehingga tidak ada yang suka melakukannya.


2

Untuk menginstal Protocol Buffer (mulai hari ini versi v3.7.0)

  1. Kunjungi situs web ini
  2. unduh file zip sesuai OS Anda (misal: protoc-3.7.0-osx-x86_64.zip). Ini berlaku juga untuk OS lain.

  3. Pindahkan file yang dapat dieksekusi di protoc-3 / bin / protoc ke salah satu direktori Anda di PATH. Di Mac saya sarankan untuk memasukkannya ke / usr / local / bin

Sekarang Anda bisa pergi 💪🏾

(opsional) Ada juga file yang disertakan, Anda dapat menambahkan. Ini adalah potongan dari 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

Ada cara resmi lain oleh Google, seperti yang disebutkan oleh pengguna lain.

Bacalah sepenuhnya sebelum mencoba.

Berikut langkah-langkahnya:

Buka Terminal dan ketik yang berikut ini

  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

Bekerja untuk saya.

PS
Ini untuk versi 3.7.1 di osx saja. Jika Anda ingin menginstal beberapa versi / platform lain, kunjungi link rilis dan periksa detail versi terbaru, dan gunakan informasi tersebut. Referensi


1
Bagus dan sederhana. Terima kasih! : tada:
rodrigo-silveira



0

Versi HomeBrew telah dihapus dan formula telah dikosongkan. Oleh karena itu, saran saya adalah menginstalnya secara manual dengan mengikuti langkah-langkah berikut.

Untuk saat ini Anda perlu membangun dan menginstal toolset Protocol Buffer secara manual.

  1. Unduh kode sumber: 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. Lari ./configure

  5. Edit src / google / protobuf / message.cc, tambahkan #include di bagian atas file

  6. Jalankan makeperintah dari root folder, yaitu protobuf-2.4.1 /

  7. Lari sudo make install

  8. Jalankan /usr/local/bin/protoc --versionuntuk memeriksa versi versi kompiler protobuf Output terminal harus:

    Version: libprotoc 2.4.1

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.