Nói năng khiếu bỏ qua gói bị hỏng


9

Tôi đã cài đặt một Amsynth từ Lucid trong Karmic bằng cách sử dụng:

dpkg --force-depends-version -i amsynth_1.2.2-1_i386.deb

Lý do để cài đặt phiên bản Lucid là vì phiên bản Karmic đã 3 tuổi và gặp sự cố trên máy của tôi. Gói Lucid Amsynth phụ thuộc vào các phiên bản mới hơn của libatk1 và libjack0 so với Karmic, nhưng tôi nghĩ rằng tôi sẽ mạo hiểm, và hóa ra Amsynth chạy tốt.

Tuy nhiên, aptitude cố gắng gỡ cài đặt Amsynth mỗi khi tôi nâng cấp. Tôi nghĩ rằng tôi đã quản lý để giữ nó nhưng bây giờ hủy bỏ năng khiếu. Làm thế nào tôi có thể nói năng khiếu để bỏ qua gói bị hỏng và tiếp tục.


Hiện tại tôi vừa gỡ cài đặt nó. Tôi sẽ chỉ cài đặt lại mỗi lần tôi cần nó, nó không mất quá nhiều thời gian, cho đến khi nó đủ lỗi để tôi thử biên dịch lại.

Nếu bạn cần thứ gì đó từ bản phát hành mới hơn và nó cần thư viện mới hơn, bạn thường có thể chỉ cần kéo chúng theo hoặc tải xuống gói nguồn và xây dựng lại nó trên hệ thống của bạn. Tuy nhiên, tôi đã bắt gặp điều này khi cố gắng sử dụng gói của bên thứ 3 và hơn cả việc hack là cần thiết.
Jan Hudec

Câu trả lời:


7

Nếu bạn đã cài đặt chương trình thông qua tệp deb-file và dpkg, bạn cũng có thể thay đổi các phụ thuộc của tệp .deb đã cài đặt theo cách thủ công. Tôi đã bị thúc đẩy đến biện pháp cực đoan này một lần ...

ar x foo.deb
vim control.tar.xz  # see below
ar r foo.deb control.tar.xz
dpkg -i foo.deb

và dpkg không biết về sự phụ thuộc của foo nữa. Trong vim bạn phải chọn ./control (Tôi sử dụng vim để đọc các tệp được đóng gói - giải nén và sử dụng một trình soạn thảo khác và đóng gói lại nếu bạn muốn) và loại bỏ các phụ thuộc không mong muốn khỏi dòng

Depends: foo bar

1
Bạn tốt hơn hết là sử dụng dpkg-debchứ không phải ar. arlà một chi tiết thực hiện dpkg có thể thay đổi trong tương lai.
jmtd

Cảm ơn, giải pháp này hiệu quả với tôi nhưng khi tôi thực hiện nâng cấp apt-get, tôi nhận được thông báo "Các gói sau đã được giữ lại: numptyphysics: i386" (apt-get dist-nâng cấp không nói gì). Thông điệp này có bình thường không và chúng ta có thể thoát khỏi nó không?
baptx

7

Có một giải pháp bị hack tại Ubuntuforums . ~ giải pháp của quack là tốt hơn, nhưng công việc nhiều hơn.

Tôi không thể tìm thấy bất cứ điều gì trên google về điều này, hãy lưu biên dịch 'gói giả' của riêng bạn (không thể gỡ cài đặt (các) gói bị hỏng. Trừ khi bạn đủ may mắn để có các công cụ), nhưng việc tìm kiếm ổ cứng của riêng tôi đã cho tôi Câu trả lời cuối cùng!

Đối với bất kỳ ai muốn biết, đây là cách "phá vỡ" một gói trong synap / aptitude / apt-get, mà không cần gỡ cài đặt nó.

Trước hết, hãy ghi lại gói bạn đã cài đặt và (các) gói đó phụ thuộc vào trạng thái bị hỏng. Giả sử tôi đã buộc cài đặt táo, tùy thuộc vào gói lỗi thời không có trong kho:

Trong một loại thiết bị đầu cuối Mã:

sudo gedit /var/lib/dpkg/status

tìm kiếm tập tin cho đến khi bạn tìm thấy một cái gì đó như:

Mã số:

Package: apples
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 316
Maintainer:
Architecture: i386
Source: applesauce
Version: 1.0.10-1
Depends: packageA, packageB, obsolete
Description: Apples on your desktop!

Xóa lỗi thời khỏi hàng Depends: lưu, lưu tệp và bạn đã hoàn tất. Hy vọng điều này sẽ giúp một số người ra ngoài.


ick. tìm kiếm tốt, nhưng tôi không phải là người thích nói dối với người quản lý gói (về cơ bản là những gì hack thực hiện). tốt hơn hết là không sử dụng APT hơn là chạy xung quanh phá vỡ nó. đây là lý do tại sao biên dịch các gói của riêng bạn là một điều tốt - không phụ thuộc bị hỏng và không nói dối với người quản lý gói của bạn.
quack quixote

Tôi không có vấn đề gì với việc nói dối với người quản lý gói, đặc biệt là trong vài tháng nữa tôi sẽ cài đặt lại HĐH, nhưng tôi không thể tìm thấy tệp được tham chiếu trong luồng.

Kỳ dị. Nó nên ở đó Hãy thử thực hiện "cd / var / lib / dpkg" và sau đó "sudo nano status".
Iain

1
Các liên kết không còn hoạt động. Đó là lý do chính xác tại sao câu trả lời chỉ liên kết được nhăn mặt ở đây. Nếu bạn giải thích ở đây, nó sẽ là câu trả lời chính xác.
Jan Hudec

Không biết điều này có phải là vĩnh viễn hay không, nhưng có vẻ như đây là một sửa chữa tốt cho việc cài đặt các gói có phụ thuộc cứng vào các phiên bản Java không còn khả dụng.
krispy

2

Trong phần Tùy chọn của aptitude (Ctrl-T để vào menu; bên dưới Tùy chọn), bỏ chọn tùy chọn trong phần "Xử lý phụ thuộc" có nội dung "Tự động sửa các gói bị hỏng trước khi cài đặt hoặc gỡ bỏ" . Điều đó sẽ khiến apt apt ngừng cố gắng sửa lỗi mỗi lần bạn thay đổi các gói khác.

Là một sửa chữa lâu dài hơn, bạn nên lấy các gói nguồn cho gói Lucid Amsynth mà bạn đã cài đặt, cũng như các gói nguồn cho libatk1libjack0 , và xây dựng gói cập nhật của riêng bạn. Tùy thuộc vào những gì khác sử dụng các thư viện đó, bạn có thể cần phải cập nhật các gói khác, nhưng bạn có thể có thể thoát khỏi chỉ với những thư viện đó. (Điều này được thực chất backporting những gói từ Lucid để Karmic - bạn nên kiểm tra Karmic-backports kho hoặc các PPA để xem có ai ấy đã làm điều này Nếu gói mới công việc của bạn, hãy xem xét gửi chúng đến Karmic-backports cho người khác sử dụng.. )


Cảm ơn tôi đã thử đề xuất đầu tiên của bạn nhưng nó dường như không tạo ra sự khác biệt. Cập nhật sẽ chỉ hủy bỏ. Tôi cũng đã thử biên dịch nó trước khi tôi thử cài đặt gói Lucid nhưng không có may mắn với nó. Tôi có thể thử lại trong tương lai.
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.