Как я могу приостановить / возобновить процесс обновления apt-get в терминале?

20

Мой Интернет иногда приостанавливается из-за изменения мощности сигнала 3g, и я должен снова запустить весь процесс обновления apt-get! Каждое обновление потребляет 13-15 мегабайт и каждый мегабайт стоит здесь !! Могу ли я сделать что-то, чтобы приостановить обновление, чтобы возобновить его после повторного подключения к Интернету! PS - я знаю, что я могу возобновить загрузку приложений / обновления

AVI
источник
Итак, почему именно вы хотите сделать паузу? это только для того, чтобы вы могли очистить файлы пакета, которые загружаются для установки? Если это так, просто используйте команду clean, которую я изложил ПОСЛЕ того, как вы запустили установку программного обеспечения, она очистит пространство, занимаемое установщиками загруженных пакетов.
Томас Уорд
@ EvilPhoenix Нет. Это не для этого. Дело в том, что если на последнем шаге моего обновления разрывается соединение, я теряю 14 МБ, потому что мне нужно запустить его снова! и мое интернет-соединение основано на данных .. поэтому я не могу позволить себе потерять данные без необходимости!
avi
@amith, чтобы пометить ответ как ответ, щелкните галочку рядом с ответом @jgbelacqua.
theTuxRacer
@Kaustubh, но его правильный ответ не является реальным ответом! Это комментарий к другому ответу !!
avi
как получается, что каждое обновление занимает 13-15мб? Вы работаете с предварительной версией? Новое обновление должно занять всего несколько 100 кБ.
user1974

Ответы:

25

Глядя на рекомендации по использованию Ctrl+ C, я думаю, что было бы лучше попробовать Ctrl+ Zприостановить процесс в фоновом режиме, когда / если сеть падает. Возможно, вы сможете fgвозобновить работу после восстановления подключения. (Хотя я не знаю, насколько надежен apt-get в этом сценарии.)

Еще одна возможность будет использовать axelи apt-fastсценарий. Он объявлен как ускоряющий загрузку, выполняя параллельные загрузки, но он также хорошо отслеживает то, что уже было загружено, предположительно потому, что он должен отслеживать фрагменты файла при его загрузке в параллельных порциях.

Вот оригинальная ветка от Ubuntuforum .

belacqua
источник
Может ли axel / apt-fast отслеживать обновление apt-get? это может сделать паузу?
avi
@amith - Что касается приостановки axel / apt-fast, существует возможность приостановки, но я не знаю, является ли механизм именно тем, что вам нужно.
Белаква
кто сделал отрицательное голосование? Я проголосовал за тебя!
AVI
5

Вы можете остановить загрузку пакетов или обновление системы, нажав «Ctrl + C» и остановив программу. Это полностью остановит программу. В следующий раз, когда вы попробуете эту же команду, apt-get возобновит загрузку с того места, где она остановилась в прошлый раз.

Амит КК
источник
@Amith Это возобновит пакеты, но не обновление! Обновление начинается снова!
avi
1
Было бы лучше попробовать Ctrl-Z, чтобы приостановить процесс в фоновом режиме, если сеть обрывается - вы можете использовать его fgдля возобновления после восстановления подключения. Не знаю, насколько надежен apt-get в этом сценарии.
Белаква
1
@jgbelacqua эй !! это работает .. как я могу отметить это как ответ ??
avi
@amithv - я добавил комментарий в начало моего исходного ответа, так как он, кажется, работает. Я очень рад, что это помогает.
belacqua
5

Сначала приостановите эту работу. приостановить работу:

Ctrl + z 

для повторного запуска задания при получении сигналов сети:

для запуска на переднем плане, используйте

fg %1 

для запуска в фоновом режиме, используйте

 bg %1 
AviD1511
источник
По крайней мере, в bash вам не нужно указывать %1for fgили bg, по крайней мере, если он был просто приостановлен.
Xen2050
4

Как мой aptitudeсказал мне после неожиданной перезагрузки, используйте:

sudo dpkg --configure -a

И как man dpkgобъясняет:

Если вместо пакета указано -a или --pending, то все распакованные, но ненастроенные пакеты будут настроены.

Денис Рыжков
источник
2

Установка / обновление является атомарной операцией. Либо это завершается, либо нет. Если обновление прерывается / останавливается, оно возвращается к последней точке перед началом обновления. Потому что заголовки (файлы, которые содержат данные пакетов и откуда их извлекать) Пакеты, однако, начинают загрузку с того места, где разрывалось ваше соединение. Просто совет, не прерывайте установку, есть вероятность, что она сделает систему непригодной для использования.

theTuxRacer
источник
-1

Я не люблю терминал. Никто не знает, возможно ли это с помощью терминала или нет. Но есть плохой способ сделать то, что вы просили. Для этого вам понадобится «Менеджер пакетов Synaptic». Если у вас его нет, то сначала установите его. Теперь, если он у вас есть, откройте его; Нажмите «Пометить все обновления». Это вызовет все обновляемые (обновляемые) пакеты. Теперь начинайте скачивать пакеты, пока ваше соединение не будет потеряно. Если соединение потеряно, Synaptic пожалуется на это и прекратит обновление. Не беспокойтесь, закройте менеджер синаптических пакетов. (Не открывайте Центр программного обеспечения и не используйте apt-get через командную строку, пока не завершится обновление.)

Теперь после повторного подключения запустите synaptic снова. И снова нажмите «Пометить все обновления» и начните обновление. На этот раз вы увидите, что загружаются только те пакеты, которые не удалось загрузить, а другие пропускаются.

Это не очень хорошее решение, но оно работает. Если синаптический или программный центр жалуется на какую-то «блокировку», перейдите в / var / cache / apt / archives и удалите файл «lock», и вам будет хорошо :)

Любопытный Ученик
источник
Еще кое-что. Не держите обновления в ожидании в течение нескольких дней. Поскольку Canonical выпускает более новые обновления, ваши уже загруженные файлы устаревают.
Любопытный ученик