Precisa instalar o glibc> = 2.14 no Wheezy

22

Estou tentando fazer com que o transferidor funcione para a realização de testes angulares e2e, mas o transferidor requer Selenium, que requer o ChromeDriver, que requer glibc2,14. Minha caixa de desenvolvimento atual está executando o Debian Wheezy, que vem com a glibc2.13. Eu li que a mudança para o ramo instável do Debian forneceria acesso glib-2.14, mas pelo que ouvi instável é bastante ... instável.

Existe alguma maneira de atualizar glibcpara 2.14 ou 2.15 sem o risco de quebrar tudo? Ou é possível voltar do ramo instável do Debian se as coisas começarem a quebrar?

12:15:22.784 INFO - Executing: [new session: {browserName=chrome}] at URL: /session)
12:15:22.796 INFO - Creating a new session for Capabilities [{browserName=chrome}]
/home/chris/projects/personal/woddy/client/selenium/chromedriver:     /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by      /home/chris/projects/personal/woddy/client/selenium/chromedriver)
/home/chris/projects/personal/woddy/client/selenium/chromedriver: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/chris/projects/personal/woddy/client/selenium/chromedriver)
12:15:43.032 WARN - Exception thrown
java.util.concurrent.ExecutionException: org.openqa.selenium.WebDriverException:  java.lang.reflect.InvocationTargetException
chris
fonte
Onde ele diz que o ChromeDriver requer o glibc 2.14? Em geral, pacotes de alto nível não têm restrições muito estreitas na biblioteca C. Diz isso em algum lugar na documentação ou no código, ou é simplesmente listado como uma dependência em algum pacote? Esteja ciente, se você ainda não é, de que os pacotes de distribuição podem adicionar dependências excessivamente estritas sem um bom motivo.
Faheem Mitha
Eu adicionei a saída do terminal acima, mostrando onde 2.14 ou 2.15 eram necessários. No entanto, tudo está funcionando agora.
chris

Respostas:

23

Você não precisa mudar para o instável para obter glib> = 2.14. De fato, o ramo de testes (agora estável, ou Jessie) possui o glib-2.17, que você pode escolher apenas adicionando o repositório de testes e iniciando:

sudo apt-get install libc6-dev=2.17-7

ou,

sudo apt-get -t testing install libc6-dev

Você pode adicionar a opção --dry-runpara ver o que será instalado antes da mão. Você pode ver o status do pacote glibc no Sistema de Rastreador de Pacotes Debian (o Debian renomeou o pacote eglibc para simplesmente glibc a partir de Jessie).

Você também pode esperar o lançamento de Jessie em 25 de abril .

Braiam
fonte
2
Isso foi o que aconteceu. Seguindo as instruções debian em debian.org/doc/manuals/apt-howto/… , a execução do segundo comando que você listou funcionou perfeitamente. Obrigado pela ajuda. BTW, eu tinha na cabeça que instável era o próximo passo em vez de testar.
chris
1
Nenhum desses funcionou para mim. O primeiro método produzida E: The value 'testing' is invalid for APT::Default-Release as such a release is not available in the sourcese o segundoE: Version '2.17-7' for 'libc6-dev' was not found
Sean DeNigris
1
Essa solução aceita realmente deve ter um aviso. Eu o segui e acabei com um "FrankenDebian": wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian Depois passei as 2-3 horas seguintes lutando para sair do inferno da dependência e recuperar meu sistema para um Wheezy estável.
stanri
1
O Debian.org menciona explicitamente que esta é uma má ideia. Nem todo mundo é um administrador de sistemas. O OP solicitou uma solução segura e recomendada, que não quebra nada, e essa solução não atende a nenhum desses critérios.
stanri
2
Já que estamos citando coisas agora. OP: "Existe alguma maneira de atualizar o glibc para 2.14 ou 2.15 sem o risco de quebrar tudo ?" Debian.org:" não é uma boa idéia adicionar repositórios para outros lançamentos Debian .... Isso resulta em um sistema que é uma mistura quebrada dos dois. "Quanto mais claro eu posso ser? Espero que as pessoas leiam os comentários antes de seguir este conselho. Terminei.
stanri
22

Na minha situação, o erro aparece quando tento executar um aplicativo (compilado no Ubuntu 12.04 LTS) usando GLIBC_2.14 no Debian Wheezy (que instala o glibc 2.13 por padrão).

Eu uso uma maneira complicada de executá-lo e obtenho o resultado correto:

  1. Faça o download libc6e libc6-devdo Ubuntu 12.04 LTS

  2. Execute o dpkgcomando para instalá-los em um diretório ( /home/user/fakeroot/por exemplo):

    $ dpkg -x libc6-dev_2.15-0ubuntu10.6_amd64.deb /home/user/fakeroot/
    $ dpkg -x libc6_2.15-0ubuntu10.6_amd64.deb /home/user/fakeroot/
    
  3. Execute seu comando com o especificado LD_LIBRARY_PATH:

    $ LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND
    
  4. Meu aplicativo usa apenas memcpy()do GLIBC_2.14 e funciona.

    Não sei se funcionará com sucesso para outros aplicativos.

Bin S
fonte
Obrigado! Essas instruções me permitiram executar facilmente o Shaka Packager no Debian Wheezy. Estou agrupando meu comando em um script bash que se parece com exec env LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND "$@"isso, para que o comando esteja facilmente disponível sem a necessidade de especificar LD_LIBRARY_PATH toda vez.
Gabe Kopley 06/07/19
1

Eu acho que existem várias opções para você experimentar o ramo instável "com segurança":

  • Virtualização
  • Chroot em que você escolhe um diretório alternativo como seu diretório raiz aparente. Assim, você pode criar uma imagem do sistema de arquivos e instalar manualmente os pacotes necessários. Este é um processo complicado e é muito mais fácil no caso do Debian usando:
  • deboostrap que, para citar o artigo da Debian Wiki neste link, é

    uma ferramenta que instalará um sistema básico Debian em um subdiretório de outro sistema já instalado. Não requer um CD de instalação, apenas acesso a um repositório Debian.

    Isso não significa que debootstrapuse a técnica de chrooting; Não estou ciente de sua implementação interna.

Joseph R.
fonte
Usei o tutorial debootstrap e era exatamente o que eu precisava: wiki.debian.org/Debootstrap Eu segui o exemplo sid, mas usei jessie: debootstrap --arch amd64 jessie $MY_CHROOT http://http.debian.net/debian/ Obrigado!
Tirou LeSueur