Hệ thống Ubuntu bị hỏng sau khi vô tình gỡ cài đặt nhiều gói


20

Tôi vô tình xóa tất cả các gói bắt đầu bằng tên jpeg:

sudo apt-get remove jpeg*

Điều này làm hỏng rất nhiều thứ, loại bỏ Unity, Firefox, Flash player, v.v.

Tôi bằng cách nào đó đã tìm cách khôi phục máy tính để bàn và sự thống nhất nhưng sau đó rất nhiều thứ vẫn còn lỗi. Ví dụ .rpmcác tập tin và .tag.gzhoàn toàn không mở ra.

Những gì tôi muốn là một cách để sửa chữa mọi thứ không ổn. Một cái gì đó tương đương với 'cài đặt sửa chữa' với một đĩa windows.

Bất cứ lời khuyên, bất cứ ai?


1
Tôi thực sự khuyên bạn nên cài đặt mới. Chỉ cần sao lưu / home / (bao gồm các tệp vô hình) và chèn nó vào bản cài đặt mới.
Paul Woitaschek

Câu trả lời:


35

Bạn có thể cài đặt ubuntu-desktoptác vụ:

sudo apt-get install ubuntu-desktop^

Điều này sẽ cài đặt tất cả các gói của Ubuntu Desktop tiêu chuẩn mà bạn đã gỡ bỏ. Nó sẽ không khôi phục các gói bạn đã cài đặt không phải là một phần của máy tính để bàn tiêu chuẩn (tức là nó sẽ cài đặt lại Unity và Firefox, nhưng không phải Flash player).

Để cài đặt các gói đó, bạn có thể xem /var/log/apt/history.logvà xem chính xác những gì bạn đã xóa.

Lưu ý: cài đặt ubuntu-desktop^ tác vụ không giống như cài đặt ubuntu-desktop gói . Đầu tiên sẽ cung cấp cho APT một số gợi ý để giải quyết các phụ thuộc liên quan đến các gói ảo, sau đó sẽ cho APT tự do lựa chọn các gói (và cuối cùng sẽ cài đặt các công cụ vô dụng như ubiquity).

Tại sao vấn đề xảy ra? apt-get remove jpeg*sẽ không loại bỏ tất cả các gói bắt đầu với jpeg. Thay vào đó, nó sẽ loại bỏ tất cả các gói chứa jpetrong tên của họ. Điều này là do apt-get hoạt động với biểu thức chính quy, do đó jpeg * có nghĩa là: mọi thứ có chứa jpe theo sau bằng 0 hoặc nhiều g .


1
Ý kiến ​​hay, tôi đã không nghĩ về điều đó. Tôi sẽ quan tâm để xem nếu nó sẽ làm việc ở đây!
Eliah Kagan

@EliahKagan: Tôi đã thử nghiệm trong một chroot. Các gói jpeg * chỉ ảnh hưởng đến một số ứng dụng đồ họa, do đó, các 'thành phần' cần thiết (ví dụ: Trình quản lý mạng để kết nối Internet, APT, trình giả lập thiết bị đầu cuối, v.v.) vẫn còn trên hệ thống OP.
Andrea Corbellini

@EliahKagan: tất nhiên, tôi đã đưa ra giả định (không rõ ràng) rằng OP đã không loại bỏ bất cứ điều gì khác.
Andrea Corbellini

2
Vui lòng bao gồm một cảnh báo để không bao giờ sử dụng taskselđể xóa một tác vụ - xem lỗi
guntbert

1
@Attilio: Tôi đã giải thích sự khác biệt trong câu trả lời. Xem "Lưu ý: cài đặt tác vụ ubfox-desktop ^ không giống như cài đặt gói ubfox-desktop ..."
Andrea Corbellini

8

Cách tốt nhất để bạn khắc phục sự cố này có thể là cài đặt lại Ubuntu. (Bạn nên sao lưu tài liệu của mình trước, ngay cả khi bạn định cài đặt lại mà không cần định dạng lại.)

Nếu bạn muốn thử sửa hệ thống tại chỗ, hãy xem các tệp nhật ký của người quản lý gói để xem gói nào đã bị xóa và cài đặt lại chúng:

  • /var/log/dpkg.log (thông tin đầy đủ, nhưng khó đọc)
  • /var/log/apt/history.log (viết tắt bởi sẽ cho bạn biết mọi gói bị xóa hoặc sửa đổi - có thể là đặt cược tốt nhất của bạn)
  • /var/log/apt/term.log(nếu bạn đã xóa các gói có apt-gettrong thiết bị đầu cuối, thì điều này sẽ hiển thị những gì bạn đã thấy sau đó, bao gồm danh sách các gói sẽ bị xóa - vì vậy đây có thể là cách tốt nhất)

Cài đặt lại chỉ các gói có tên bắt đầu bằng jpegsẽ không hoạt động, vì nhiều (hầu như chắc chắn là hầu hết) các gói đã bị xóa đã bị xóa vì chúng dựa vào các gói đó.

Trong tương lai , tôi khuyên bạn nên kiểm tra cẩn thận hậu quả của việc gỡ cài đặt gói. Nếu bạn đang làm việc từ dòng lệnh, bạn sẽ luôn được thông báo. (Trừ khi bạn sử dụng -ytùy chọn, trong trường hợp đó, thường là không. Tôi khuyên bạn không nên sử dụng tùy chọn đó trừ khi bạn biết bạn đang làm gì, đặc biệt là để xóa.)

Một cách để kiểm tra hậu quả của một hoạt động quản lý gói được thực hiện apt-getmà không có rủi ro xảy ra là chạy apt-get -sthay vì sudo apt-get. Điều này chỉ mô phỏng hành động được chỉ định và báo cáo những gói nào sẽ bị ảnh hưởng như là kết quả và cách thức.


1

Tôi chạy sudo apt-get purge wine*trên Ubuntu 15.10, vì vậy không có giao diện đồ họa khi khởi động chỉ có tùy chọn đăng nhập thiết bị đầu cuối.

Như Eliah Kagan đề nghị tôi đã sử dụng thông tin từ /var/log/apt/history.log tôi chạy nano trên history.log và tạo một tập lệnh đơn giản có sudo apt-get installtrên tất cả các gói bị xóa mà tôi tìm thấy ở dòng:

Purge: evolution:amd64 (3.16.5-1ubuntu3.1), libtotem-plparser18:amd64 (3.10.5-1) ...... etc

Nhưng trước tiên tôi phải xóa thủ công giữa tất cả: và, bao gồm :,

ở bước này một tập lệnh mới sẽ hữu ích vì các gói là hàng trăm. sau đó tôi chạy tập lệnh và xóa một vài cái Unable to locate packages(mà tôi đã cài đặt thủ công). chạy kịch bản một lần nữa và đó là nó. Mọi thứ đều hoạt động tốt ... may mắn


0

Cài đặt gói ubfox-desktopCài đặt máy tính để bàn Ubuntu

sudo apt-get update && sudo apt-get install ubuntu-desktop

Nó sẽ cài đặt các gói cần thiết cho hệ thống của bạn.


điều này không thành công đối với tôi vì các phần phụ thuộc của máy tính để bàn không được cài đặt.
kevinkayaks

0

Tôi vô tình gỡ bỏ libssl1.0.0và máy của tôi bị tê liệt. Để khôi phục, tôi đã làm:

  1. Sao lưu nhật ký của những gì đã bị xóa cp /var/log/apt/term.log ~/libssl.term.log
  2. Xóa các dòng không liên quan đến hành động libssl vi ~/libssl.term.log
  3. Nếu mạng bị thiếu (không thể ping google.com), sau đó khởi động lại trong chế độ khôi phục và bật mạng
  4. Cài đặt lại các gói đã gỡ bỏ cat ~/libssl.term.log | grep ^Removing | sed -e 's/^Removing //g;s/ (.*$//g;/diversion of/d;/dangling symlinks/d' | xargs sudo apt-get -y install

0

Đây là một tập lệnh python nhỏ nơi bạn có thể viết chuỗi gói (không sử dụng được) từ cài đặt hàng loạt được bật /var/log/apt/history.log. Nó sẽ xuất ra một chuỗi mà bạn có thể sao chép dán vào lệnh apt-get install để dễ dàng cài đặt tất cả các gói đã gỡ bỏ.

import re

apt_str = u"INSERT YOUR PACKAGE STRING HERE, BETWEEN THE QUOTES"

match =  re.findall(r'([\w\d\.-]+).+? \(.+?\)', apt_str)
print " ".join(match)

Dấu phẩy? Bạn có nghĩa là trích dẫn?
wjandrea

@wjandrea Có ý tôi là trích dẫn
joaoroque
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.