Có cách nào để quay trở lại nâng cấp gần đây nhất?


54

Điều này đã xảy ra với tôi nhiều lần trong 5 năm qua: một bản nâng cấp đã phá vỡ hệ thống của tôi. Mỗi lần tôi gặp tình huống này, tôi phải cài đặt lại toàn bộ hệ thống, điều này thực sự gây phiền nhiễu.

Có cách nào để khôi phục bản nâng cấp gần đây nhất để có thể có một hệ thống chức năng mà không cần cài đặt lại không? Nếu không, đó là cách tốt nhất để đề xuất đây là một ý tưởng ưu tiên hàng đầu?

Tôi đã đọc ý tưởng này được mô tả trong brainstorm.ubfox.com, nhưng nó cảm thấy nó đã chết ... và các diễn đàn có đầy đủ các ví dụ về nâng cấp phá vỡ mọi thứ, đó là lý do tại sao tôi cảm thấy cần phải làm gì đó về chủ đề này. Cảm ơn!


17
Tôi đang đăng nhập chỉ để bỏ phiếu cho câu hỏi này. Việc thiếu một công cụ khôi phục mạch lạc trong HĐH Desktop 2011 thật thảm hại. Windows đã có System Restore hơn 5 năm trước, đó là một chặng đường dài phía sau đường cong. Người dùng đã được đào tạo ( chính xác ) để cài đặt các bản cập nhật bảo mật, nhưng chúng tôi liên tục bị phạt vì làm điều này do lỗi trình điều khiển.
Gates VP

@GatesVP Điểm này bạn đã thực hiện hơn 8 năm trước vẫn còn gây khó chịu cho Ubuntu (không thể nói cho các bản phát hành khác nhưng có lẽ chúng không tốt hơn). Tôi thấy điều này hoàn toàn bực bội. Ai đó nên có những từ của bạn được in bằng phông chữ 64 pt và treo trước mặt mọi người mới sắp lao vào thế giới của linux.
horaceT

Tôi phải đồng ý rằng một hình ảnh sao lưu là con đường để đi. Nó không được nêu nếu đây là một hệ thống 'sản xuất'. Nếu nó là và khả thi để có một hệ thống kiểm tra bản sao thì với sao lưu hình ảnh là cách để đi. Nếu chỉ là một bản cập nhật ứng dụng, thì giải pháp nhanh nhất là hạ cấp có hoặc không có tùy chọn 'bắt buộc'.
JHPArizona

Câu trả lời:


14

Trong synap, ít nhất bạn có thể kiểm soát, những gì đã được cập nhật gần đây: Menu tệp, lịch sử.

(nếu khớp thần kinh có thể khởi động được, với hệ thống bị hỏng). Vì vậy, với lệnh apt -...-, để hoàn nguyên cập nhật của họ, nó không quá khó.

Tôi đoán có một lệnh lịch sử cho dòng lệnh quá.

Có lẽ bạn phải xóa toàn bộ gói và cài đặt một phiên bản cụ thể. Afaik, có thể cài đặt một phiên bản cụ thể, nhưng tôi không bao giờ có nhu cầu làm như vậy.

Cập nhật: Tra cứu cách làm với apt:

Tìm các gói được cài đặt trong 3x24h cuối cùng:

find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' 

Với chính sách apt-cache, bạn sẽ thấy các phiên bản có sẵn của chương trình:

sudo apt-cache policy PROGRAM:
 *** 3.6.7+build3+nobinonly-0ubuntu0.10.04.1 0
        500 http://de.archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
        500 http://security.ubuntu.com/ubuntu/ lucid-security/main Packages
        100 /var/lib/dpkg/status
     3.6.3+nobinonly-0ubuntu4 0

ở đây 3.6.7 và 3.6.3. Bây giờ bạn biết phiên bản trước có thể được cài đặt (thường không phải là phiên bản tiền nhiệm ngay lập tức):

sudo apt-get install PROGRAM=3.6.3

Sau đó, bạn cần thực hiện ghim apt, để ngăn cập nhật trong tương lai:

Tạo một tệp mới trong /etc/apt/preferences.d/ (if> = 10.4) được đặt tên theo chương trình của bạn,

Package: program
Pin: version 3.6.3*
Pin-Priority: 1000

Cảm ơn tất cả các thông tin. Tôi không thể chờ đợi Ubuntu để quản lý zfs ra khỏi hộp!
Marcelo Ruiz

Tôi xin lỗi - nó có liên quan gì với zfs? Zfs có quản lý rollback không? Hoặc các bản cập nhật phá vỡ cài đặt zfs của bạn? Hoặc bản cập nhật zfs phá vỡ một cái gì đó?
người dùng không xác định

Nếu phiên bản 1.0.2g-1ubuntu4.12theo apt thì sao? Nó từ chối chấp nhận đó là một số phiên bản mặc dù. Tôi muốn hạ cấp mẫu 1.0.2g-1ubuntu4.13xuống1.0.2g-1ubuntu4.12
Csaba Toth

cảm ơn, suuuuuuuuuuuuuch một nỗi đau mặc dù. Bản cập nhật cuối cùng của tôi đã phá hủy hoàn toàn đầu vào bộ điều khiển có chính xác 80 gói được liệt kê vào find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' thời điểm này, việc cài đặt lại toàn bộ hệ thống của tôi ít gặp rắc rối hơn
tatsu 21/12/18

7

Hầu hết bạn có thể tham khảo /var/log/apt/history.logcác thay đổi được thực hiện bởi apt / synaptic. Đó chỉ là một chút pháp y và rất nhiều cắt / dán để làm.

Quay trở lại ngày khi hệ thống của bạn vẫn hoạt động tốt.

Trước tiên, lấy tất cả các gói đã được cài đặt kể từ đó và đặt chúng cùng nhau trong một tập lệnh gỡ cài đặt. Khi tập lệnh kết thúc, bắt đầu thêm lại tất cả các gói đã xóa.

Một trường hợp ví dụ:
logfile:

Start-Date: 2014-05-28  21:28:11
Commandline: synaptic
Install: libfglrx-amdxvba1:amd64 (13.12-3kali1, automatic), libgl1-fglrx-glx:amd64 (13.12-3kali1), glx-alternative-fglrx:amd64 (0.4.1kali1, automatic), libfglrx:amd64 (13.12-3kali1, au$
Remove: fglrx-glx-ia32:amd64 (12-6+point-3)
End-Date: 2014-05-28  21:28:27

bạn có thể thấy,

libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 & libfglrx:amd64 

đã được cài đặt bởi Synaptic. như libfglrx:amd64đã bị loại bỏ bởi Synaptic.

Chúng tôi đã đi theo thứ tự ngược lại, vì vậy trước tiên chúng tôi loại bỏ các gói mới được cài đặt và chúng tôi thêm lại các gói đã bị xóa.

Một lệnh làm việc cho trường hợp này có thể trông giống như:

sudo apt-get remove -y libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 libfglrx:amd64 && sudo apt-get install -y libfglrx:amd64

Có lẽ đó không phải là ý tưởng tốt nhất để đi mà không có công -ytắc - để có nhiều quyền kiểm soát hơn về quy trình (để tránh phụ thuộc bị hỏng). Hầu hết các bạn sẽ không bẻ ngón tay của họ trong khi thực hiện một vài xác minh "y"

Trong hầu hết các trường hợp, việc khôi phục có thể theo cách này, nhưng nếu sự phụ thuộc đã bị phá vỡ - bạn có thể gặp phải một vấn đề thậm chí còn lớn hơn.


6

Hầu hết thời gian nếu hệ thống của bạn bị hỏng thì đó là sự cố hạt nhân .

Chỉ cần khởi động một kernel cũ hơn và cài đặt lại các gói gần đây nhất (đặc biệt là các gói kernel) có thể không cập nhật chính xác. Vài lưu ý:

/var/log/dpkg.log

là bạn của bạn để kiểm tra danh sách các gói được cập nhật / cài đặt gần đây là gì

sudo apt-get -f install

hầu hết thời gian có thể sửa chữa các gói nửa cài đặt


4

Thật không may, không có cách nào để làm điều này được nêu ra. Snapshot / rollback cấp hệ thống tập tin là một trong những tính năng của btrfs sắp tới, nhưng nó có một cách để trở thành tính năng hoàn chỉnh và đủ ổn định để sử dụng làm hệ thống tập tin mặc định.


1
Đối với ảnh chụp nhanh hệ thống tệp, bạn có thể sử dụng LVM thay thế, với ext3 hoặc ext4.
Flimm

@Flimm, bây giờ bạn có thể, mặc dù nó không hoạt động tốt và yêu cầu bạn thiết lập LVM khi bạn cài đặt ở nơi đầu tiên.
psusi

3

Khi thực hiện nâng cấp lớn, tôi sao chép đĩa bằng Clonezilla . Ghi nó vào đĩa CD, có sẵn ổ cứng (ngoài) và làm theo hướng dẫn trên Clonezilla LiveCD. Chọn partition-imagechế độ, cái này sử dụng ít không gian nhất.

Nếu bạn nghĩ rằng bạn đã làm hỏng hệ thống của mình (hoặc muốn hoàn nguyên bất kỳ thay đổi nào), chỉ cần khởi động trong Clonezilla LiveCD, chọn hình ảnh trên ổ cứng (bên ngoài) của bạn và khôi phục nó. Vì những hình ảnh này là bản sao chính xác của mỗi bit trên đĩa của bạn, nên việc này có thể mất vài giờ tùy thuộc vào tốc độ đĩa và tốc độ kết nối của bạn (kết nối giữa dữ liệu, thường là USB HDD bên ngoài và máy tính).

Nhân tiện, đây được gọi là phương pháp sao lưu.


3

Bạn có thể cài đặt phiên bản cũ hơn của gói đã cho (hạ cấp) với apt hoặc dpkg một cách dễ dàng . Tìm một phiên bản cũ hơn của gói là vấn đề vì những thứ này thường biến mất khỏi nhóm và phản chiếu khi các bản cập nhật được đưa vào.

Nếu bạn cài đặt gói từ đĩa CD cài đặt hoặc máy nhân bản lỗi thời hoặc bộ đệm, bạn cũng cần giữ cho nó được ghim vào phiên bản cũ để nó không được nâng cấp cho đến khi bạn cho phép điều đó. Điều đó có nghĩa là bạn phải xem các bản cập nhật và kiểm tra chúng cho đến khi vấn đề của bạn được khắc phục. Tất nhiên đây là một vấn đề vì trong khi đó (có thể là mãi mãi) bạn sẽ bị bỏ lại với gói không được trộn lẫn, có thể không an toàn. Điều đó có nghĩa là mọi người dùng có một số loại sự cố hệ thống sẽ bị bỏ lại trong một số trạng thái ngẫu nhiên cho đến khi họ có thể giải quyết nó.

Tất cả các phần mềm cũng không tương thích về phía trước, do đó, phiên bản cũ hơn của một thứ gì đó có thể không hoạt động đúng khi được cung cấp với các tệp dữ liệu hoặc cấu hình mới hơn. Rõ ràng điều này là không thể giải quyết trừ khi bạn cũng khôi phục tất cả dữ liệu người dùng về trạng thái trước khi nâng cấp hoàn tất.

Sẽ thật tuyệt nếu có một cách để làm điều này, nhưng nó là vấn đề lớn. Bất cứ ai nghĩ rằng có một giải pháp mạch lạc nên viết một đề xuất và mời bình luận hoặc tốt hơn là tạo ra một bằng chứng về giải pháp khái niệm (mã, kịch bản, tài liệu). Trolling và rên rỉ là không xây dựng.

Do không có giải pháp kỹ thuật sạch, hầu hết các phần mềm được phát triển (và tích hợp) với tâm lý "cách duy nhất là chuyển tiếp". Cố gắng quản lý các phiên bản lỗi thời là một sự lãng phí thời gian của mọi người. Các vấn đề được tìm thấy được khắc phục trong các phiên bản mới hơn càng sớm càng tốt. Là một giải pháp nhỏ, tôi muốn thấy một kho lưu trữ các phiên bản gói trước được giữ ở đâu đó để giải quyết tạm thời.

Trong khi đó, bạn có thể báo cáo lỗi và không mong đợi phần mềm chảy máu sẽ không bao giờ bị lỗi. Một bản sửa lỗi, một khi được tìm thấy, sẽ có trong bản cập nhật tiếp theo. Devs là con người (chủ yếu), và do đó dễ sai lầm. Máy tính là khó khăn và đầy đủ các chi tiết điên rồ và chi tiết. Các hệ thống được bảo trì chắc chắn sử dụng các thành phần được hỗ trợ tốt và phân phối phần mềm tích hợp ổn định có thể rất ổn định mà không trở nên không an toàn hoặc không thể nâng cấp mặc dù điều này.

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.