Cần cài đặt glibc> = 2,14 trên Wheezy


22

Tôi đang cố gắng để Protractor hoạt động để thực hiện kiểm tra góc e2e, nhưng thước đo góc yêu cầu Selenium yêu cầu ChromeDriver yêu cầu glibc2,14. Hộp phát triển hiện tại của tôi đang chạy Debian Wheezy đi kèm với glibc2.13. Tôi đã đọc được rằng việc chuyển sang nhánh không ổn định của Debian sẽ cung cấp quyền truy cập glib-2.14, nhưng từ những gì tôi nghe thấy không ổn định thì khá ... không ổn định.

Có cách nào tôi có thể nâng cấp glibclên 2.14 hoặc 2.15 mà không có nguy cơ phá vỡ mọi thứ không? Hoặc có thể chuyển trở lại từ nhánh Debian không ổn định nếu mọi thứ bắt đầu bị phá vỡ?

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

Trường hợp nào nói rằng ChromeDriver yêu cầu glibc 2.14? Nói chung, các gói cấp cao không có các ràng buộc rất hẹp trên thư viện C. Liệu nó có nói như vậy ở đâu đó trong tài liệu hoặc mã, hoặc nó được liệt kê đơn giản là một phụ thuộc trong một số gói? Xin lưu ý, nếu bạn chưa sẵn sàng, các gói phân phối có thể thêm các phụ thuộc quá nghiêm ngặt mà không có lý do chính đáng.
Faheem Mitha

Tôi đã thêm đầu ra thiết bị đầu cuối ở trên cho thấy yêu cầu 2,14 hoặc 2,15. Tuy nhiên tất cả đang làm việc.
chris

Câu trả lời:


23

Bạn không phải chuyển sang trạng thái không ổn định để nhận glib> = 2.14. Trên thực tế, nhánh thử nghiệm (hiện đã ổn định hoặc Jessie) có glib-2.17 mà bạn có thể chọn chỉ cần thêm kho lưu trữ thử nghiệm và khởi chạy:

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

hoặc là,

sudo apt-get -t testing install libc6-dev

Bạn có thể thêm công tắc --dry-runđể xem những gì sẽ được cài đặt trước khi sử dụng. Bạn có thể thấy trạng thái của gói glibc trong Hệ thống theo dõi gói Debian (Debian đổi tên thành gói eglibc thành glibc từ Jessie trở đi).

Bạn cũng có thể chờ ngày phát hành của Jessie vào ngày 25 tháng 4 .


2
Điều đó đã làm nó. Làm theo các hướng dẫn của debian tại debian.org/doc/manuals/apt-howto/, sau đó chạy lệnh thứ hai mà bạn liệt kê đã hoạt động hoàn hảo. Cảm ơn đã giúp đỡ. BTW Tôi đã có nó trong đầu rằng không ổn định là bước tiếp theo thay vì thử nghiệm.
chris

1
Không ai trong số này làm việc cho tôi. Phương pháp đầu tiên được sản xuất E: The value 'testing' is invalid for APT::Default-Release as such a release is not available in the sourcesvà phương pháp thứ haiE: Version '2.17-7' for 'libc6-dev' was not found
Sean DeNigris

1
Giải pháp được chấp nhận này thực sự nên có một cảnh báo. Tôi đã theo dõi nó và kết thúc với một "FrankenDebian": wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian Sau đó tôi đã dành 2-3 giờ tiếp theo để thoát khỏi địa ngục phụ thuộc và đưa hệ thống của tôi trở lại trạng thái ổn định.
stanri

1
Debian.org đề cập rõ ràng rằng đây là một ý tưởng tồi. Không phải ai cũng là một sysadmin. OP đã yêu cầu một giải pháp an toàn, được khuyến nghị, không phá vỡ bất kỳ thứ gì và giải pháp này không đáp ứng bất kỳ tiêu chí nào trong số đó.
stanri

2
Vì chúng tôi đang trích dẫn mọi thứ bây giờ. OP: "Có cách nào tôi có thể nâng cấp glibc lên 2.14 hoặc 2.15 mà không có nguy cơ phá vỡ mọi thứ không?" Debian.org:"itit không phải là một ý tưởng tốt để thêm các kho lưu trữ cho các bản phát hành Debian khác .... Điều này dẫn đến một hệ thống là sự pha trộn của cả hai. "Tôi có thể rõ ràng hơn bao nhiêu? Hy vọng mọi người sẽ đọc các bình luận trước khi thực hiện lời khuyên này. Tôi đa xong.
stanri

22

Trong tình huống của tôi, lỗi xuất hiện khi tôi cố chạy một ứng dụng (được biên dịch trên Ubuntu 12.04 LTS) bằng GLIBC_2,14 trên Debian Wheezy (cài đặt glibc 2.13 theo mặc định).

Tôi sử dụng một cách khó khăn để chạy nó và nhận được kết quả chính xác:

  1. Tải xuống libc6libc6-devtừ Ubuntu 12.04 LTS

  2. Chạy dpkglệnh để cài đặt chúng vào một thư mục ( /home/user/fakeroot/ví dụ):

    $ 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. Chạy lệnh của bạn với chỉ định LD_LIBRARY_PATH:

    $ LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND
    
  4. Ứng dụng của tôi chỉ sử dụng memcpy()từ GLIBC_2,14 và nó hoạt động.

    Tôi không biết liệu nó sẽ hoạt động thành công cho các ứng dụng khác.


Cảm ơn! Các hướng dẫn này cho phép tôi dễ dàng chạy Shaka Packager trên Debian Wheezy. Tôi đang gói lệnh của mình trong một tập lệnh bash trông giống như exec env LD_LIBRARY_PATH=/home/user/fakeroot/lib/x86_64-linux-gnu/ YOUR_COMMAND "$@"lệnh đó có sẵn dễ dàng mà không cần chỉ định LD_LIBRARY_PATH mỗi lần.
Gabe Kopley

1

Tôi đoán có một số tùy chọn để bạn thử chi nhánh không ổn định "một cách an toàn":

  • Ảo hóa
  • Chroot theo đó bạn chọn một thư mục thay thế làm thư mục gốc rõ ràng của bạn. Do đó, bạn có thể tạo một hình ảnh hệ thống tập tin và cài đặt thủ công các gói cần thiết. Đây là một quá trình phức tạp và nó được thực hiện dễ dàng hơn nhiều trong trường hợp của Debian bằng cách sử dụng:
  • deboostrap , để trích dẫn bài viết Debian Wiki tại liên kết này, là

    một công cụ sẽ cài đặt một hệ thống cơ sở Debian vào một thư mục con của một hệ thống khác, đã được cài đặt. Nó không yêu cầu CD cài đặt, chỉ cần truy cập vào kho lưu trữ Debian.

    Điều này không có nghĩa là debootstrapsử dụng kỹ thuật chroot; Tôi không nhận thức được việc thực hiện nội bộ của nó.


Tôi đã sử dụng hướng dẫn debootstrap và đó chỉ là những gì tôi cần: wiki.debian.org/Debootstrap Tôi đã làm theo ví dụ sid nhưng thay vào đó đã sử dụng jessie: debootstrap --arch amd64 jessie $MY_CHROOT http://http.debian.net/debian/ Cảm ơn bạn!
Drew LeSueur
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.