Встановлення буферів протоколів Google на mac


101

Я хотів би встановити старішу версію буферів протоколів Google (protobuf-2.4.1) на mac за допомогою командного рядка Terminal. Я намагався brew install protobuf, але остання версія 2.5.0 була встановлена. Чи можна встановити старішу версію з терміналу.

Дякую


2
Чому ви хочете старішу версію? Вони сумісні з зворотним ходом, доки ви регенеруєте файли .pb.hта .pb.ccфайли.
Кентон Варда

Я подумав, що краще використовувати стару версію, оскільки проект будувався з 2.4.1. Але, як ви сказали, я відновив два файли, і він працює добре. Дякую.
інформатикер

Відповіді:


146

Існують деякі проблеми зі складанням протобуфа 2.4.1 з джерела на Mac. Існує пластир, який також потрібно застосувати. Все це міститься в домашній формулі protobuf241, тому я б радив її використовувати.

Щоб встановити буфер протоколу версії 2.4.1, введіть у термінал наступне:

brew tap homebrew/versions
brew install protobuf241

Якщо у вас вже є версія буфера протоколу, яку ви намагалися встановити з джерела, ви можете ввести наступне в термінал, щоб вихідний код був перезаписаний домашньою версією:

brew link --force --overwrite protobuf241

Перевірте, чи встановлена ​​у вас правильна версія, ввівши:

protoc --version

Він повинен відображати 2.4.1


2
Гей, я спробував це, окрім протоколу - версії я отримую -bash: protoc: команда не знайдена
ramin

Версія 2.4.1 встановлена ​​на "/usr/local/Cellar/protobuf241/2.4.1", ви просто повинні створити симпосилання "../2.4.1/protoc" і помістити її в "/ usr / local / bin ". Спробуйте, ніж "protoc -version", і має працювати саме так, як слід.
Гюрі Майєрсік

4
Цей кран вже недоступний
Mihai Todor

22
Більше не працюю. Я отримуюWarning: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated.
Ши-Мін Лі

1
він перейшов до ядра, використовуйте це замість: варити кран homebrew / homebrew-core
Huy Hóm Hỉnh

70

Це не через заварку, але кінцевий результат той самий.

  1. Завантажте протобуф-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. $ зробити
  6. $ зробити чек
  7. $ sudo зробити встановлення
  8. $ який протокол
  9. $ protoc - конверсія

Етапи 4-7 - з файлу README.txt з тарболу протобуфа.


2
Я спробував варити підхід, але для останньої версії protobuf (зараз 2.6.0) він легко збирається з джерел, використовуючи точний перелік етапів вище. Це стає ще кориснішим при спробі розширення стандартних визначень протоколів (наприклад, додавання параметрів поля за допомогою розширення опису deskriptor.proto), як вам потрібні оригінальні джерела або в іншому випадку потрібно посилатися на шлях Cellar у домашній версії установки (негарна?) .
Necro

2
При виконанні команди make я закінчився помилками: 3 помилки згенеровано. make [2]: *** [message.lo] Помилка 1 make [1]: *** [все рекурсивна] Помилка 1 make: *** [all] Помилка 2
Anandaraja_Srinivasan

Це рішення, яке працювало для мене. Але дивіться відповідь Xiaoqi Chu, коли стикаєтеся з помилками під час make.
Амудхан

кроки 4-7 в /protobuf/src/README.md, я хотів би це було в README.mdв /protobufкаталозі
Kevin Zhao

4
Це працювало для мене. Єдина зміна полягає в тому, що вам потрібно завантажити джерела з github.com/google/protobuf/releases
r00tt

34

Новий рік, і є нова невідповідність між версією protobufHomebrew та найсучаснішим випуском. Станом на лютий 2016 року brew install protobufви отримаєте версію 2.6.1.

Якщо замість цього ви хочете версію бета-версії 3.0, ви можете встановити її за допомогою:

brew install --devel protobuf

17

Якщо ви приземлилися тут і шукаєте, як встановити буфери протоколів на Mac, це можна зробити за допомогою Homebrew, виконавши команду нижче

brew install protobuf

У ньому встановлена ​​остання доступна версія протобуфа. Для мене на момент написання цього було встановлено v3.7.1

Якщо ви хочете встановити старішу версію, перегляньте наявні на сторінці пакета Protobuf Package - Homebrew та встановіть цю конкретну версію пакету.

Найдавніша доступна версія протобуфа в цьому пакеті - v3.6.1.3


1
Але ОП спеціально просить встановити стару версію.
Хіманшу Танвар

13

З https://github.com/paulirish/homebrew-versions-1 . Для мене працює!

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

Ти врятував мені день. Дуже дякую!
Deepankar Sarkar

Зауважте, завжди рекомендується сканувати формули під час встановлення з невідомих джерел. Я це зробив, це було безпечно.
Агостон Хорват

12

Чомусь мені потрібно використовувати протобуф 2.4.1 у своєму проекті на OS X El Capitan. Однак домашня мова видалила 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., Остання версія варіння представлена ​​на протобуфі 3.0, і не містить жодних формул для старих версій. Це дещо «незручно».

Хоча protobuf може бути сумісним на рівні дроту, він абсолютно не сумісний на рівні згенерованих класів java: ви не можете використовувати файли .class, згенеровані протоколом 2.4, з протоколом JAR protobuf-2.5, і т. Д. І тому оновлення Версії протобуфа є такою чутливою темою в стеці Hadoop: вона незмінно вимагає координації в різних проектах і є достатньо травматичною, щоб ніхто не любив це робити.


2

Щоб встановити буфер протоколу (станом на сьогоднішній день версія v3.7.0)

  1. Перейдіть на цей веб-сайт
  2. завантажте zip-файл відповідно до вашої ОС (наприклад: protoc-3.7.0-osx-x86_64.zip). Це стосується і інших ОС.

  3. Перемістіть виконуваний файл у протоколі-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, про який згадував інший користувач.

Прочитайте його повністю, перш ніж спробувати.

Ось такі кроки:

Відкрийте термінал і введіть наступне

  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

Працювали для мене.

PS
Це для версії 3.7.1 лише в ОСХ. Якщо ви хочете встановити іншу версію / платформу, перейдіть за посиланням на версії та ознайомтеся з деталями останньої версії та скористайтеся цією інформацією. Довідково


1
Приємно і просто. Дякую! : тада:
rodrigo-silveira



0

Версії HomeBrew видалено, а формули випорожнено. Тому моя рада - встановити її вручну, виконуючи наступні дії.

Наразі вам потрібно буде створити та встановити набір інструментів "Протокол буферів" вручну.

  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щоб перевірити версію компілятора протобуфа. Вихідним терміналом повинен бути:

    Version: libprotoc 2.4.1

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.