Bạn có thể giúp tôi với vấn đề phụ thuộc phần mềm của tôi?


12

Đây là một câu hỏi Canonical về phụ thuộc biên dịch và quản lý gói.

Tôi có một câu hỏi liên quan đến việc biên dịch cổng / phần mềm hoặc cài đặt RPM trên máy chủ * nix của tôi. Khi tôi cố gắng làm điều này, tôi nhận được rất nhiều tin nhắn về sự phụ thuộc bị thiếu.

Cộng đồng Server Fault có thể giúp đỡ không?

Câu trả lời:


10

Chào mừng bạn đến với Lỗi Máy chủ. Nói chung loại câu hỏi này không phải là chủ đề ở đây. Người ta hy vọng rằng hầu hết các sysadins sẽ phải đối mặt với vấn đề này trước khi họ trở thành một sysadmin thông qua việc mày mò với các máy trạm của riêng họ. Tuy nhiên, các sysadins đến từ nền Windows có thể không phải đối mặt với điều này, vì vậy đây là một số điều cần xem xét:

Tại sao không sử dụng trình quản lý gói để cài đặt phần mềm trên máy chủ của bạn?

Quản lý gói như yumhoặc aptxử lý các phụ thuộc này cho bạn. Ngoài ra, chúng cũng có thể được sử dụng để quản lý các bản cập nhật của phần mềm trên máy chủ của bạn. Hầu hết các hương vị của * nix sẽ có trình quản lý gói được cài đặt theo mặc định, đặc biệt là trên VPS đi kèm với hệ điều hành được cài đặt sẵn. Nếu bạn thực sự chưa quen với điều này, hãy sử dụng một trong những thứ này trên hệ thống sản xuất của bạn và lưu lại những cuộc phiêu lưu trong việc biên dịch hoặc cài đặt RPM cạnh chảy máu cho môi trường thử nghiệm của bạn.

Nhưng tôi bắt buộc phải sử dụng gói cập nhật hơn so với những gì có sẵn trong trình quản lý gói của tôi!

Hầu hết các trình quản lý gói có thể được cấu hình để sử dụng các kho lưu trữ khác nhau - bạn có thể thấy rằng có một kho cung cấp phiên bản của gói mà bạn cần và vẫn cho phép bạn tận dụng các chức năng của trình quản lý gói.

Gói tôi cần không có sẵn thông qua bất kỳ repos hoặc người quản lý gói

Trong trường hợp đó bạn có thể làm cần phải tìm ra các phụ thuộc (hoặc hút nó lên và sử dụng một ổn định hơn / phiên bản phổ biến của phần mềm). Bạn có thể nên làm như sau trong một môi trường thử nghiệm và ghi chú cẩn thận về những gì bạn làm:

  • Đảm bảo đọc tài liệu cho phần mềm bạn đang cài đặt - điều này có thể sẽ liệt kê những gì bạn cần cài đặt trước, nhưng không phải là những gì cần thiết cho phần mềm đó .
  • Sử dụng trình quản lý gói của bạn để cài đặt những thứ được yêu cầu - trong hầu hết các trường hợp, những thứ này sẽ có sẵn.
  • Một khi bạn đã hoàn thành điều này, hãy thử cài đặt.
  • Nếu bạn vẫn thấy thông báo về các phụ thuộc bị thiếu, hãy ghi lại tất cả chúng, và một lần nữa cố gắng cài đặt càng nhiều càng tốt bằng cách sử dụng trình quản lý gói của bạn.
  • Nếu không tìm thấy một phụ thuộc, bạn phải coi nó là một nhiệm vụ con và xử lý đệ quy (tìm tarball nguồn, tìm phụ thuộc, cài đặt).
  • Đó là một quá trình lặp đi lặp lại.

Tôi vẫn đang gặp vấn đề!

Nếu bạn đã làm theo tất cả các bước trên và vẫn gặp sự cố thì có thể bạn đã gặp phải một số vấn đề kỳ lạ mà các Máy chủ lỗi khác có thể sẵn lòng giúp đỡ. Tạo một câu hỏi mới, cung cấp chi tiết về phần mềm bạn đang cố cài đặt, phiên bản nào và thông báo lỗi chính xác mà bạn đang thấy.

Tư vấn cụ thể cho các hệ thống quản lý gói lớn

Quản lý gói RPM (RHEL / Fedora và bản sao) và DEB (Debian / Ubuntu và bản sao)

  • yum whatprovides tên tệp là một cách tuyệt vời để tìm gói cung cấp một tệp hoặc thư viện cụ thể trên hệ thống loại RHEL.
  • Đừng dùng ./configure && make && make installmù quáng nếu có thể! Quản lý gói được phát minh vì lý do này để ngăn chặn sự lộn xộn và không thể nhầm lẫn do kết quả của việc cài đặt nhiều tệp xung đột không thể kiểm soát được.
  • Nhiều thư viện được chia thành hai phần: nhị phân (ví dụ đối tượng chia sẻ) và phát triển (tiêu đề). Vì vậy, bạn cần cả hai libfoolibfoo-devel(hoặc -dev) gói.
  • Cân nhắc sử dụng fpm( https://github.com/jordansissel/fpm ) để chuyển đổi tarball thành RPM và DEB gọn gàng
  • Nếu bạn đang triển khai các gói của riêng mình, BẠN là người chịu trách nhiệm cho các cập nhật, kiểm tra và bảo trì của họ. Nếu bạn không có cơ sở hạ tầng cho điều đó, bạn chắc chắn đang nhắm mục tiêu quá cao.

Tìm phụ thuộc theo tên tệp cho RPM

http://rpmfind.net là một nơi tốt để tìm tên của các gói nếu bạn biết tên của tệp mà quy trình cài đặt đang phàn nàn. Mặc dù vậy, việc kết hợp và trộn các gói từ các bản phân phối khác nhau không được khuyến nghị.


Tôi nghĩ sẽ hữu ích khi cung cấp một phần thảo luận về vấn đề phụ thuộc thư viện có thể khó giải quyết hơn một chút - nhưng tôi ít kinh nghiệm trong việc này - có ai quan tâm đóng góp không?
dunxd

Các mục mà tôi rất muốn giới thiệu sẽ bao gồm chi tiết về src RPM và cách duy trì kho lưu trữ cục bộ tùy chỉnh. Xây dựng các tệp deb hoặc vòng / phút nên là một phần của bộ công cụ của bất kỳ ai phải làm việc với các yêu cầu gói khác thường.
Tim Brigham

Có thể đáng để mở rộng điều này để chạm vào chủ đề của ngăn xếp ứng dụng và cạm bẫy của chúng. Câu hỏi "gói cập nhật hơn" nhắc tôi về một câu hỏi gần đây .
Andrew B

Đó là một wiki cộng đồng vì vậy hãy thoải mái thêm mọi thứ, hoặc dĩ nhiên cung cấp câu trả lời của riêng bạn :-)
dunxd 21/03/13
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.