Làm cách nào để quản lý phần mềm được cài đặt từ nguồn?


14

Thỉnh thoảng, chúng tôi có thể phải cài đặt một cái gì đó từ nguồn vì nhiều lý do. Mặc dù khá chuẩn về cách cài đặt phần mềm với các phụ thuộc phù hợp, nhưng tôi không rõ cách quản lý cài đặt như vậy để thuận tiện trong tương lai.

Cụ thể hơn:

  1. Chúng tôi có thể làm gì để đảm bảo gỡ cài đặt dễ dàng và sạch sẽ (bao gồm cả những phụ thuộc được cài đặt trước đó và chỉ cho phần mềm được cài đặt từ nguồn)?

  2. Chúng ta có thể làm gì để đảm bảo nâng cấp dễ dàng và sạch sẽ cùng một phần mềm, có khả năng sẽ được cài đặt lại từ nguồn?

  3. Chúng ta có thể làm gì để giảm thiểu xung đột tiềm ẩn nếu có gói mặc định (được cài đặt bằng apt-get) cũng như phiên bản (mới hơn) của gói (được cài đặt từ nguồn)?

Câu trả lời:


8

Sử dụng checkinstall make installsẽ tạo ra một gói tạm thời và cài đặt nó. Điều này có nghĩa là nó được ghi lại trong trình quản lý gói và có thể được gỡ cài đặt.


7

Điều tốt nhất để làm là tự mình tạo ra các gói Debian của các phiên bản mới hơn. dpkgvà các aptcông cụ làm tất cả ba điều mà bạn đề cập và được dành cho mục đích đó. Sử dụng chúng thay vì phát minh lại bánh xe. Có rất nhiều hướng dẫn trên bao bì có sẵn. Nếu phần mềm đã tồn tại trong kho, có lẽ bạn có thể lấy gói nguồn ( apt-get src) mà bạn có thể sử dụng để nghiên cứu và khởi động gói của riêng bạn.

Câu trả lời này cho https://askubfox.com/a/485230/158442 có thể hữu ích như một hướng dẫn chung.

Mặc dù checkinstalllà tuyệt vời cho một giải pháp nhanh chóng và bẩn thỉu, về lâu dài bạn nên sử dụng bao bì thích hợp.


cảm ơn những lời đề nghị Khi bạn nói 'phần mềm đã tồn tại trong kho', tôi cho rằng bạn có nghĩa là kho chính thức được duy trì bởi Ubuntu. Nếu vậy, trong nhiều trường hợp, các kho lưu trữ này không cung cấp các phiên bản mới hơn, đặc biệt là trên các bản phát hành Ubuntu cũ hơn. Vì vậy, apt-get srccó lẽ không thể giúp đỡ trong những trường hợp như vậy.
skyork

@skyork có lẽ họ không. Nhưng bạn có thể sử dụng các gói phiên bản cũ hơn để nghiên cứu. Có thể có một số tùy chỉnh mà trình đóng gói đã thực hiện, một số tập lệnh bảo trì tùy chỉnh. Không có lý do tại sao bạn nên bỏ qua tất cả điều đó và bắt đầu lại từ đầu. Phát minh lại bánh xe dường như là một chủ đề ở đây.
muru

4

Trước hết, phần lớn phụ thuộc vào cách bạn quản lý mã nguồn của mình. Tôi tạo một thư mục như ~/sourcesvà đặt mọi chương trình trong các thư mục con của nó, trong khi các thư mục khác sẽ tạo một thư mục mới cho mọi chương trình.

Tương tự như một số người như tôi, tạo thư mục con mới cho mọi phiên bản mới và chỉ xóa các phiên bản cũ hơn khi đảm bảo rằng không có lỗi đáng kể nào trong phiên bản mới sẽ ngăn cản công việc của tôi.

Không có cách duy nhất để làm điều này, nhưng cho dù bạn chọn cách nào, hãy chọn một cách dễ dàng nhất để bạn quản lý .

  1. Gỡ cài đặt sạch

    • Tôi sẽ đề nghị tạo ra một rem_dep.shkịch bản trông như thế này.

      #! /bin/bash
      sudo apt-get remove dep1 dep2 ... depn
      

      nơi dep1, dep2, depnphụ thuộc.

  2. Nâng cấp sạch sẽ và dễ dàng

    • nếu bạn nhận được mã nguồn từ một hệ thống phiên bản tự động như githoặc bazaarhoặc nếu các liên kết có thể dự đoán được, bạn có thể tạo một tập lệnh shell sẽ

      #1 make a backup of earlier version
      #2 get new source
      #3 configure, build/make the source
      #5 if make went correctly, remove earlier version.
      #6 make install new version, update dependencies if required.
      
    • Trong các trường hợp khác cũng vậy, bạn có thể tạo các tập lệnh như vậy với công việc thủ công ở một mức độ nào đó.

  3. Quản trị xung đột

    • Cách tốt nhất là sử dụng --prefixtùy chọn trong khi cài đặt phần mềm và có phụ thuộc.
    • Điều quan trọng khác là giữ cho hệ thống của bạn được cập nhật để giảm thiểu xung đột.

LƯU Ý: Nếu bạn thấy mình biên dịch nhiều phần mềm hơn mức bạn nên (tự thiết lập max_limit, như 5 hoặc 10 hoặc 100), tốt nhất bạn nên rời khỏi Ubuntu và chuyển sang Arch Linux.


3

Xây dựng các phụ thuộc:

  • AFAIK họ nên được ghi lại bằng tay. Bạn có thể tạo một tệp như README để giữ danh sách các phụ thuộc được cài đặt thủ công.

  • Nếu phần mềm đó đã có sẵn một tệp nhị phân trong kho Ubuntu hoặc PPA. Theo dõi phụ thuộc trong khi cài đặt sẽ dễ dàng hơn:

    sudo apt-get build-dep target_package
    

Làm sạch cài đặt:

Giữ thư mục nguồn được cấu hình và cài đặt. Tốt hơn nếu bạn thu thập tất cả các nguồn trong thư mục cụ thể với tệp phụ thuộc được cài đặt.

Làm sạch các bản nâng cấp và cài đặt tệp:

Cài đặt chúng cụ thể --prefix(tốt nhất --prefix=/opt/software_name-version/).

Điều này sẽ giải quyết nhiều vấn đề: các phiên bản đồng thời với một từ kho lưu trữ; nâng cấp sạch sẽ; dễ dàng hơn để gỡ cài đặt bẩn trong trường hợp nguồn đã bị xóa.

Tinh vi hơn hoặc cách tốt nhất, như câu trả lời @muru, Xây dựng gói Debian (Đối với các gói có sẵn trong kho Ubuntu / PPA)

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.