การติดตั้ง Google Protocol Buffers บน Mac


101

ฉันต้องการติดตั้ง Google Protocol Buffers (protobuf-2.4.1) เวอร์ชันเก่าบน Mac โดยใช้บรรทัดคำสั่ง Terminal ฉันลองใช้brew install protobufแต่เวอร์ชันล่าสุด 2.5.0 ได้รับการติดตั้งแล้ว เป็นไปได้ไหมที่จะติดตั้งเวอร์ชันเก่าจากเทอร์มินัล

ขอบคุณ


2
ทำไมคุณถึงต้องการรุ่นเก่า? เข้ากันได้กับรุ่นเก่าตราบเท่าที่คุณสร้าง.pb.hและ.pb.ccไฟล์ใหม่
Kenton Varda

ฉันคิดว่าฉันใช้เวอร์ชันเก่าดีกว่าเนื่องจากโครงการสร้างด้วย 2.4.1 แต่อย่างที่คุณบอกว่าฉันได้สร้างไฟล์ทั้งสองขึ้นมาใหม่และใช้งานได้ดี ขอบคุณ.
Informatiker

4
และโดยทั่วไปนี่คือวิธีการติดตั้งรุ่นที่เฉพาะเจาะจงของสูตรหนึ่ง
Duvrai

คำตอบ:


146

มีปัญหาบางอย่างเกี่ยวกับการสร้าง protobuf 2.4.1 จาก source บน Mac มีแพทช์ที่ต้องใช้ด้วย ทั้งหมดนี้มีอยู่ในสูตร homebrew protobuf241 ดังนั้นฉันขอแนะนำให้ใช้

ในการติดตั้งโปรโตคอลบัฟเฟอร์เวอร์ชัน 2.4.1 ให้พิมพ์สิ่งต่อไปนี้ลงในเทอร์มินัล:

brew tap homebrew/versions
brew install protobuf241

หากคุณมีเวอร์ชันบัฟเฟอร์โปรโตคอลที่คุณพยายามติดตั้งจากซอร์สอยู่แล้วคุณสามารถพิมพ์สิ่งต่อไปนี้ลงในเทอร์มินัลเพื่อให้ซอร์สโค้ดเขียนทับด้วยเวอร์ชัน homebrew:

brew link --force --overwrite protobuf241

ตรวจสอบว่าคุณได้ติดตั้งเวอร์ชันที่ถูกต้องแล้วโดยพิมพ์:

protoc --version

ควรแสดง 2.4.1


2
เฮ้ฉันลองแล้วยังไงก็ตามใน protoc --version ฉันได้รับ -bash: protoc: command not found
ramin

เวอร์ชัน 2.4.1 ได้รับการติดตั้งที่ "/usr/local/Cellar/protobuf241/2.4.1" คุณควรสร้าง symlink ของ "../2.4.1/protoc" และใส่ไว้ใน "/ usr / local / bin ". ลองมากกว่า "protoc --version" และควรได้ผลตามที่ควร
Gyuri Majercsik

4
การแตะนั้นไม่สามารถใช้ได้อีกต่อไป
Mihai Todor

22
ไม่ทำงานอีกต่อไป ฉันได้รับWarning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
Shih-Min Lee

1
มันย้ายไปที่แกนแล้วใช้สิ่งนี้แทน: ชง tap homebrew / homebrew-core
Huy HómHỉnh

70

สิ่งนี้ไม่ได้ผ่านการชง แต่ผลลัพธ์ก็เหมือนกัน

  1. ดาวน์โหลด protobuf-2.4.1 จากhttps://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
  2. แตกไฟล์ tar.gz
  3. $ cd ~ / ดาวน์โหลด / protobuf-2.4.1
  4. $. / กำหนดค่า
  5. $ make
  6. $ ตรวจสอบ
  7. $ sudo ทำการติดตั้ง
  8. $ ซึ่ง protoc
  9. $ protoc - รุ่น

ขั้นตอนที่ 4-7 มาจากไฟล์ README.txt จาก tarball ของ protobuf


2
ฉันลองใช้วิธีการชง แต่สำหรับ protobuf เวอร์ชันล่าสุด (ตอนนี้ 2.6.0) จะรวบรวมได้อย่างง่ายดายจากแหล่งที่มาโดยใช้รายการขั้นตอนที่แน่นอนด้านบน สิ่งนี้จะมีประโยชน์มากยิ่งขึ้นเมื่อพยายามขยายคำจำกัดความโปรโตมาตรฐาน (เช่นการเพิ่มตัวเลือกฟิลด์โดยการขยาย descriptor.proto) ตามที่คุณต้องการแหล่งที่มาดั้งเดิมหรือมิฉะนั้นต้องอ้างถึงเส้นทาง Cellar ในการติดตั้งเวอร์ชัน home-brew (น่าเกลียด?) .
Necro

2
ในการรันคำสั่ง make ฉันพบข้อผิดพลาด: สร้างข้อผิดพลาด 3 ข้อ make [2]: *** [message.lo] Error 1 make [1]: *** [all-recursive] Error 1 make: *** [all] Error 2
Anandaraja_Srinivasan

นี่คือวิธีแก้ปัญหาที่เหมาะกับฉัน แต่ดูการตอบกลับของ Xiaoqi Chu เมื่อเผชิญกับข้อผิดพลาดระหว่างการสร้าง
Amudhan

ขั้นตอนที่ 4-7 อยู่ที่/protobuf/src/README.mdฉันหวังว่ามันจะอยู่README.mdใน/protobufไดเรกทอรี
Kevin Zhao

4
สิ่งนี้ใช้ได้ผลสำหรับฉันการเปลี่ยนแปลงเพียงอย่างเดียวคือคุณต้องดาวน์โหลดแหล่งที่มาจากgithub.com/google/protobuf/releases
r00tt

34

เป็นปีใหม่และมีความไม่ตรงกันใหม่ระหว่างเวอร์ชันprotobufใน Homebrew และรุ่นที่ทันสมัย ในเดือนกุมภาพันธ์ 2559 brew install protobufจะให้คุณเป็นเวอร์ชัน 2.6.1

หากคุณต้องการรุ่นเบต้า 3.0 แทนคุณสามารถติดตั้งได้ด้วย:

brew install --devel protobuf

18

หากคุณมาที่นี่เพื่อค้นหาวิธีติดตั้ง Protocol Buffers บน Mac สามารถทำได้โดยใช้ Homebrew โดยเรียกใช้คำสั่งด้านล่าง

brew install protobuf

มันติดตั้ง protobuf เวอร์ชันล่าสุดที่มี สำหรับฉันในขณะที่เขียนสิ่งนี้ได้ติดตั้งv3.7.1

หากคุณต้องการติดตั้งเวอร์ชันที่เก่ากว่าโปรดค้นหาเวอร์ชันที่มีอยู่จากหน้าแพ็กเกจ Protobuf Package - Homebrewและติดตั้งเวอร์ชันเฉพาะนั้น

เวอร์ชัน protobuf ที่เก่าที่สุดที่มีอยู่ในแพ็คเกจนี้คือv3.6.1.3


1
แต่ OP ขอให้ติดตั้งเวอร์ชันเก่าโดยเฉพาะ
Himanshu Tanwar

13

จากhttps://github.com/paulirish/homebrew-versions-1 . ใช้ได้ผลสำหรับฉัน!

brew install https://raw.githubusercontent.com/paulirish/homebrew-versions-1/master/protobuf241.rb

คุณช่วยวันของฉัน ขอบคุณมาก!
Deepankar Sarkar

หมายเหตุขอแนะนำให้สแกนตามสูตรเสมอเมื่อติดตั้งจากแหล่งที่ไม่รู้จัก ฉันทำอย่างนั้นก็ปลอดภัย
Agoston Horvath

12

ด้วยเหตุผลบางอย่างฉันต้องใช้ protobuf 2.4.1 ในโปรเจ็กต์ของฉันบน OS X El Capitan อย่างไรก็ตาม 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 เวอร์ชันล่าสุดของการชงอยู่ที่ protobuf 3.0 และไม่รวมสูตรใด ๆ สำหรับเวอร์ชันเก่า ซึ่งค่อนข้าง "ไม่สะดวก"

แม้ว่า protobuf อาจเข้ากันได้ในระดับสาย แต่ก็ไม่สามารถใช้งานร่วมกันได้อย่างแน่นอนในระดับของคลาส java ที่สร้างขึ้น: คุณไม่สามารถใช้ไฟล์. class ที่สร้างด้วย protoc 2.4 กับ protobuf-2.5 JAR ฯลฯ เป็นต้นนี่คือเหตุผลที่อัปเดต เวอร์ชัน protobuf เป็นหัวข้อที่ละเอียดอ่อนในสแต็ก Hadoop: มันต้องอาศัยการประสานงานในโครงการต่างๆอยู่เสมอและมีบาดแผลมากพอที่จะไม่มีใครชอบทำ


2

ในการติดตั้ง Protocol Buffer (ณ วันนี้เวอร์ชัน v3.7.0)

  1. ไปที่เว็บไซต์นี้
  2. ดาวน์โหลดไฟล์ zip ตามระบบปฏิบัติการของคุณ (เช่น protoc-3.7.0-osx-x86_64.zip) สิ่งนี้ใช้กับระบบปฏิบัติการอื่นด้วย

  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 ดังที่ผู้ใช้รายอื่นกล่าวถึง

อ่านให้ครบถ้วนก่อนลอง

ขั้นตอนมีดังนี้

เปิด Terminal แล้วพิมพ์ดังต่อไปนี้

  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

ทำงานให้ฉัน

ปล.
นี่สำหรับเวอร์ชั่น 3.7.1 ใน osx เท่านั้น หากคุณต้องการติดตั้งเวอร์ชัน / แพลตฟอร์มอื่น ๆ โปรดไปที่ลิงก์การเผยแพร่และตรวจสอบรายละเอียดของเวอร์ชันล่าสุดและใช้ข้อมูลเหล่านั้น ข้อมูลอ้างอิง


1
สวยและเรียบง่าย ขอบคุณ! : tada:
rodrigo-silveira



0

เวอร์ชัน HomeBrew ถูกลบและล้างสูตรแล้ว ดังนั้นคำแนะนำของฉันคือการติดตั้งด้วยตนเองโดยทำตามขั้นตอนต่อไปนี้

ในขณะนี้คุณจะต้องสร้างและติดตั้งชุดเครื่องมือ Protocol Buffers ด้วยตนเอง

  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.