Чи є спосіб відмовити останнє оновлення?


54

Це траплялося зі мною багато разів за останні 5 років: оновлення зламало мою систему. Кожного разу, коли я стикаюся з цією ситуацією, мені доводиться перевстановлювати всю систему, що насправді дратує.

Чи є спосіб відмовити останнє оновлення, щоб мати можливість функціональної системи без перевстановлення? Якщо ні, то це найкращий спосіб запропонувати це як першочергову ідею?

Я читав, що ця ідея була описана в brainstorm.ubuntu.com, але відчуваю, що вона мертва ... і на форумах повно прикладів оновлень, які порушують речі, тому я вважаю, що потрібно щось зробити з цієї теми. Дякую!


17
Я входжу лише для того, щоб проголосувати це питання. Відсутність цілісного інструменту відкату в операційній ОС 2011 року викликає жалюгідність. У Windows відбулося відновлення системи 5+ років тому, це далеко за межею кривої. Користувачів пройшли ( правильно ) навчання встановлення оновлень безпеки, але ми постійно караємось за це за відмови драйверів.
Вейтс VP

@GatesVP Цей пункт, який ви зробили 8 років тому, досі переживає Ubuntu (не можу говорити за інші дистрибутиви, але вони, мабуть, не кращі). Мені це здається зовсім неприємним. Хтось має надрукувати ваші слова шрифтом 64 пт і висіти перед кожним новачком, який збирається зануритися у світ Linux.
horaceT

Я повинен погодитися, що резервна картинка - це шлях. Не вказано, чи це система "виробництва". Якщо є і можливо здійснити систему тестування клонів, то це шлях із резервною копією зображень. Якщо лише оновлення додатка, то найшвидшим рішенням є пониження версії за допомогою або без параметра "форс".
JHPArizona

Відповіді:


14

У синаптиці ви можете принаймні контролювати, які були останні оновлення: меню файлів, історія.

(якщо синаптичний запуск, із порушеною системою). Тож із командою apt -...-, щоб відновити їх оновлення, це не повинно бути занадто важким.

Я думаю, що для командного рядка теж є команда history.

Можливо, вам доведеться видалити весь пакет і встановити певну версію. Афаїк, можна встановити конкретну версію, але мені ніколи не було потреби в цьому.

update: Подивився, як робити apt:

Знайдіть пакети, встановлені за останні 3x24h:

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

За допомогою політики apt-cache ви бачите доступні версії програми:

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

тут 3.6.7 та 3.6.3. Тепер ви знаєте, яка рання версія може бути встановлена ​​(часто це не безпосередній попередник):

sudo apt-get install PROGRAM=3.6.3

Потім потрібно виконати влучне закріплення, щоб запобігти майбутнім оновленням:

Створіть новий файл у /etc/apt/preferences.d/ (якщо> = 10.4) імені вашої програми,

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

Дякую всім за інформацію. Я не можу чекати, коли ubuntu керує zfs поза коробкою!
Марсело Руїз

Вибачте - що це стосується zfs? Чи управляє zfs зворотним відказом? Або оновлення порушують вашу zfs-install? Або zfs-update щось зламає?
користувач невідомий

Що робити, якщо версія 1.0.2g-1ubuntu4.12відповідає apt? Однак він відмовляється сприймати це як номер версії. Я хочу , щоб знизити форму 1.0.2g-1ubuntu4.13до1.0.2g-1ubuntu4.12
Чаба Toth

спасибі, suuuuuuuuuuuuch біль, хоча. моє останнє оновлення, яке повністю знищило вхід контролера, має рівно 80 пакунків, перерахованих на find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' цей момент, це менше клопоту перевстановити всю мою систему
tatsu

7

Переважно ви можете проконсультуватися /var/log/apt/history.logщодо змін, здійснених apt / synaptic. Це просто трохи криміналістики і багато вирізати / вставити.

Поверніться до дати, коли ваша система все ще працювала нормально.

Спочатку візьміть усі пакунки, що були встановлені з того часу, і складіть їх разом у сценарій для видалення. Після закінчення сценарію почніть знову додавати всі видалені пакети.

Приклад випадку:
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

ти можеш бачити,

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

встановлено Synaptic. наче libfglrx:amd64видалили Synaptic.

Ми пішли у зворотному порядку, тому спочатку видаляємо щойно встановлені пакети та знову додаємо видалені пакети.

Робоча команда для цього випадку може виглядати так:

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

Можливо, не було б найкращою ідеєю обійтися без -yвимикача - мати більше контролю над процесом (щоб уникнути зламаних залежностей). Більшість із вас не зламає палець, зробивши кілька перевірок "у"

У більшості випадків відкат можливий таким чином, але якщо залежності вже порушено - ви можете зіткнутися з ще більшою проблемою.


6

Більшість випадків, якщо ваша система порушена, це проблема з ядром .

Просто завантажте старіше ядро ​​та встановіть найновіші пакунки (особливо пакети ядра), які, ймовірно, не були оновлені належним чином. Кілька приміток:

/var/log/dpkg.log

ваш друг, щоб перевірити, який є список нещодавно оновлених / встановлених пакетів

sudo apt-get -f install

може більшу частину часу виправляти напіввстановлені пакети


4

На жаль, поки немає способу зробити це. Знімок / відкат рівня файлової системи - одна з особливостей майбутніх btrfs, але вона ще має способи стати функцією повною та стабільною, щоб використовувати її як файлову систему за замовчуванням.


1
Для знімків файлової системи ви можете використовувати LVM замість ext3 або ext4.
Флейм

@Flimm, тепер ви можете, хоча це працює не дуже добре і вимагає встановити LVM при встановленні в першу чергу.
psusi

3

Роблячи велике оновлення, я клоную диск за допомогою Clonezilla . Запишіть його на компакт-диск, майте запасний (зовнішній) жорсткий диск та дотримуйтесь інструкцій CloCDilla LiveCD. Виберіть partition-imageрежим, для цього використовується найменше місця.

Якщо ви думаєте, що ви зламали вашу систему (або хочете відновити будь-які зміни), просто завантажте програму Clonezilla LiveCD, виберіть зображення на своєму (зовнішньому) жорсткому диску та відновіть його. Оскільки ці зображення є буквальною копією кожного біта на вашому диску, це може зайняти кілька годин, залежно від швидкості вашого диска та швидкості з'єднання (з'єднання між даними, як правило, зовнішнім жорстким жорстким диском USB та комп'ютером).

До речі, це називається резервним методом.


3

Ви можете легко встановити старішу версію даного пакету (поновлення) за допомогою apt або dpkg . Знайти старішу версію пакета - це проблема, оскільки вони часто зникають із пулу та дзеркал, коли з'являються оновлення.

Якщо ви встановите пакунок із встановленого компакт-диска, застарілого дзеркала чи кеша, вам також потрібно буде його закріпити до старої версії, щоб він не був оновлений, поки ви цього не дозволите. Це означає, що вам доведеться стежити за оновленнями та перевіряти їх, поки проблема не буде усунена. Це, звичайно, проблема, оскільки тим часом (можливо, назавжди) вам залишиться нефіксований, можливо, небезпечний пакет. Це означає, що кожен користувач, який має певну проблему з системою, залишиться в якомусь випадковому стані, поки не зможе вирішити її.

Все програмне забезпечення також не є сумісним для переадресації, тому старіша версія чогось може не так поводитись, коли вони подаються з новішою конфігурацією або файлами даних. Очевидно, це неможливо вирішити, якщо ви також не повернете всі дані користувачів до стану перед оновленням.

Було б чудово, якби було це зробити, але це масово проблематично. Кожен, хто думає, що існує цілісне рішення, повинен написати пропозицію та запросити коментарі або, ще краще, довести концепт-рішення (код, сценарій, документ). Тролінг та тьох не конструктивний.

Оскільки немає чистого технічного рішення, більшість програмного забезпечення розробляється (і інтегрується) з менталітетом "єдиний шлях вперед". Намагання керувати застарілими версіями - це марна трата часу. Знайдені проблеми виправлені в новіших версіях ASAP. Як незначне рішення, я хотів би побачити архів попередніх версій пакета, який зберігається десь для випадкового тимчасового вирішення.

Тим часом ви можете повідомляти про помилки і не сподіваєтесь, що програмне забезпечення, що кровоточить, не завершиться. Виправлення після виявлення має бути в наступному оновлення. Деви - це люди (в основному), і тому помиляються. Комп'ютери вигадливі та наповнені шаленою різноманітністю та деталізацією. Системи, що захищаються в обороні, що використовують добре підтримувані компоненти та стабільний інтегрований розподіл програмного забезпечення, можуть бути дуже стабільними, не зважаючи на це, не стаючи небезпечними або не модернізованими.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.