ฉันต้องการติดตั้ง Google Protocol Buffers (protobuf-2.4.1) เวอร์ชันเก่าบน Mac โดยใช้บรรทัดคำสั่ง Terminal ฉันลองใช้brew install protobuf
แต่เวอร์ชันล่าสุด 2.5.0 ได้รับการติดตั้งแล้ว เป็นไปได้ไหมที่จะติดตั้งเวอร์ชันเก่าจากเทอร์มินัล
ขอบคุณ
ฉันต้องการติดตั้ง Google Protocol Buffers (protobuf-2.4.1) เวอร์ชันเก่าบน Mac โดยใช้บรรทัดคำสั่ง Terminal ฉันลองใช้brew install protobuf
แต่เวอร์ชันล่าสุด 2.5.0 ได้รับการติดตั้งแล้ว เป็นไปได้ไหมที่จะติดตั้งเวอร์ชันเก่าจากเทอร์มินัล
ขอบคุณ
คำตอบ:
มีปัญหาบางอย่างเกี่ยวกับการสร้าง 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
Warning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
สิ่งนี้ไม่ได้ผ่านการชง แต่ผลลัพธ์ก็เหมือนกัน
ขั้นตอนที่ 4-7 มาจากไฟล์ README.txt จาก tarball ของ protobuf
/protobuf/src/README.md
ฉันหวังว่ามันจะอยู่README.md
ใน/protobuf
ไดเรกทอรี
เป็นปีใหม่และมีความไม่ตรงกันใหม่ระหว่างเวอร์ชันprotobuf
ใน Homebrew และรุ่นที่ทันสมัย ในเดือนกุมภาพันธ์ 2559 brew install protobuf
จะให้คุณเป็นเวอร์ชัน 2.6.1
หากคุณต้องการรุ่นเบต้า 3.0 แทนคุณสามารถติดตั้งได้ด้วย:
brew install --devel protobuf
หากคุณมาที่นี่เพื่อค้นหาวิธีติดตั้ง Protocol Buffers บน 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
ด้วยเหตุผลบางอย่างฉันต้องใช้ 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
ควรแสดงผลลัพธ์ที่ถูกต้อง
ฉันใช้ macports
sudo port install protobuf-cpp
brew install --devel protobuf
ถ้ามันบอกคุณว่า "protobuf-2.6.1 ติดตั้งแล้ว": 1. brew uninstall --devel protobuf
2. brew link libtool
3.brew install --devel protobuf
FWIW เวอร์ชันล่าสุดของการชงอยู่ที่ protobuf 3.0 และไม่รวมสูตรใด ๆ สำหรับเวอร์ชันเก่า ซึ่งค่อนข้าง "ไม่สะดวก"
แม้ว่า protobuf อาจเข้ากันได้ในระดับสาย แต่ก็ไม่สามารถใช้งานร่วมกันได้อย่างแน่นอนในระดับของคลาส java ที่สร้างขึ้น: คุณไม่สามารถใช้ไฟล์. class ที่สร้างด้วย protoc 2.4 กับ protobuf-2.5 JAR ฯลฯ เป็นต้นนี่คือเหตุผลที่อัปเดต เวอร์ชัน protobuf เป็นหัวข้อที่ละเอียดอ่อนในสแต็ก Hadoop: มันต้องอาศัยการประสานงานในโครงการต่างๆอยู่เสมอและมีบาดแผลมากพอที่จะไม่มีใครชอบทำ
ดาวน์โหลดไฟล์ zip ตามระบบปฏิบัติการของคุณ (เช่น protoc-3.7.0-osx-x86_64.zip) สิ่งนี้ใช้กับระบบปฏิบัติการอื่นด้วย
ย้ายไฟล์ปฏิบัติการใน 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 ดังที่ผู้ใช้รายอื่นกล่าวถึง
อ่านให้ครบถ้วนก่อนลอง
ขั้นตอนมีดังนี้
เปิด Terminal แล้วพิมพ์ดังต่อไปนี้
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
ทำงานให้ฉัน
ปล.
นี่สำหรับเวอร์ชั่น 3.7.1 ใน osx เท่านั้น หากคุณต้องการติดตั้งเวอร์ชัน / แพลตฟอร์มอื่น ๆ โปรดไปที่ลิงก์การเผยแพร่และตรวจสอบรายละเอียดของเวอร์ชันล่าสุดและใช้ข้อมูลเหล่านั้น
ข้อมูลอ้างอิง
คุณสามารถติดตั้งจากหน้าลิงก์อย่างเป็นทางการที่จัดทำโดย 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 ถูกลบและล้างสูตรแล้ว ดังนั้นคำแนะนำของฉันคือการติดตั้งด้วยตนเองโดยทำตามขั้นตอนต่อไปนี้
ในขณะนี้คุณจะต้องสร้างและติดตั้งชุดเครื่องมือ Protocol Buffers ด้วยตนเอง
ดาวน์โหลดซอร์สโค้ด: 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
ไฟล์ใหม่