Могу ли я сделать do-release-upgrade только для загрузки пакетов для последующего обновления?

33

Я использую lubuntu 10.10 и хотел бы перейти на 11.04. У меня очень темпераментное интернет-соединение, поэтому я хотел бы загрузить все пакеты перед запуском установки.

Согласно этому , нет простого способа сделать это. Отчет об ошибке, упомянутый в этой теме, все еще открыт.

Мой вопрос: есть ли способ взломать do-release-upgrade, чтобы загрузить только пакеты, вроде добавления «-d» в apt-get dist-upgrade?

Или делать это вручную - единственный способ получить желаемый результат?

Если я должен сделать это вручную, это шаги, необходимые для этого, или я что-то упустил?

  1. Отключить сторонние репозитории в /etc/apt/sources.listи/etc/apt/sources.list.d
  2. Изменить репозитории в /etc/apt/sources.listс maverickнаnatty
  3. бег sudo apt-get update
  4. запустить sudo apt-get -d dist-upgradeтолько для загрузки пакетов. Делайте это столько раз, сколько необходимо, пока все пакеты не будут загружены.
  5. запустить sudo apt-get dist-upgradeдля завершения процесса обновления
Менахем
источник
Это похоже на то, что я бы сделал.
Джо-Эрленд Шинстад

Ответы:

13

Ваши первые четыре шага верны, но шаг 5 должен быть sudo do-release-upgrade(вместо sudo apt-get dist-upgrade). Следует заметить, что все (или большинство) пакетов, которые он собирался загрузить, уже присутствуют в /var/cache/apt/archives.

В некоторых более ранних версиях do-release-upgrade была ошибка, из-за которой она очищалась /var/cache/apt/archivesперед новой загрузкой пакетов, но IIRC эта ошибка была исправлена.

Мариус Гедминас
источник
Я сделал это, и это сработало.
Менахем
Посмотрите, как это сделать с помощью графического интерфейса, здесь: askubuntu.com/a/418789/21794
Menachem
Можно ли использовать процесс, описанный в вопросе, для перехода с одной LTS на другую? У меня есть сервер под управлением 12.04, который я хотел бы увеличить до 14.04, но у меня может не быть возможности полностью подготовиться к обновлению до того, как репозитории 12.04 будут удалены позднее в этом месяце.
DGW
9

Для этого я написал скрипт для собственного обновления нескольких машин до Ubuntu 14.04 «верный». Это называется «apt-get-other-release». Простое использование:

$ sudo apt-get-other-release -t trusty
  [ a long time passes as it downloads stuff ]
$ sudo apt-get-other-release -U
  [ it prepares the system for upgrade -- this is quick ]
$ sudo do-release-upgrade   # or update-manager, whatever you're comfortable with
  [ upgrading also takes a long time and may still download some additional stuff ]

Сценарий находится по адресу:

ftp://www.lubkin.com/pub/user/filbo/apt-get-other-release

и версия 1.0 имеет sha1sum: 87a466b2bb2d1ac5b0a08509246a450b8d1c7617

За кулисами он в основном работает apt-get update; apt-get -d dist-upgradeс собственным набором файлов sources.list. Результаты хранятся в / var / cache / apt- $ to_rel / archives, а флаг '-U' копирует их в общесистемные / var / cache / apt / archives, чтобы они присутствовали во время вашего обновления.

Вы также можете скопировать архив обновления с одного локального хоста на другой, сэкономив пропускную способность. Я сделал это для обновления amd64 и i386, копируя только те файлы * .deb, у которых в именах не было «amd64»; затем запустил другой apt-get-other-release -t trustyна машине i386, которая загрузила еще одну большую кучу пакетов, так как на этих двух машинах были установлены разные вещи.

Обратная связь приветствуется; адрес электронной почты cc признателен, так как я не знаю, когда я в следующий раз посмотрю на askubuntu. Поисковые машины хорошо знают обо мне.

ПРИМЕЧАНИЕ: я на самом деле не сделал обновление системы с таким лечением! Некоторое время на следующей неделе. Выпуск этого сценария, пока он может быть полезен людям.

> Бела <

user270294
источник
6

Есть способ заставить менеджера обновлений выполнить шаги 1-3 для вас.

  1. Запуск sudo update-managerиз окна терминала в графическом интерфейсе (это важно)

    • Запустите менеджер обновлений, скажите, что вы хотите перейти на следующую версию Ubuntu, и дайте ему запуститься. Он отключит сторонние репозитории, изменит основные репозитории на последнюю версию, а затем запустится sudo apt-get updateдля вас.
    • Затем появится окно, сообщающее, что для запуска обновления необходимо удалить, установить и обновить пакеты.
    • На этом этапе перейдите в окно терминала и принудительно выйдите из программы, используя CTRL-C. [Если вы этого не сделаете и отмените обновление с помощью кнопки отмены менеджера обновлений, изменения будут отменены].
  2. запускать sudo apt-get -d dist-upgradeиз командной строки столько раз, сколько необходимо, пока все пакеты не будут загружены и не готовы к установке

  3. запустите sudo do-release-upgradeи дайте ему завершить обновление с уже загруженными пакетами.

  4. Повторно включите сторонние репозитории и запустите sudo apt-get update && sudo apt-get upgradeснова, чтобы обновить сторонние репозитории до последней версии (убедитесь, что репозитории обновлены до последней версии ubuntu)

Менахем
источник
2

Я также написал скрипт для этого, который вы можете найти на

https://github.com/neldredge/fetch-release-upgrade

Использование: в пустом каталоге, запустить

 ./fetch-release-upgrade.sh trusty

или любой новый выпуск, который вы хотите обновить. Необходимые пакеты будут загружены в подкаталог с именем debs. Затем вы можете переместить их /var/cache/apt/archivesдо запуска do-release-upgrade.

Я еще не посмотрел сценарий user270294, но, похоже, он работает аналогичным образом и может иметь несколько дополнительных функций.

Нейт Элдридж
источник
2

Следующая несколько более короткая версия ответа Менахема сработала для меня:

  1. Запустите sudo do-release-upgradeв одном окне терминала, дождитесь приглашения:

    Do you want to start the upgrade? 
    
    ...
    
    Fetching and installing the upgrade can take several hours. Once the 
    download has finished, the process cannot be canceled. 
    
    Continue [yN]  Details [d]
    

    Не подтверждать, оставить открытым

  2. Во втором окне терминала запустите sudo apt-get dist-upgrade --download-only

  3. Когда закончите, продолжите или прервите на досуге в первом окне терминала

Совет от профессионала: установите терминальный мультиплексор screenи запустите его do-release-upgradeвнутри. Затем вы можете восстановить соединение, screen -D -RRесли что-то случится с терминалом, который показывает процесс обновления. (К счастью, мое обновление сегодня было почти завершено ...)

krlmlr
источник
Это хороший способ сделать это, но он может потерпеть неудачу, если вам придется выключить компьютер посередине.
Менахем
@Menachem: спасибо. Что вы подразумеваете под «неудачей», не могли бы вы уточнить? Да, источники APT, скорее всего, будут в противоречивом состоянии, но кроме этого?
krlmlr
Я не пробовал, поэтому я точно не знаю, что произойдет. Я просто думал, что, поскольку, когда вы отменяете do-release-upgrade, это отменяет изменения, но вы используете последние apt-sources для загрузки обновлений, вы можете столкнуться с нестабильной системой при попытке перезапустить обновление позже.
Менахем
Я не уверен, что простая загрузка установочных файлов что-то меняет, разве это не кеширование файлов из интернета? Во всяком случае, этот процесс работал хорошо для меня, и я прервал затем перезапустить do-release-upgradeпосле загрузки.
krlmlr
1
Да. до тех пор, пока вы не попытаетесь запустить регулярное обновление, пока не закончите, все будет в порядке.
Менахем
0

Отказ от ответственности: я никогда не делал этого раньше. Это может быть ужасной идеей. Это может сломать все, опустошить ваши банковские счета и сбежать на юг Испании. Как и в случае чего-либо потенциально опасного, сделайте резервную копию, прежде чем что-либо делать.


Я не уверен, сколько вы установили, так что это может быть ошибочным решением, но вы можете обновить с CD. Загрузите Alternate iso, смонтируйте его и запустите скрипт обновления.

wget -c http://releases.ubuntu.com/11.04/ubuntu-11.04-alternate-amd64.iso

Прежде чем идти дальше, вам не нужно использовать wget для получения изображения. Bittorrent будет хорошо работать как со стандартным менеджером загрузок. Важно то, что вы хотите что-то, что возобновится, поэтому вы можете прекратить скачивание и забрать его в другое время. Это то , что wget«s -cфлаг будет делать.

Если у вас есть ISO, следующий шаг довольно прост:

sudo mount -o loop ubuntu-11.04-alternate-amd64.iso /media/cdrom
sudo sh /media/cdrom/cdromupgrade

Недостаток, о котором я говорил, это то, что он обновит только встроенные в Ubuntu вещи, которые есть на компакт-диске. Это не будет обновлять ваши другие пакеты.

В теории это должно быть хорошо. Вы можете обнаружить, что некоторые приложения ломаются, некоторые могут быть принудительно удалены программой обновления, но основная ОС должна оставаться стабильной.

Если моя теория верна, то это позволит вам обновить другие пакеты, используя как и когда вы хотите через Synaptic или (если вы установите его) aptitude.

Оли
источник
Что, если юг Испании ближе?
Matt Joiner