Sửa gói nửa cài đặt


42

Tôi nhận được lỗi trong khi sử dụng sudo apt-get upgradenói:

dpkg: error processing libgfortran3:amd64 (--configure):
  package libgfortran3:amd64 is not ready for configuration
  cannot configure (current status `half-installed')
Errors were encountered while processing:
  libgfortran3:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

Nó dường như không chặn cài đặt / nâng cấp các ứng dụng khác. Tôi tin rằng vấn đề này phát sinh do tắt trực tiếp PC của tôi trong khi ứng dụng đang được nâng cấp.

Làm thế nào tôi có thể sửa lỗi này?


Câu trả lời:


38
sudo dpkg --remove --force-remove-reinstreq --dry-run libgfortran3:amd64

Đó chỉ là một cuộc chạy đua. Tôi không chắc chắn những gì loại bỏ libgfortran3sẽ mang theo nó nhưng chạy nó và xem. Giả sử nó sẽ không ngấu nghiến toàn bộ hệ thống, hãy chạy lại mà không cần --dry-runvà sau đó bạn có thể trả sudo apt-get install ...lại các gói bạn cần.


4
Làm việc ra, cảm ơn! Đối với bản ghi, tôi đã chạy nó và nó nói dpkg: warning: package is in a very bad inconsistent state; you should reinstall it before attempting a removalvì vậy tôi đã tải xuống gói thủ công từ gói.ubfox.com và chạy sudo dpkg -i WHERE/THE/DOWNLOADED/PACKAGE/IS. Sau đó tất cả trở nên tốt đẹp.
Bora M. Alper

1
Trong trường hợp của tôi, sau khi làm theo các hướng dẫn này, chỉ cần chạy 'apt-get install -f' đã cài đặt lại gói và cũng sửa một số lỗi khác với các phụ thuộc bị hỏng vì nó. Cái này dành cho gói dữ liệu libx11 trên debian 7.
beclill

Không --dry-run, như bạn nói, nó làm việc cho tôi. Cảm ơn bạn!
forvas

69

Đối với lỗi gói được cài đặt một nửa, --reinstall hoạt động với tôi:

sudo apt-get install --reinstall packagename 

1
Có, nhưng một cảnh báo rằng sau khi cài đặt lại packagename, apt-get sẽ tiến hành cấu hình bất kỳ gói được cấu hình một nửa nào.
Hiệp sĩ Cedric

5
Điều này an toàn hơn imho câu trả lời được chấp nhận.
Zanna

sudo apt-get install --reinstal ncurses-base và sau đó tôi chạy sudo apt-get update bằng cách sử dụng tài khoản root (sudo -s), nó chỉ làm việc như thế ...
ArifMustafa

tuyệt quá. chỉ có giải pháp đó mới giải quyết được vấn đề của tôi
iWizard

điều này đã làm điều đó cho tôi. php-lê đã làm tôi đau đầu. cảm ơn!
pcarvalho

6
sudo apt install --reinstall packagename

Điều này làm việc như quyến rũ. Nó giải quyết một vấn đề mà tôi đã trải qua trong nhiều tháng. Trường hợp của tôi là với góilibmysqlcppconn7v5

Tất cả tôi đã làm là chạy sudo apt install --reinstall libmysqlcppconn7v5


2

Nếu bạn muốn sửa lỗi này thông qua GUI, bạn có thể sử dụng synap. Synaptic là một công cụ quản lý gói tuyệt vời đã từng được đưa vào các phiên bản cũ hơn của ubfox. Để cài đặt nó:

sudo apt-get install synaptic

nhấp vào sửa chữa các gói bị hỏng.


synaptic không liệt kê gói trong danh mục bị hỏng :(
Barun

2

Tôi gặp vấn đề "gói nửa cài đặt" tương tự với gói kibana. Tôi đã nhận được lỗi sau:

dpkg: error processing kibana (--configure):
package kibana is not ready for configuration
cannot configure (current status 'half-installed')
Errors were encountered while processing:
  kibana
E: Sub-process /usr/bin/dpkg returned an error code (1)

Nếu bất cứ ai vẫn phải đối mặt với loại vấn đề này, thì bạn có thể thử điều này:

sudo rm /var/lib/dpkg/info/kibana*
cd /var/cache/apt/archives
sudo rm kibana*
apt-get --reinstall install kibana

Điều này làm việc cho tôi. Bạn chỉ cần thay thế từ 'kibana' bằng tên gói được cài đặt một nửa của bạn.


2

Điều này sẽ khắc phục vấn đề của bạn mà không cần cài đặt lại gói.

sudo dpkg --force-remove-reinstreq --remove <package_name here>

Theo dõi bởi: sudo apt-get update


Tại sao --force-remove-reinstreq? Trình quản lý gói không nói rằng cần phải cài đặt lại. Nói chung, việc loại bỏ thông thường chỉ hoạt động tốt đối với các gói chưa được định cấu hình. -1
David Foerster

Đó chỉ là những gì tôi làm khi sudo apt-get remove <packagekhông có tùy chọn và tôi không muốn cài đặt lại gói đã cài đặt một nửa. Sau đó, tôi sử dụng --force-remove-reinstreqđể loại bỏ các ứng dụng đó .. PS: Đó là trên Linux Mint .. Tôi nghi ngờ nếu nó sẽ trở nên khác biệt vì Linux dựa trên Ubuntu ..
CodeG ass

1
Trình quản lý gói hoạt động giống nhau trong tất cả các bản phân phối dựa trên Debian (đó là những gì dpkgđại diện cho tất cả), nhưng bạn không nên sử dụng --force-*"chỉ trong trường hợp". Các thông báo lỗi là có lý do và không nên xem nhẹ bởi người dùng thiếu kinh nghiệm, đó là lý do tại sao bạn không nên đề xuất --force-*các tùy chọn không cần thiết cho họ. Mặt khác, chúng tôi chỉ có thể khuyên bạn luôn luôn sử dụng --force-allhoặc tốt hơn là xóa các --force-*tùy chọn khỏi dpkghoàn toàn và để chúng là hành vi mặc định vì điều đó sẽ dễ dàng và thuận tiện hơn.
David Foerster

Được rồi, thừa nhận đi ... Tôi đã quan tâm đến việc hoàn thành công việc hơn là, biết chính xác và làm thế nào nó được thực hiện .. Lời xin lỗi ..
CodeG ass

Hừm Tôi chỉ thấy rằng câu trả lời được chấp nhận cho thấy điều tương tự. Vì vậy, tôi có thể sai về --force-remove-reinstreqviệc không cần thiết. Nhưng điều đó cũng có nghĩa là câu trả lời của bạn là (gần như) một bản sao của nó. Chúc may mắn lần sau.
David Foerster
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.