Cài đặt phiên bản cụ thể khi repo có phiên bản mới hơn?


13

Chúng ta hãy có một siêu dữ liệu phụ thuộc vào các gói sau

Depends: A (=2),
 B (=2),
 C (=2)

Lưu ý '=' - Tôi muốn cài đặt các phiên bản cụ thể này, không phải phiên bản mới nhất.

Ngoài ra:

B phụ thuộc vào A (> = 1)

C phụ thuộc vào B (> = 1) và A (> = 1)

Nếu các phiên bản gần đây nhất của A, B, C trong kho lưu trữ là 2 thì điều này hoạt động.

Vì tôi đã đặt phiên bản 3 của A và phiên bản 3 của B trong repo sudo apt-get install my-meta-pack từ chối kết thúc với thông tin sau:

The following packages have unmet dependencies:
  my-meta-package: Depends: B (= 2) but 3 is to be installed
                   Depends: A (= 2) but 3 is to be installed

Nếu tôi cài đặt thủ công phiên bản 2 của A và B thì siêu dữ liệu sẽ cài đặt chính xác, điều này cho thấy mạnh mẽ rằng không có sự phụ thuộc ẩn vào A3 hoặc B3. Đây không phải là một giải pháp cho vấn đề vì siêu dữ liệu được cài đặt tự động trên nhiều máy.

HỎI: Phải làm gì để tạo sudo apt-get install my-meta-gói phiên bản cài đặt 2,2,2?

Ngoài ra, có cách nào để tôi có thể nhận được thông tin mở rộng thực sự tạo ra nhu cầu cho phiên bản 3 của A và phiên bản 3 của B không?


Ồ, tôi chưa đọc toàn bộ câu hỏi trước khi trả lời. Bạn có thể đóng gói lại các siêu dữ liệu?
int_ua

2
@int_ua Tôi không hiểu những gì sẽ đóng gói lại siêu dữ liệu.
tymtam

@belacqua - Tôi đang ở bên bạn, nhưng chúng tôi cần một câu trả lời chắc chắn bao gồm những gì xảy ra khi có sự đảo ngược và sự phụ thuộc bị hỏng, v.v.
RobotHumans

Tệp kiểm soát của siêu dữ liệu của bạn có bao gồm phiên bản rõ ràng không có gói phụ thuộc nào không, chẳng hạn như (a=2), (b=2)?
Anwar

Câu trả lời:


11

Bạn phải chọn các phiên bản cụ thể để cài đặt và cài đặt tất cả chúng cùng lúc với cài đặt gói meta.

sudo apt-get install meta-package package1=2 package2=2 package3=2

Giống như câu trả lời của int_ua nói, bạn có thể tìm ra các phụ thuộc ngược với điều này:

apt-cache rdepends package

Nếu bạn muốn biết thêm thông tin về bất kỳ gói nào trong số đó ( phiên bản có sẵn, phụ thuộc và nhiều hơn nữa ), hãy sử dụng:

apt-cache show package

Sau khi bạn hoàn tất cài đặt chúng và muốn giữ chúng ở các phiên bản đó trong khi thực hiện nâng cấp hệ thống, bạn sẽ cần sử dụng tính năng ghim theo đề xuất của belacqua .

Ghim APT

Tính năng ghim APT cho phép quản trị viên buộc APT chọn các phiên bản cụ thể của các gói có thể có sẵn trong các phiên bản khác nhau từ các kho khác nhau. Điều này cho phép quản trị viên đảm bảo rằng các gói không được nâng cấp lên các phiên bản có thể xung đột với các gói khác trên hệ thống hoặc chưa được kiểm tra đầy đủ cho các thay đổi không mong muốn. Để thực hiện việc này, các chân trong tệp tùy chọn của APT (/ etc / apt / Preferences) phải được sửa đổi.


Tôi tin rằng đây là câu trả lời đúng, đặt = và sau đó là tên gói với phiên bản
LnxSlck

1
Tôi là đồng nghiệp của Tymek và điều này thực sự giải quyết được vấn đề. Quá tệ, chúng tôi phải đảo ngược kỹ thuật siêu dữ liệu để thực hiện. Một số Python sáng tạo theo thứ tự. Cảm ơn đống cho câu trả lời.
Igor Zevaka

1
Tôi tự hỏi nếu có giải pháp tốt hơn xuất hiện kể từ khi thời gian trôi qua?
ygrek

1

Bạn có thể thử cài đặt phụ thuộc trước với

sudo apt-get install package=2 trong đó 2 là phiên bản

Bạn có thể tìm ra những gói phụ thuộc vào gói với

apt-cache rdepends package


1
rdepends không cung cấp thông tin chi tiết về các phiên bản, phải không?
tymtam

2
Cài đặt phụ thuộc trước tiên sẽ thách thức có siêu dữ liệu. Đó là một giải pháp, nhưng không phải là giải pháp tôi đang tìm kiếm.
tymtam

1
Lưu ý rằng để làm việc này, các kho lưu trữ cần phải có phiên bản có sẵn của phiên bản mà bạn đã chỉ định, nếu không, nó sẽ bị lỗi.
Thomas Ward
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.