Как я могу отменить или отменить команду «apt-get upgrade» на Ubuntu?

Есть ли способ в Ubuntu откатиться или отменить последнее обновление после выполнения apt-get upgrade если вам не нравятся результаты?

aptitude предоставляет вам доступ ко всем версиям пакета, если они доступны в соответствии с управлением пакетами Debian .

Я столкнулся с блога Blogstatic Хартмана: как отменить обновление в Ubuntu Lucid

Первым шагом к тому, чтобы отменить злоумышленное обновление, было выяснить, какие обновления были именно такими. После поиска на некоторых форумах я нашел способ увидеть историю обновлений: Откройте диспетчер синаптических пакетов («sudo synaptic» в терминале). В строке меню выберите Файл -> История, и вы увидите все ваши обновления, отсортированные по дате.

К сожалению, сегодня я установил около 20 обновлений, и я не знал, какая из них вызвала проблему. Просматривая каждый из пакетов, названных в списке «История», я смог понизить несколько за раз, пока проблема не была решена, и я определил оскорбительное обновление. Сделать это:

Используйте панель поиска, чтобы найти пакет, который вы хотите понизить. Когда вы найдете то, что ищете, нажмите на пакет, чтобы выбрать его. В строке меню выберите «Пакет -> Версия Force» и выберите предыдущую версию пакета из выпадающего меню. Нажмите кнопку «Применить», чтобы применить понижение.

Я должен был сделать это сегодня в своей системе Debian. Во-первых, я определил временной диапазон, когда произошло оскорбительное обновление, и восстановил записи журнала, в которых указаны старые и новые номера версий обновленных пакетов:

 $ awk '$1=="2016-03-20" && $3=="upgrade"' /var/log/dpkg.log 2016-03-20 16:58:22 upgrade libwebkitgtk-3.0-0:amd64 2.4.9-3 2.4.10-1 2016-03-20 16:58:24 upgrade libjavascriptcoregtk-3.0-0:amd64 2.4.9-3 2.4.10-1 2016-03-20 16:58:26 upgrade traceroute:amd64 1:2.0.22-1 1:2.1.0-1 2016-03-20 16:58:33 upgrade ethtool:amd64 1:4.2-1 1:4.5-1 2016-03-20 16:58:34 upgrade libsdl1.2debian:amd64 1.2.15+dfsg1-3 1.2.15+dfsg1-4 2016-03-20 16:58:34 upgrade subversion:amd64 1.9.3-2+b1 1.9.3-3 2016-03-20 16:58:36 upgrade libsvn1:amd64 1.9.3-2+b1 1.9.3-3 2016-03-20 16:58:56 upgrade linux-image-amd64:amd64 4.3+70 4.4+71 2016-03-20 16:58:56 upgrade linux-libc-dev:amd64 4.3.5-1 4.4.6-1 2016-03-20 16:59:03 upgrade amd64-microcode:amd64 2.20141028.1 2.20160316.1 

Затем я попытался найти файлы кэшированных файлов на диске (к счастью для меня я не запускал autoclean):

 $ awk '$1=="2016-03-20" && $3=="upgrade" {gsub(/:/, "%3a", $5); split($4, f, ":"); print "/var/cache/apt/archives/" f[1] "_" $5 "_" f[2] ".deb"}' /var/log/dpkg.log | xargs -r ls -ld ls: cannot access '/var/cache/apt/archives/ethtool_1%3a4.2-1_amd64.deb': No such file or directory -rw-r--r-- 1 root root 28820 Dec 18 2014 /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb -rw-r--r-- 1 root root 1978874 Dec 10 18:22 /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb -rw-r--r-- 1 root root 185006 Mar 12 00:41 /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb -rw-r--r-- 1 root root 1317644 Mar 3 11:30 /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb -rw-r--r-- 1 root root 7679400 Dec 10 18:22 /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb -rw-r--r-- 1 root root 6108 Dec 14 06:59 /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb -rw-r--r-- 1 root root 1075506 Feb 7 21:36 /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb -rw-r--r-- 1 root root 983174 Mar 3 11:30 /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb -rw-r--r-- 1 root root 53376 Feb 28 18:35 /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb 

По какой-то причине у меня нет старшего пакета ethtool. Тем не менее, давайте продолжим с помощью принудительной установки старых файлов пакетов:

 $ sudo dpkg -i /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb dpkg: warning: downgrading amd64-microcode from 2.20160316.1 to 2.20141028.1 (Reading database ... 139632 files and directories currently installed.) Preparing to unpack .../amd64-microcode_2.20141028.1_amd64.deb ... Unpacking amd64-microcode (2.20141028.1) over (2.20160316.1) ... dpkg: warning: downgrading libjavascriptcoregtk-3.0-0:amd64 from 2.4.10-1 to 2.4.9-3 Preparing to unpack .../libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb ... Unpacking libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) over (2.4.10-1) ... dpkg: warning: downgrading libsdl1.2debian:amd64 from 1.2.15+dfsg1-4 to 1.2.15+dfsg1-3 Preparing to unpack .../libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb ... Unpacking libsdl1.2debian:amd64 (1.2.15+dfsg1-3) over (1.2.15+dfsg1-4) ... dpkg: warning: downgrading libsvn1:amd64 from 1.9.3-3 to 1.9.3-2+b1 Preparing to unpack .../libsvn1_1.9.3-2+b1_amd64.deb ... Unpacking libsvn1:amd64 (1.9.3-2+b1) over (1.9.3-3) ... Preparing to unpack .../libwebkitgtk-3.0-0_2.4.9-3_amd64.deb ... Unpacking libwebkitgtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ... dpkg: warning: downgrading linux-image-amd64 from 4.4+71 to 4.3+70 Preparing to unpack .../linux-image-amd64_4.3+70_amd64.deb ... Unpacking linux-image-amd64 (4.3+70) over (4.4+71) ... dpkg: warning: downgrading linux-libc-dev:amd64 from 4.4.6-1 to 4.3.5-1 Preparing to unpack .../linux-libc-dev_4.3.5-1_amd64.deb ... Unpacking linux-libc-dev:amd64 (4.3.5-1) over (4.4.6-1) ... dpkg: warning: downgrading subversion from 1.9.3-3 to 1.9.3-2+b1 Preparing to unpack .../subversion_1.9.3-2+b1_amd64.deb ... Unpacking subversion (1.9.3-2+b1) over (1.9.3-3) ... dpkg: warning: downgrading traceroute from 1:2.1.0-1 to 1:2.0.22-1 Preparing to unpack .../traceroute_1%3a2.0.22-1_amd64.deb ... Unpacking traceroute (1:2.0.22-1) over (1:2.1.0-1) ... Setting up amd64-microcode (2.20141028.1) ... update-initramfs: deferring update (trigger activated) amd64-microcode: microcode will be updated at next boot Setting up libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) ... Setting up libsdl1.2debian:amd64 (1.2.15+dfsg1-3) ... Setting up libsvn1:amd64 (1.9.3-2+b1) ... dpkg: dependency problems prevent configuration of libwebkitgtk-3.0-0:amd64: libwebkitgtk-3.0-0:amd64 depends on libwebkitgtk-3.0-common (>= 2.4.9); however: Package libwebkitgtk-3.0-common is not installed. dpkg: error processing package libwebkitgtk-3.0-0:amd64 (--install): dependency problems - leaving unconfigured Setting up linux-image-amd64 (4.3+70) ... Setting up linux-libc-dev:amd64 (4.3.5-1) ... Setting up subversion (1.9.3-2+b1) ... Setting up traceroute (1:2.0.22-1) ... update-alternatives: using /usr/bin/traceroute.db to provide /usr/bin/traceroute (traceroute) in auto mode update-alternatives: using /usr/bin/lft.db to provide /usr/bin/lft (lft) in auto mode update-alternatives: using /usr/bin/traceproto.db to provide /usr/bin/traceproto (traceproto) in auto mode update-alternatives: using /usr/sbin/tcptraceroute.db to provide /usr/sbin/tcptraceroute (tcptraceroute) in auto mode Processing triggers for libc-bin (2.22-3) ... Processing triggers for man-db (2.7.5-1) ... Processing triggers for initramfs-tools (0.123) ... update-initramfs: Generating /boot/initrd.img-4.4.0-1-amd64 Errors were encountered while processing: libwebkitgtk-3.0-0:amd64 

Как сообщалось в сообщении об ошибке, один из моих пакетов зависел от -общего пакета непосредственно перед обновлением, но обновление удалило его (и apt-get больше не может его найти). К счастью, его файл пакета по-прежнему находится в / var / cache / apt, поэтому я могу просто добавить его в список и повторить попытку:

 $ ls -ld /var/cache/apt/archives/libwebkitgtk-3.0-common* -rw-r--r-- 1 root root 452278 Dec 10 18:22 /var/cache/apt/archives/libwebkitgtk-3.0-common_2.4.9-3_all.deb $ sudo dpkg -i /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-common_2.4.9-3_all.deb (Reading database ... 139632 files and directories currently installed.) Preparing to unpack .../amd64-microcode_2.20141028.1_amd64.deb ... Unpacking amd64-microcode (2.20141028.1) over (2.20141028.1) ... Preparing to unpack .../libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb ... Unpacking libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ... Preparing to unpack .../libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb ... Unpacking libsdl1.2debian:amd64 (1.2.15+dfsg1-3) over (1.2.15+dfsg1-3) ... Preparing to unpack .../libsvn1_1.9.3-2+b1_amd64.deb ... Unpacking libsvn1:amd64 (1.9.3-2+b1) over (1.9.3-2+b1) ... Preparing to unpack .../libwebkitgtk-3.0-0_2.4.9-3_amd64.deb ... Unpacking libwebkitgtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ... Preparing to unpack .../linux-image-amd64_4.3+70_amd64.deb ... Unpacking linux-image-amd64 (4.3+70) over (4.3+70) ... Preparing to unpack .../linux-libc-dev_4.3.5-1_amd64.deb ... Unpacking linux-libc-dev:amd64 (4.3.5-1) over (4.3.5-1) ... Preparing to unpack .../subversion_1.9.3-2+b1_amd64.deb ... Unpacking subversion (1.9.3-2+b1) over (1.9.3-2+b1) ... Preparing to unpack .../traceroute_1%3a2.0.22-1_amd64.deb ... Unpacking traceroute (1:2.0.22-1) over (1:2.0.22-1) ... Selecting previously unselected package libwebkitgtk-3.0-common. Preparing to unpack .../libwebkitgtk-3.0-common_2.4.9-3_all.deb ... Unpacking libwebkitgtk-3.0-common (2.4.9-3) ... Setting up amd64-microcode (2.20141028.1) ... update-initramfs: deferring update (trigger activated) amd64-microcode: microcode will be updated at next boot Setting up libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) ... Setting up libsdl1.2debian:amd64 (1.2.15+dfsg1-3) ... Setting up libsvn1:amd64 (1.9.3-2+b1) ... Setting up linux-image-amd64 (4.3+70) ... Setting up linux-libc-dev:amd64 (4.3.5-1) ... Setting up subversion (1.9.3-2+b1) ... Setting up traceroute (1:2.0.22-1) ... update-alternatives: using /usr/bin/traceroute.db to provide /usr/bin/traceroute (traceroute) in auto mode update-alternatives: using /usr/bin/lft.db to provide /usr/bin/lft (lft) in auto mode update-alternatives: using /usr/bin/traceproto.db to provide /usr/bin/traceproto (traceproto) in auto mode update-alternatives: using /usr/sbin/tcptraceroute.db to provide /usr/sbin/tcptraceroute (tcptraceroute) in auto mode Setting up libwebkitgtk-3.0-common (2.4.9-3) ... Setting up libwebkitgtk-3.0-0:amd64 (2.4.9-3) ... Processing triggers for libc-bin (2.22-3) ... Processing triggers for man-db (2.7.5-1) ... Processing triggers for initramfs-tools (0.123) ... update-initramfs: Generating /boot/initrd.img-4.4.0-1-amd64 

Успех! На самом деле это не решило мою проблему. Но он успешно понизил пакеты, QED.

Я считаю, что, не беря полную резервную копию соответствующих файловых систем (те, которые содержат / , /bin , /lib , /sbin , /usr , /var , /etc и /boot (которые могут быть включены в файловую систему) и Ваша загрузочная запись), после чего вы можете снова откатить машину.

Мне также пришлось отменить обновление пакета на пару серверов Debian. Я успешно вернул пакеты в последнюю версию, используя aptitute, тогда как команда awk была очень полезной.

( В приведенной ниже команде замените строку даты на дату дня, с которой вы хотите вернуть обновления )

 awk 'BEGIN{ start="0" } { if($0 ~ /Log started: 2017-06-20/) { start="1"} if ( start == "1" && $0 ~ /Unpacking.*over/) {gsub(/[\s\t)( ]+/,"",$5); printf("%s=%s ", $2 , $5)}}' /var/log/apt/term.log 

Просмотрите вывод, чтобы убедиться, что это пакеты и версии, которые нужно вернуть. Затем используйте aptitute, чтобы выполнить понижение перечисленных пакетов:

 aptitute install [paste output here] 

Я надеюсь, что это также полезная экономия времени для других.

Вы можете попробовать checkinstall

После вас ./configure; Сделайте свою программу, CheckInstall запустит make install (или все, что вы скажете), чтобы отслеживать все файлы, измененные этой установкой, используя отличностоящую установку …

Поэтому, возможно, вы могли бы сказать, что он запускает aptitude safe-upgrade, и он будет отслеживать каждую модификацию, сделанную обновлением.

Существует проект под названием Nexenta, который объединяет ядро ​​OpenSolaris с пользовательским пространством Ubuntu. Он предоставляет инструмент для интеграции ZFS Solaris и Debian, чтобы обеспечить кнопку отмены для обновлений. См. Здесь: http://www.nexenta.org/os/TransactionalZFSUpgrades

В более общем плане, вам нужна файловая система для версий. Btrfs для Linux находится в разработке.

Я запускаю свои Linux-серверы в виртуализованной среде и запускаю шапшот непосредственно перед обновлением apt-get или любыми крупными сторонними обновлениями / обновлениями.

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

Это было очень удобно, когда я обновил свой Ubuntu до 12.04, и почему-то MySQL полностью не функционировал после обновления. Я откатился назад, нашел ответ позже, повторил обновление, исправил MySQL, и жизнь была хорошей.

Использование Apt-Undo – это возможный вариант, но он может работать, только если вы используете его для установки и удаления пакетов. Это не поможет, если вы уже удалили программное обеспечение обычным способом.

http://www.ubuntugeek.com/apt-undo-a-simple-way-of-undoing-apt-actions.html http://lkubuntu.wordpress.com/2011/07/27/apt-undo-a -простые-полосная-оф-расстегивать-APT-акция /

Я сделал это несколько раз, но не рекомендую. Это то, что я сделал (если я правильно помню):

1) Удалите любое неофициальное программное обеспечение, которое не включено в репозитории ubuntu по умолчанию (возможно, это не требуется, но я предлагаю его, поскольку они могут мешать вам).

2) Измените файл /etc/apt/sources.list (и sources.list.d / *) на предыдущую версию (прокомментируйте все не официальные репозитории).

3) Обновление apt-get обновления / aptitude

4) Использование aptitude, downgrade базовых пакетов (например, X11, библиотеки и т. Д.). Он начнет стрелять из большого количества сломанных пакетов … так что вам нужно будет решить каждый случай (вам нужно знать, как это сделать в aptitude). То, как вы его понижаете, – это перейти на панель описания и установить версию (нажав +) внизу.

5) Повторите # 4, пока все программное обеспечение не будет принадлежать вашей целевой версии (проверьте на столбце версии в aptitude).

Вот почему я не рекомендую этот метод:

  • Это занимает много времени (его болезненный процесс)
  • Некоторые приложения могут работать некорректно (так как они могут иметь самую последнюю конфигурацию). В этом случае вам нужно будет «очистить» и переустановить.
  • Есть обновления, связанные с системой, которые не будут работать после понижения
  • Это очень рискованно, так как вы можете оказаться в непригодной системе

Я бы очень рекомендовал сделать чистую установку и немного изменить вашу конфигурацию. Это также требует времени, но в конце у вас стабильная версия.

Причина, по которой я это делал, была в основном как эксперимент и в результате отчаяния.

Давайте будем гением компьютера.