Обновление и установка пакетов через медленное интернет-соединение
Не всем везёт иметь быстрый интернет.
Если скорость соединения с интернетом низкая, то обновлять систему или устанавливать тяжелые пакеты
стандартным способом достаточно опасно. Какой-нибудь пакет может скачаться с ошибкой и при установке
что-нибудь сломать. Исправить возникшую проблему будет сложно, или вовсе невозможно и придется
переустанавливать систему, а потом… В общем, лучше пойти другим путем и значительно снизить
вероятность возникновения проблем.
Будьте готовы к работе в эмуляторе терминала. В KDE4/KDE5(PLASMA5) — konsole. В XFCE — xfce4-terminal.
В GNOME — gnome-terminal. В LXQT — qterminal. Либо в любом другом установленном в системе.
Если у вас нет второго компьютера советую сделать загрузочную флешку с росой и перед каждым обновлением
на всякий случай держать ее рядом. Я некоторое время даже делал резервную копию корневого раздела с
помощью qt5-fsarchiver, перед тем, как обновляться. Правда ни разу так и не пришлось из нее восстанавливаться...
Но загрузочная флешка несколько раз меня выручала.
P.S.
Если в этом нет особой необходимости — не обновляйтесь. Не зря же говорят: "Работает — не трогай!".
P.P.S.
Тут оказывается имеется слишком много нюансов, поэтому не уверен, что у меня получится доступно всё
объяснить...
Ну и не судите строго — это моя первая инструкция.
Содержание
Обновление системы
Вариант 1
Когда соединение медленное, но достаточно стабильное
Если последнее обновление было больше недели назад очень высока вероятность того, что оно будет в два
этапа. Насколько я понимаю, в этом случае сначала должны обновиться программы, которые отвечают за
загрузку файлов из интернета (wget и/или curl) и программы управляющие пакетами (rpm и/или urpmi, *URPM).
Затем всё остальное. В первом этапе пакетов будет меньше 30 и их размер не будет превышать 20МБ. Во втором
может быть любое кол-во и любой суммарный размер. Пакеты первого этапа можно сразу скачать и установить,
но на втором придется действовать по обстоятельствам. Если пакетов будет больше 15, а их суммарный
размер меньше 20МБ, то можно продолжать обновляться. В ином случае нужно обновление прерывать и запускать
команду, которая загрузит все пакеты, но не станет их устанавливать. С медленным интернетом лучше сначала
загрузить все пакеты, а потом обновить всё разом.
Если обновлялись вчера/позавчера, то обновлений может быть совсем мало и в один этап. Здесь уже смотрим, что
предлагают обновить. Если, например, два пакета, firefox и firefox-ru, с суммарным размером более 30МБ, то
их сначала нужно скачать, протестировать и только потом установить. Если пакетов 3, а размер ~10МБ — продолжаем
обновление.
Пример 1
Открываем эмулятор терминала и запускаем команду sudo urpmi --auto-update --downloader wget --wget-options '-c -t 0'.
Нам предлагают загрузить 21 пакет с суммарным размером 10МБ. Пакетов много, но при этом все имеют малый
размер. Можно соглашаться на установку. Просто жмем Enter.
Нам предложили загрузить 562 пакета с суммарным размером 799МБ. Отказываемся — вводим n и жмем Enter.
Запускаем команду sudo urpmi --auto-update --downloader wget --wget-options '-c -t 0' --no-install
и соглашаемся на установку. Пакеты будут загружены, но не станут устанавливаться. Если загрузка по какой-то
причине будет прерываться, предыдущую команду нужно выполнять снова, пока не будет загружено всё.
Когда все пакеты будут загружены, нужно протестировать установку. Запускаем команду
sudo urpmi --auto-select --test
Тестирование ошибок не выявило. Теперь можно обновлять систему. sudo urpmi --auto-select
Пример 2
Открываем эмулятор терминала и запускаем команду sudo urpmi --auto-update --downloader wget --wget-options '-c -t 0'.
Нам предлагают обновить 3 пакета с суммарным размером 62МБ. Отказываемся и запускаем команду
sudo urpmi --auto-update --downloader wget --wget-options '-c -t 0' --no-install
Если загрузка будет прерываться, эту команду нужно выполнять пока пакеты не будут полностью загружены.
Пакеты загрузились? Тестируем установку — sudo urpmi --auto-select --test
Установка возможна. Обновляем — sudo urpmi --auto-select
Пример 3
Вариант 2
Когда соединение медленное и нестабильное
Пример 1
Открываем эмулятор терминала и обновляем источники sudo urpmi.update -a --downloader wget --wget-options '-c -t 0'
Запускаем команду sudo urpmi --auto-update --downloader wget --wget-options '-c -t 0' --no-install
На предложение соглашаемся. Пакеты загрузятся, но не будут устанавливаться.
От предложения загрузить и установить другие пакеты — отказываемся.
Запускаем sudo urpmi --auto-update --downloader wget --wget-options '-c -t 0'
Соглашаемся на установку.
Отказываемся. Запускаем снова sudo urpmi --auto-update --downloader wget --wget-options '-c -t 0' --no-install
и соглашаемся загрузить предложеные пакеты. Если загрузка по какой-то причине будет прерываться, предыдущую
команду нужно выполнять снова, пока не будет загружено всё.
Запускаем тестирование — sudo urpmi --auto-select --test
Тестирование ошибок не выявило. Теперь можно обновлять систему. sudo urpmi --auto-select
Пример 2
В архиве находится текстовый файл. В нем приведены команды из первого примера, но вместо снимков экрана
более подробный текстовый результат их выполнения. В нем также кратко описаны некоторые нюансы, которые
могут возникнуть при обновлении.
Пример 3
Установка пакетов
Пример 1 (с ошибкой)
Установка wine
Обновляем источники. sudo urpmi.update -a --downloader wget --wget-options '-c -t 0'
Загружаем wine и все требуемые зависимости. sudo urpmi --downloader wget --wget-options '-c -t 0' wine --no-install
Если загрузка прервется, повторяем предыдущую команду.
Упс, ошибка. Похоже в хранилище пакетов попали те, что с ошибкой. Подождем несколько часов пока исправят.
Если эта ошибка потом возникнет снова идем на форум росы или в сообщество во вконтакте и спрашиваем,
как исправить.
Если ошибку исправили, обновляем источники, загружаем wine со всеми зависимостями. Когда всё загрузится
запускаем тест установки. sudo urpmi wine --test. Если будет ответ "Установка возможна", устанавливаем
sudo urpmi wine
PS.
Даже интересно стало. Более трех дней ожидания и никаких изменений. Попытка установить wine проводилась
на образе с abf.io от 22 ноября 2019 года. Для пробы попытался произвести установку этой программы в релизном
ROSA.FRESH.PLASMA5.R11, но получил ту же ошибку.
Скачал с abf новый образ от 4 февраля. При установке wine выводится предупреждение о том, что некоторые
пакеты имеют неверные подписи. Если отключить проверку (параметр --no-verify-rpm), то они тестируются и
устанавливаются.
Ради эксперимента установил в virtualbox росу с релизного образа про который говорил выше. Попытка
обновиться привела к другой ошибке. Пакет systemd-243 не смог обновиться и не помогла ни команда
sudo urpmi --replacepkgs systemd-243, ни его удаление. Там было что-то про отсутствие исходников ядра
в каком-то каталоге, в общем — не важно. Далее я просто попытался провести синхронизацию пакетов в системе
к тому состоянию, что в репозиториях. Мне было предложено скачать без малого 3ГБ пакетов, я согласился и
через некоторое время она была успешно произведена. Потом и попытка установить wine прошла успешно.
Пример 2
Установка calibre
Обновляем источники. sudo urpmi.update -a --downloader wget --wget-options '-c -t 0'
Загружаем calibre и все требуемые зависимости. sudo urpmi --downloader wget --wget-options '-c -t 0' calibre --no-install
Тестируем установку. sudo urpmi calibre --test
Устанавливаем. sudo urpmi calibre
Загрузка прочих файлов из интернета
Для загрузки используем программу wget с параметрами -c -t 0 -T 60
Пример:
wget -c -t 0 -T 60 http://mirror.rosalab.ru/rosa/rosa2016.1/iso/ROSA.Fresh.R11/ROSA.FRESH.PLASMA5.R11.x86_64.uefi.iso
Если загрузка прервалась, запускаем команду снова. Загрузка файла будет начата с того места, на котором остановилась.
Иногда может случиться так, что доступ в интернет есть, но загрузка файла остановилась
и программа не пытается ее продолжить. Жмем ctrl+c и снова запускаем скачивание.
Нередко wget присваивает файлу в качестве имени часть ссылки. В этом случае нужно добавлять к вышеуказанным
параметрам --content-disposition. wget -c -t 0 -T 60 --content-disposition ссылка. Но и он в некоторых ситуациях
не помогает. Тогда придется вручную присваивать нужное название после загрузки, либо используя параметр -O.
wget -c -t 0 -T 60 -O 'Имя файла.расширение' ссылка
Справка по используемым командам
Обновление системы
sudo urpmi --auto-update --downloader wget --wget-options '-c -t 0' --no-install
sudo urpmi --auto-select --test
sudo urpmi.update -a --downloader wget --wget-options '-c -t 0'
sudo — позволяет разрешенному пользователю выполнять команду как суперпользователь urpmi — загружает и устанавливает rpm пакеты --auto-update — обновляет источники пакетов, а затем выбирает какие пакеты могут быть обновлены --downloader — позволяет выбрать желаемую программу для загрузки пакетов. Мы будем использовать wget Хотя она, вроде как, установлена для urpmi программой для загрузки по умолчанию все-таки лучше перестраховаться --wget-options — устанавливает дополнительные опции для wget -c — возобновление загрузки файла. Используется если загрузка файла была прервана -t — устанавливает количество попыток скачать пакет. 0 - бесконечное --no-install — не устанавливать пакеты --auto-select — выбирает какие пакеты могут быть обновлены без обновления источников --test — тестирует установку пакетов. Пакеты не устанавливаются, в системе ничего изменяется urpmi.update — обновляет источники пакетов -a — обновить все источники
man sudo
man urpmi
man urpmi.update
Загрузка прочих файлов из интернета
wget — программа для загрузки файлов из интернета -c — возобновление загрузки файла. Используется если загрузка файла была прервана -t — устанавливает количество попыток скачать пакет. 0 - бесконечное -T — устанавливает время ожидания в секундах. Если сервер перестал отвечать, то по истечении установленного времени wget попытается к нему переподключиться -O — сохранить файл с указанным именем
man wget