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

informatiker
sumber
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

John Gilmore
sumber
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.

kksensei
sumber
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
danvk
sumber
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

Aditya Vikas Devarapalli
sumber
1
Tetapi OP secara khusus meminta untuk menginstal versi lama.
Himanshu Tanwar
13

Dari https://github.com/paulirish/homebrew-versions-1 . Bekerja untuk saya!

brew install https://raw.githubusercontent.com/paulirish/homebrew-versions-1/master/protobuf241.rb
Xiaofan Hu
sumber
Anda menyelamatkan hari saya. Terima kasih banyak!
Deepankar Sarkar
Catatan, selalu disarankan untuk memindai seluruh rumus saat menginstal dari sumber yang tidak dikenal. Saya melakukan itu, itu aman.
Agoston Horvath
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.

Xiaoqi Chu
sumber
8

Saya menggunakan macports

sudo port install protobuf-cpp
Roozbeh Zabihollahi
sumber
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

Andrii Kovalchuk
sumber
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.

stevel
sumber
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
Imran
sumber
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

Revanth Kausikan
sumber
1
Bagus dan sederhana. Terima kasih! : tada:
rodrigo-silveira
0

Untuk pengguna 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
emas-kou
sumber
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

shapan dashore
sumber