[Решено] Возможность обновление системы без доступа к сети

Ответить
grem
Сообщения: 63
Зарегистрирован: 25 июл 2015, 02:46
Operating system: Gentoo, Rosa

[Решено] Возможность обновление системы без доступа к сети

Сообщение grem » 20 сен 2016, 20:14

Здравствуйте.

Возможно, что подобное желание выглядит странно, но всё же, как быть с обновлением компьютера, у которого нет доступа к сети? Можно было бы раз в несколько месяцев создавать срез зеркала и делать его локальным, но уж очень оно громоздкое. В связи с этим у меня возник ряд вопросов, о которых ниже.

1. Обновление списка пакетов.
Достаточно ли для для обновления списка пакетов скопировать файлы из .../rosa2014.1/repository/x86_64/<имя_источника>/media_info/ в /usr/lib/urmpi/<имя_источника>?
Сгенерируются ли при этом заново файлы c именами names.<имя_источника> из /usr/lib/urmpi/ или они не изменяются при обновлении?

Update:
Для обновления списка пакетов, похоже, достаточно обновить соответствующие файлы /usr/lib/urmpi/<имя_источника>. Соответствующие файлы лежащие на зеркале в .../rosa2014.1/repository/x86_64/<имя_источника>/media_info/ и .../rosa2014.1/repository/x86_64//media/<имя_источника>/media_info/ ничем не отличаются, поэтому будем считать, что скачиваем их из .../rosa2014.1/repository/x86_64/media/<имя_источника>/media_info/. Для этого можно воспользоваться скриптом:

Код: Выделить всё

#!/bin/bash

MIRROR_x86_64="http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media"
MIRROR_i586="http://mirror.rosalab.ru/rosa/rosa2014.1/repository/i586/media/"

for item in changelog.xml.lzma files.xml.lzma info.xml.lzma synthesis.hdlist.cz MD5SUM; do
  for dirs in contrib main non-free restricted; do
    wget -N -P "rosa_repo/x86_64/$dirs/" $MIRROR_x86_64/$dirs/release/media_info/$item
    wget -N -P "rosa_repo/x86_64/$dirs updates/" $MIRROR_x86_64/$dirs/updates/media_info/$item

    wget -N -P "rosa_repo/i586/$dirs/" $MIRROR_i586/$dirs/release/media_info/$item
    wget -N -P "rosa_repo/i586/$dirs updates/" $MIRROR_i586/$dirs/updates/media_info/$item;
  done
done
или batch-файлом (для windows):

Код: Выделить всё

@echo off
SET MIRROR_x86_64=http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media
SET MIRROR_i586=http://mirror.rosalab.ru/rosa/rosa2014.1/repository/i586/media

for %%G in (changelog.xml.lzma files.xml.lzma info.xml.lzma synthesis.hdlist.cz MD5SUM) do (
 for %%H in (contrib main non-free restricted) do (
    wget -N -P "rosa_repo/x86_64/%%H/" %MIRROR_x86_64%/%%H/release/media_info/%%G
    wget -N -P "rosa_repo/x86_64/%%H updates/" %MIRROR_x86_64%/%%H/updates/media_info/%%G

    wget -N -P "rosa_repo/i586/%%H/" %MIRROR_i586%/%%H/release/media_info/%%G
    wget -N -P "rosa_repo/i586/%%H updates/" %MIRROR_i586%/%%H/updates/media_info/%%G
 )
)
pause
Скаченные для каждого источника, кроме testing, файлы (changelog.xml.lzma, files.xml.lzma, info.xml.lzma, synthesis.hdlist.cz, MD5SUM) приносим на обновляемую систему и раскладываем в соответствующие каталоги в /usr/lib/urmpi/<имя_источника>. Зачем нужны директории "/usr/lib/urmpi/<имя_источника> (distributive N)" я не знаю, их я не трогал.

2. Получение списка ссылок для скачивания пакетов, которые должны обновиться после обновления источника.

Список ссылок для последующего скачивания для всех установленных пакетов, которым требуется обновления я получил так (как подсказали ниже в теме, можно короче):

Код: Выделить всё

urpmq -d -m --sources `rpm -qa --qf "%{NAME}\n" | grep -v 'gpg-pubkey\|lib64osmgpsmap1.0_0\|kernel-nrj-desktop-devel-4.1.15-1rosa-x86_64\|kernel-nrj-desktop-4.1.15-1rosa-x86_64\|lib64pulsecommon7.1\|lib64llvm3.7\|lib64pulsecore7.1\|lib64ntfs-3g85\|frameworkintegration-i18n\|qt5-platformtheme-kde5\|lib64exttextcat1.0_0'`
где всё что находится в grep -v исключает из списка пакеты (обратный слэш \ в grep перед | экранирует этот знак в конвейере), которые установлены, но в системе их как бы нет, потому, что без grep выдавало следующее:

Код: Выделить всё

# urpmq -d -m --sources `rpm -qa --qf "%{NAME}\n"`
Нет пакета с названием kernel-nrj-desktop-devel-4.1.15-1rosa-x86_64
Нет пакета с названием kernel-nrj-desktop-4.1.15-1rosa-x86_64
Нет пакета с названием lib64pulsecommon7.1
Нет пакета с названием lib64llvm3.7
Нет пакета с названием lib64pulsecore7.1
Нет пакета с названием lib64ntfs-3g85
Нет пакета с названием frameworkintegration-i18n
Нет пакета с названием qt5-platformtheme-kde5
Нет пакета с названием lib64exttextcat1.0_0
Нет пакета с названием lib64osmgpsmap1.0_0
Всё было бы хорошо, если бы от запуска к запуску этой команды, количество выдаваемых ссылок не менялось (подсчитывал их через | wc -l). Для моей системы, которую я сейчас держу в VirtualBox выдавало 4 варианта списка, содержащих 823, 830, 888 или 895 "пакетов для скачивания", по сути это 2 пары списков 823-888 и 830-895 и 823-отличаются на 65 пакетов, а 823-830 и 888-895 на 8(+1) пакетов. Ниже пример для меньшего отличия в числе пакетов: 8(+) дополнительных пакетов есть в списке из 830 ссылок и 1(-) пакет вместо них в списке из 823 пакетов.

Код: Выделить всё

+ http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/lib64qt53dcore5-sceneparser-assimp-5.6.1-2-rosa2014.1.x86_64.rpm
+ http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/lib64qt53dcore5-sceneparser-gltf-5.6.1-2-rosa2014.1.x86_64.rpm

+ http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/lib64qt53dlogic5-5.6.1-2-rosa2014.1.x86_64.rpm
- http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/lib64qt53drenderer5-5.5.1-5-rosa2014.1.x86_64.rpm

+ http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/lib64qt53dquick5-5.6.1-2-rosa2014.1.x86_64.rpm
+ http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/lib64qt53dquickinput5-5.6.1-2-rosa2014.1.x86_64.rpm
+ http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/lib64qt53dquickrender5-5.6.1-2-rosa2014.1.x86_64.rpm
+ http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/lib64qt53drender5-5.6.1-2-rosa2014.1.x86_64.rpm
+ http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/lib64qt5concurrent5-5.6.1-2-rosa2014.1.x86_64.rpm
Почему так происходит я не понял. Может ли кто пояснить, почему от запуска к запуску (без установки и обновлений) команды выше, список файлов изменяется?
Update:
Как подсказал trs, список пакетов для скачивания, после обновления базы пакетов, можно получить командой

Код: Выделить всё

# urpmq --auto-select --sources > pkg_list.txt
, таким образом, файл pkg_list.txt будет содержать список ссылок на пакеты, которые нужно скачать для обновления системы. Теперь его можно забрать с собой и выполнить в месте где доступен интернет команду

Код: Выделить всё

$ wget -nc -c -P "rpm_updates/" -i pkg_list.txt
, получив в подкаталоге rpm_updates набор .rpm файлов. Если за время прошедшее перед скачиванием пакетов в репозитории пакеты не успели обновить на более новые версии, то всё необходимое скачается в данный подкаталог. Осталось привести эти файлы с собой на флешке, скопировать (пока именно скопировать, а не переместить) в каталог /var/cache/urpmi/rpms обновляемой системы и выполнить команду

Код: Выделить всё

# urpmi --update --auto-select
Urpmi предупредит, что ему необходимо скачать определённое количество Mb пакетов, но на это можно не обращать внимания, так как все пакеты уже помещены в /var/cache/urpmi/rpms, он возьмёт их оттуда и сотрёт их после установки (если не запускать urpmi с параметром --noclean).
Последний раз редактировалось grem 11 окт 2016, 22:05, всего редактировалось 8 раз.

Аватара пользователя
Галахов Роман
Сообщения: 2349
Зарегистрирован: 26 фев 2012, 20:02
Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
Откуда: Моск. обл. Волоколамск

Re: Возможность обновление системы без доступа к сети

Сообщение Галахов Роман » 20 сен 2016, 21:17

grem писал(а): Можно было бы раз в несколько месяцев создавать срез зеркала и делать его локальным, но уж очень оно громоздкое.
Но его не надо каждый раз скачивать заново, так как многие пакеты обновляются очень редко, а некоторые вообще, только при смене платформы...
Весь набор репозиториев для одной архитектуры занимает всего около 100 Gb. (внешнего HDD на 300 - 500Gb хватит и и не только на это) И можно сделать локальный репозиторий, когда нужно его обновлять, а потом с него обновлять ПК, находящиеся вне сети.
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))

notauser
Сообщения: 1254
Зарегистрирован: 06 май 2012, 21:00

Re: Возможность обновление системы без доступа к сети

Сообщение notauser » 20 сен 2016, 22:28

diff-репозиторий. Которого нет. Обновить ОС через COM-порт пробовали (всего около 100 Gb) :) ?

grem
Сообщения: 63
Зарегистрирован: 25 июл 2015, 02:46
Operating system: Gentoo, Rosa

Re: Возможность обновление системы без доступа к сети

Сообщение grem » 21 сен 2016, 00:21

Галахов Роман писал(а):Весь набор репозиториев для одной архитектуры занимает всего около 100 Gb.
Для одной машины многовато выкачивать всё, если бы целый парк был, то имело бы смысл.
Пока попробую выкачивать .cz и .lzma файлы и указать структурированный каталог с ними как локальный источник. Даже только это без testing занимает уже 468 мб для обеих архитектур.

Полученный выше список .rpm легко выкачать, хоть и получилось пакетов меньше, чем ссылок в списке (808 пакетов по 895 ссылкам, 738 мб). Позже сравню список скаченных пакетов с перечнем пакетов в ссылках.

trs
Сообщения: 1939
Зарегистрирован: 07 сен 2015, 16:08
Operating system: -

Re: Возможность обновление системы без доступа к сети

Сообщение trs » 21 сен 2016, 07:47

0. Запустил ОС.
1. Подождал сообщения "Для системы доступны обновления".
2. В каталогах /var/lib/urpmi/<имя_источника> обновились файлы: changelog.xml.lzma files.xml.lzma info.xml.lzma MD5SUM synthesis.hdlist.cz
3.

Код: Выделить всё

# urpmq --auto-select --sources
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/kernel-nrj-desktop-4.1-devel-latest-4.1.33-1-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/kernel-nrj-desktop-4.1.33-1rosa-x86_64-1-1-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/kernel-nrj-desktop-devel-4.1.33-1rosa-x86_64-1-1-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/lib64jasper1-1.900.1-20-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/kernel-nrj-desktop-4.1-latest-4.1.33-1-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/lib64sqlite3-devel-3.13.0-1-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/lib64sqlite3_0-3.13.0-1-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/updates/jasper-1.900.1-20-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/testing/lib64php5_5.6-5.6.25-1-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/testing/php-soap-5.6.25-1-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/testing/php-ini-5.6.25-1-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/testing/psmisc-22.21-2-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/testing/php-zlib-5.6.25-1-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/testing/php-curl-5.6.25-1-rosa2014.1.x86_64.rpm
http://mirror.rosalab.ru/rosa/rosa2014.1/repository/x86_64/media/main/testing/lib64php5_common5-5.6.25-1-rosa2014.1.x86_64.rpm
Это тот же список, что выводит urpmi --auto-update, но в виде путей для скачивания.

Не понял, зачем исходный вариант urpmq.
notauser писал(а):diff-репозиторий. Которого нет. Обновить ОС через COM-порт пробовали (всего около 100 Gb) :) ?
Мне нужен набор из 30 patch (читай diff). Я могу их получить, потыкав мышкой в веб-панели github. Но это утомительно и чревато ошибками. Проще дать в консоли команды git clone и git format-patch. То, что при этом будет скачано 2ГБ - такой пустяк.

grem
Сообщения: 63
Зарегистрирован: 25 июл 2015, 02:46
Operating system: Gentoo, Rosa

Re: Возможность обновление системы без доступа к сети

Сообщение grem » 21 сен 2016, 23:25

trs писал(а): # urpmq --auto-select --sources
Спасибо, попробую в следующий раз эту команду, а то мои манипуляции привели к тому, что из списка исчез пакет ядра. Это было первое, что пришло в голову, т.к. с urpmi я мало знаком.
Но всё равно непонятно, почему от запуска к запуску той команды состав возвращаемых ссылок меняется. Они, конечно, иногда продублированы, но всё равно почему-то иногда пара дополнительных пакетов проскакивало. Возможно как раз из-за обработки grep в потоке.
2. В каталогах /var/lib/urpmi/<имя_источника> обновились файлы: changelog.xml.lzma files.xml.lzma info.xml.lzma MD5SUM synthesis.hdlist.cz
Попробую к моменту следующей пачки обновлений распихать новые вручную, главное успеть скачать новые пакеты до обновления баз :)
Можно, конечно, попытаться выкачать все пакеты новее определённой даты и на их основе создать источник, но это уже другой подход и локальную базу пакетов не обновит на тот случай, когда понадобится более новый пакет со всеми его зависимостями: новая версия может иметь дополнительные пакеты в зависимостях. Полный список пакетов всех источников сам по себе достаточно увесистый.

Надеюсь, что файлы "/var/lib/urpmi/names.<имя_источника>" со списками пакетов генерятся при опросе .xml.lzma и .cz файлов в источниках.

P.S.
И ещё интересна одна вещь: при выборе "всех пакетов" в "Управлении пакетами" они все после установки становятся "установленными вручную" или определённые автоматически помечаются как зависимости?
Последний раз редактировалось grem 28 сен 2016, 02:14, всего редактировалось 1 раз.

grem
Сообщения: 63
Зарегистрирован: 25 июл 2015, 02:46
Operating system: Gentoo, Rosa

Re: [Решено] - Возможность обновление системы без доступа к сети

Сообщение grem » 28 сен 2016, 02:13

Попробовал обновиться способом описанным Update шапки темы. Кажется, получилось.

Trs, спасибо за подсказку по списку ссылок.

Ответить

Вернуться в «Общие вопросы по РОСЕ»