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

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 .


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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.