2016-01-10 3 views
1

У меня есть protobuf компилятор версии 3.0 и вам нужно установить плагин grpc и grpc python. После урока я добавил deb http://http.debian.net/debian jessie-backports main в мой файл sources.list и сделал sudo apt-get update и sudo apt-get install libgrpc-dev который вернулсяОшибка установки/компиляции grpc на Ubuntu

Package libgrpc-dev is not available, but is referred to by another package. 
This may mean that the package is missing, has been obsoleted, or 
is only available from another source 
E: Package 'libgrpc-dev' has no installation candidate 

Итак, я решил собрать его из исходников, как указано в INSTALL заметки и сделал:

$ git clone https://github.com/grpc/grpc.git 
$ cd grpc 
$ git submodule update --init 
$ make 
$ [sudo] make install 

Однако на этапе макияжа, я получаю

[MAKE] Generating cache.mk 
make: Circular /home/vagrant/grpc2/grpc/libs/opt/libboringssl.a <- /home/vagrant/grpc2/grpc/libs/opt/libboringssl.a dependency dropped. 
[C]  Compiling third_party/boringssl/crypto/bio/connect.c 
third_party/boringssl/crypto/bio/connect.c: In function 'split_host_and_port': 
third_party/boringssl/crypto/bio/connect.c:127:17: error: declaration of 'close' shadows a global declaration [-Werror=shadow] 
cc1: all warnings being treated as errors 
make: *** [/home/vagrant/grpc2/grpc/objs/opt/third_party/boringssl/crypto/bio/connect.o] Error 1 

при переходе к ветви релиза-0_11, бегу сделать результаты

[HOSTCXX] Compiling src/compiler/csharp_generator.cc 
src/compiler/csharp_generator.cc:47:43: error: 'google::protobuf::compiler::csharp::GetUmbrellaClassName' has not been declared 
src/compiler/csharp_generator.cc: In function 'void grpc_csharp_generator::{anonymous}::GenerateServiceDescriptorProperty(grpc::protobuf::io::Printer*, const ServiceDescriptor*)': 
src/compiler/csharp_generator.cc:237:62: error: 'GetUmbrellaClassName' was not declared in this scope 
make: *** [/home/vagrant/grpc2/grpc/objs/opt/src/compiler/csharp_generator.o] Error 1 

Не могу понять, как это установить. Любая помощь будет оценена по достоинству.

ответ

1

Работа в обратном направлении:

для выпуска-0_11: он выглядит, как вы пытаетесь скомпилировать против последнего Protobuf. Поскольку мы оба находимся в разработке прямо сейчас, есть случайные поломки, но grpc действительно отслеживает версию protobuf, которую она тестировала в third_party/protobuf. Попробуйте проверить и установить эту версию. Я подал https://github.com/grpc/grpc/issues/4697 для обновления до последней версии protobuf 3.0.

для мастера из github: какой компилятор и ОС вы используете? Недавно я проверил работу по интеграции boringssl, так что он свежий и почти не проверен на битву. Я бы хотел, чтобы это было проверено на битву. Тем не менее, если вы сделаете «make EMBED_OPENSSL = false», тогда все должно сработать для вас.

для проблемы с пакетом debian: я не уверен, что происходит. Я рад попытаться развернуть виртуальную машину с ОС и воспроизвести ее, если вы можете сообщить мне, какая ОС она есть.

+0

Эй , Спасибо за информацию. Я использую его на vagrant ubuntu/trusty64, так что 14.04 64-битный Ubuntu с компилятором. –

2

Для меня проблема была исправлена ​​после того, как я сделал изменения в файле как:

diff --git a/src/compiler/csharp_generator.cc 

b/src/compiler/csharp_generator.cc 
index 7b497df..5a8746d 100644 
--- a/src/compiler/csharp_generator.cc 
+++ b/src/compiler/csharp_generator.cc 
@@ -44,7 +44,7 @@ 

using google::protobuf::compiler::csharp::GetFileNamespace; 
using google::protobuf::compiler::csharp::GetClassName; 
-using google::protobuf::compiler::csharp::GetUmbrellaClassName; 
+using google::protobuf::compiler::csharp::GetReflectionClassName; 
using grpc::protobuf::FileDescriptor; 
using grpc::protobuf::Descriptor; 
using grpc::protobuf::ServiceDescriptor; 
@@ -234,7 +234,7 @@ void GenerateServiceDescriptorProperty(Printer* out, const ServiceDescriptor *se 
    out->Print("public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor\n"); 
    out->Print("{\n"); 
    out->Print(" get { return $umbrella$.Descriptor.Services[$index$]; }\n", 
-    "umbrella", GetUmbrellaClassName(service->file()), "index", 
+    "umbrella", GetReflectionClassName(service->file()), "index", 
       index.str()); 
    out->Print("}\n"); 
    out->Print("\n"); 

Более конкретно, пожалуйста, откройте файл src/compiler/csharp_generator.cc и заменить все ссылки GetUmbrellaClassName по GetReflectionClassName

Смежные вопросы