Làm thế nào để xóa các gói bị hỏng trong Ubuntu


38

Tôi không thể loại bỏ gói bị hỏng. Sử dụng lệnh sau: sudo apt-get -f install nhưng tôi nhận được phản hồi sau:

Preparing to unpack .../nodejs_0.10.28-1chl1~trusty1_amd64.deb ...
Unpacking nodejs (0.10.28-1chl1~trusty1) over (0.10.25~dfsg2-2ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/node.1.gz', which is also in package nodejs-legacy 0.10.25~dfsg2-2ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Tôi đã thử các lệnh khác nhau như

 2015  sudo apt-get clean
 2020  sudo dpkg --configure -a
 2023  sudo apt-get autoremove
 2034  sudo apt-get upgrade && sudo apt-get -f install

Nhưng tôi đã không nhận được bất kỳ kết quả. Tôi không thể cài đặt synap. Bất kỳ ý tưởng làm thế nào tôi có thể loại bỏ các gói bị hỏng?


Ở đây có vài câu trả lời đã gợi ý --force-remove-reinstreq--force-overwrite. Xin lưu ý rằng bạn chỉ nên sử dụng hai cái này (đặc biệt là cái đầu tiên) nếu bạn là một chuyên gia Linux, bởi vì nó có thể phá vỡ hoàn toàn hệ thống của bạn.
g_p

Câu trả lời:


55

chạy lệnh này để loại bỏ các gói bị hỏng trong ubfox.

sudo dpkg --remove --force-remove-reinstreq package_name 

Sau khi gỡ bỏ gói cập nhật hệ thống của bạn bằng lệnh

sudo apt-get update

khởi động lại hệ thống sau khi cập nhật thành công.


5
Lệnh này phải luôn luôn được tránh vì nó phá vỡ hệ thống của bạn nhiều hơn là sửa chữa
rancho

2
@rancho phụ thuộc vào gói đó là gì.
Philip

thật tuyệt, cách bạn gus luôn viết pack_name, nhưng tôi thấy một danh sách 900 dòng trong một định dạng điên rồ, ví dụ : Broken libopencv-highgui2.4v5:amd64 Conflicts on libopencv-highgui2.4 [ amd64 ] < 2.4.8+dfsg1-2ubuntu1 > ( libs ). chờ đợi trên LTS đã thực sự thực hiện thủ thuật điên rồ này với tôi.
nyxee

@rancho "nó phá vỡ hệ thống của bạn nhiều hơn là sửa chữa" bạn có thể giải thích không? man dpkgkhông giúp được gì nhiều
Stéphane Gourichon

Đây là điều duy nhất làm việc cho tôi. Tôi đã phá vỡ mysql của tôi trong khi cập nhật gói. Bây giờ tôi không thể thanh lọc hoặc cài đặt lại. Vì vậy, điều này đã cứu cuộc đời tôi.
Ankit Singhaniya

11

Mở terminal của bạn và sử dụng lệnh sau

sudo dpkg --purge nodejs-legacy
sudo apt-get install -f

Nó sẽ giải quyết vấn đề của bạn.


11

Tôi đã thấy rằng:

sudo dpkg --remove --force-remove-reinstreq <packagename>

Làm việc tốt nhất. Nếu nó gây ra lỗi cho bạn rằng nó sẽ không xóa gói vì nó phụ thuộc vào gói khác, hãy xóa gói đó đi. Bạn sẽ phải lặp lại bước này nhiều lần và sau đó cài đặt lại các gói đã xóa.

Đây force-remove-reinstreqlà "tùy chọn hạt nhân" của việc xóa một gói. Nó chỉ thất bại nếu có một gói khác tùy thuộc vào gói bạn sắp xóa - Một lần nữa, trong trường hợp đó, cũng xóa gói tùy thuộc.


Tùy chọn hạt nhân hoạt động trong đó thanh trừng, làm sạch, cài đặt lại, autoremove, thông qua cả hai dpkgapt-getthất bại. Cảm ơn bạn.
LAFK nói Phục hồi Monica

Đây là những giải pháp tốt nhất nếu bạn chỉ muốn nuke tất cả mọi thứ và bắt đầu lại. Tiết kiệm cho tôi rất nhiều thời gian! (Tôi cũng đã sử dụng --purge sau --remove)
andersevenrud

Xin vui lòng, bạn có thể đưa ra một số gợi ý về cách điền vào đó package_namekhi chúng tôi có hơn 1000 dòng (một số trùng lặp) trong các tệp nhật ký apt ..
nyxee

4

Điều này đã khắc phục vấn đề của tôi:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb

Vì vậy, hãy đánh dấu nó là câu trả lời chính xác sau đó.
jarno

Hoạt động hoàn hảo.
Shubham Patel

3

Mở thiết bị đầu cuối của bạn và dán các dòng này sau dòng

sudo rm -rf  /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
sudo apt-get autoclean
sudo apt-get update
sudo apt-get upgrade

sau đó thử lại


2

Lỗi tương tự lặp lại Nếu chúng ta làm apt-get cleanapt-get -f installtrừ khi chúng ta xóa dữ liệu rác khỏi /var/lib/dpkg/statustệp trong Ubuntu.

Giả sử chúng ta cần loại bỏ gói apache bị hỏng. Ban đầu chúng tôi phải mở tệp trạng thái và tìm kiếm gói apache. Xóa toàn bộ mô tả gói và lưu tệp trạng thái. Sau đó thử sử dụng apt-get -f installapt-get clean.


2

Không có gì ở trên làm việc cho tôi. cuối cùng tôi đã chỉnh sửa tệp / var / lib / dpkg / status và xóa các gói từ đó.

Tôi không khuyên bạn nên làm điều này, chỉ khi có bất cứ điều gì khác thất bại ...


Đây dường như là điều duy nhất làm việc cho tôi. Ngay cả cái gọi là 'tùy chọn hạt nhân' của --force-remove-rebstreq cũng không thể xóa gói vi phạm. Cảm ơn ngài.
alex

1

Không có cái nào ở trên làm việc cho tôi

Tôi đã sử dụng sudo aptitude.

Nó tìm thấy lỗi ngay lập tức và cung cấp tùy chọn. Bạn chọn và nó sửa nó.


cũng sửa nó cho tôi trên debian - đây là giải pháp làm việc duy nhất cho tôi. Không có ý kiến ​​trước khi làm việc cho tôi! Cảm ơn!
Hirbod

0

Đây là một:

cập nhật danh sách gói của bạn như thế này

 sudo apt-get update

sau đó dọn dẹp bất kỳ gói nào

 sudo apt-get autoclean

Bây giờ dọn dẹp bộ đệm apt

 sudo apt-get clean

Bây giờ loại bỏ bất kỳ phụ thuộc không cần thiết

 sudo apt-get autoremove

từ lệnh trên, bạn có thể xác định bất kỳ gói bị hỏng nào và loại bỏ mạnh mẽ như thế này

 sudo dpkg --remove --force-remove-reinstreq package_name

Cuối cùng lau bất kỳ gói nào khác với người phụ thuộc

 sudo apt-get -f install 

Nói cho tôi biết làm thế nào nó đi.


Tôi nghĩ lệnh này không chính xác: `sudo dpkg --remove -force --force-remove-rebstreq pack_name.
Juan Simón

Ji ... vậy cái nào là đúng?
Olu Smith

0
  1. truy vấn tất cả các gói được cài đặt hôm nay hoặc hôm qua awk -v foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d') '($1==foo || $1==bar) && $3~/^install$/ { print $4 }' /var/log/dpkg.log
  2. Wine-qqintl: i386 gây ra sự cố, vì vậy tôi xóa gói sudo dpkg -r wine-qqintl:i386

  3. làm xong.


1
ok, chúng ta có thể nhận được các gói được cài đặt gần đây như vậy, nhưng điều này không trả lời cho câu hỏi làm thế nào để loại bỏ các gói bị hỏng
Zanna

0

Tôi đã có một vấn đề với gói kodi bị hỏng. Tôi đã mở trình quản lý gói synaptic và sử dụng bộ lọc "bị hỏng" để xác định vị trí gói và đánh dấu nó để loại bỏ hoàn toàn. Nó làm việc như một nhà vô địch.

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.