Mac'e Google Protokol Tamponlarını Yükleme


101

Mac'e Terminal komut satırını kullanarak Google Protokol Tamponlarının (protobuf-2.4.1) eski sürümünü yüklemek istiyorum. Denedim brew install protobuf, ancak en son sürüm 2.5.0 yüklendi. Eski sürümü terminalden kurmak mümkün mü?

Teşekkürler


2
Neden daha eski bir sürüm istiyorsunuz? .pb.hVe .pb.ccdosyalarını yeniden oluşturduğunuz sürece geriye doğru uyumludurlar .
Kenton Varda

Proje 2.4.1 ile inşa edildiğinden eski sürümü kullanmam gerektiğini düşündüm. Ama dediğin gibi iki dosyayı yeniden oluşturdum ve iyi çalışıyor. Teşekkürler.
informatiker

Yanıtlar:


146

Mac'te kaynaktan protobuf 2.4.1 oluşturmada bazı sorunlar vardır. Ayrıca uygulanması gereken bir yama var. Bütün bunlar homebrew protobuf241 formülünde bulunur, bu yüzden onu kullanmanızı tavsiye ederim.

Protokol arabelleği sürüm 2.4.1'i kurmak için aşağıdakileri bir terminale yazın:

brew tap homebrew/versions
brew install protobuf241

Kaynaktan yüklemeye çalıştığınız bir protokol arabellek sürümüne zaten sahipseniz, homebrew sürümünün kaynak kodunun üzerine yazılmasını sağlamak için aşağıdakileri bir terminale yazabilirsiniz:

brew link --force --overwrite protobuf241

Şimdi yazarak doğru sürümün kurulu olup olmadığını kontrol edin:

protoc --version

2.4.1 göstermelidir


2
Hey bunu denedim, her neyse protoc --version - get -bash: protoc: command not found
ramin

Sürüm 2.4.1 "/usr/local/Cellar/protobuf241/2.4.1" adresinde kurulur, sadece "../2.4.1/protoc" için bir sembolik bağ oluşturmalı ve "/ usr / local / bin ". "Protoc --version" yerine deneyin ve tam olarak olması gerektiği gibi çalışmalıdır.
Gyuri Majercsik

4
Bu musluk artık kullanılamıyor
Mihai Todor

23
Artık çalışmıyor. AnlıyorumWarning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
Shih-Min Lee

1
çekirdeğe taşınmıştı, bunun yerine şunu kullanın: demleme musluğu homebrew / homebrew-core
Huy Hóm Hỉnh

70

Bu, demleme yoluyla değil, ancak sonuç aynı.

  1. Protobuf-2.4.1'i https://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz adresinden indirin.
  2. Tar.gz dosyasını çıkarın.
  3. $ cd ~ / İndirilenler / protobuf-2.4.1
  4. $. / configure
  5. $ make
  6. $ kontrol et
  7. $ sudo make install
  8. $ hangi protokol
  9. $ protoc --version

4-7. Adımlar protobuf tarball'daki README.txt dosyasındandır.


2
Demleme yaklaşımını denedim, ancak protobuf'un en son sürümü (şimdi 2.6.0) için, yukarıdaki adımların tam listesini kullanarak kaynaklardan kolayca derleniyor. Bu, standart protokol tanımlarını genişletmeye çalışırken (örneğin, descriptor.proto'yu genişleterek alan seçenekleri ekleyerek) orijinal kaynaklara ihtiyaç duyduğunuzda veya kurulumun ev yapımı sürümündeki Cellar yoluna başvurmanız gerektiğinde (çirkin mi?) .
Necro

2
Make komutunu çalıştırdığımda şu hatalarla sonuçlandım: 3 hata oluştu. make [2]: *** [message.lo] Hata 1 make [1]: *** [all-recursive] Hata 1 make: *** [all] Error 2
Anandaraja_Srinivasan

Benim için işe yarayan çözüm budur. Ancak Xiaoqi Chu'nun yapım sırasında hatalarla karşılaştığınızda cevabını görün.
Amudhan

adımlar 4-7 altındadır /protobuf/src/README.md, bunu olsaydı README.mdiçinde /protobufdizinde
Kevin Zhao

4
Bu benim için çalıştı, tek değişiklik, kaynakları github.com/google/protobuf/releases
r00tt

34

Yeni bir yıl ve protobufHomebrew'daki sürüm ile son sürüm sürüm arasında yeni bir uyumsuzluk var . Şubat 2016 itibarıyla brew install protobufsize 2.6.1 sürümünü verecektir.

3.0 beta sürümünü istiyorsanız, şununla yükleyebilirsiniz:

brew install --devel protobuf

18

Buraya Mac'te Protokol Arabelleklerini nasıl kuracağınızı ararken, aşağıdaki komutu çalıştırarak Homebrew kullanılarak yapılabilir.

brew install protobuf

Mevcut protobuf'un en son sürümünü yükler. Benim için, yazarken v3.7.1'i yükledi

Daha eski bir sürümü yüklemek istiyorsanız, lütfen Protobuf Paketi - Homebrew paket sayfasından mevcut olanlara bakın ve paketin bu belirli sürümünü kurun.

Bu paketteki en eski protobuf sürümü v3.6.1.3'tür.


1
Ancak OP, özellikle eski sürümün yüklenmesini ister.
Himanshu Tanwar


12

Her nedense OS X El Capitan'daki projemde protobuf 2.4.1 kullanmam gerekiyor. Ancak homebrew, protobuf241'i formülünden çıkardı. @ Kksensei'nin cevabına göre manuel olarak kuruyorum ve işlem sırasında bazı hataları düzeltmem gerekiyor.

Yapma işlemi sırasında aşağıdaki gibi 3 hata alıyorum:

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;

                           ^

(Maalesef kod '' 'içerdiğinde kodu nasıl ekleyeceğimi bilmiyorum)

Aynı hatayı alırsanız, lütfen src / google / protobuf / message.cc #include <istream>dosyasını düzenleyin, dosyanın en üstüne ekleyin ve $ maketekrar yapın ve hata almayın. Bundan sonra yapın $ sudo make install. Kurulum bittiğinde $protoc --versiondoğru sonucu göstermelidir.



6
brew install --devel protobuf

Size "protobuf-2.6.1 zaten kurulu" diyorsa: 1. brew uninstall --devel protobuf 2. brew link libtool 3.brew install --devel protobuf


2

FWIW., Brew'ın en son sürümü protobuf 3.0'dadır ve eski sürümler için herhangi bir formül içermez. Bu biraz "sakıncalıdır".

Protobuf kablo seviyesinde uyumlu olsa da, üretilen java sınıfları seviyesinde kesinlikle uyumlu değildir: protobuf-2.5 JAR ile protoc 2.4 ile oluşturulan .class dosyalarını kullanamazsınız, vb. Bu nedenle güncelleme protobuf sürümleri, Hadoop yığınında çok hassas bir konudur: her zaman farklı projeler arasında koordinasyon gerektirir ve kimsenin bunu yapmaktan hoşlanmayacağı kadar travmatiktir.


2

Protokol Arabelleğini yüklemek için (bugün sürüm v3.7.0'dan itibaren)

  1. Bu web sitesine git
  2. zip dosyasını işletim sisteminize göre indirin (örneğin: protoc-3.7.0-osx-x86_64.zip). Bu, diğer işletim sistemleri için de geçerlidir.

  3. Protoc-3 / bin / protoc içindeki yürütülebilir dosyayı PATH içindeki dizinlerinden birine taşıyın. Mac'te / usr / local / bin içine koymanızı öneririm

Şimdi gitmeniz iyi olur 💪🏾

(isteğe bağlı) Ekleyebileceğiniz bir içerme dosyası da vardır. Bu, README.md'nin bir pasajıdır.

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

Başka bir kullanıcının bahsettiği gibi Google'ın başka bir resmi yolu var.

Denemeden önce tamamını okuyun.

İşte adımlar:

Terminal'i açın ve aşağıdakileri yazın

  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

Benim için çalıştı.

PS
Bu, yalnızca osx'teki 3.7.1 sürümü içindir. Başka bir sürüm / platform yüklemek istiyorsanız, sürümler bağlantısını ziyaret edin ve en son sürümün ayrıntılarına göz atın ve bu bilgileri kullanın. Referans


1
Güzel ve basit. Teşekkürler! : tada:
rodrigo-silveira



0

HomeBrew sürümleri kaldırıldı ve formüller boşaltıldı. Bu nedenle, tavsiyem aşağıdaki adımları izleyerek manuel olarak kurmanızdır.

Şu an için Protokol Tamponları araç setini manuel olarak oluşturmanız ve kurmanız gerekecektir.

  1. Kaynak kodunu indirin: 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. Çalıştırmak ./configure

  5. Src / google / protobuf / message.cc dosyasını düzenleyin, dosyanın en üstüne #include ekleyin

  6. makeKomut dosyasını klasörün kökünden çalıştırın , yani protobuf-2.4.1 /

  7. Çalıştırmak sudo make install

  8. /usr/local/bin/protoc --versionProtobuf derleyici sürümünün sürümünü kontrol etmek için çalıştırın Terminal çıktısı şöyle olmalıdır:

    Version: libprotoc 2.4.1

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.