📑 Содержание статьи
В данной статье рассмотрим, как обновить Astra Linux до новой версии.
Существует несколько способов обновления:
1) С помощью специальной утилиты от астры astra-update, про нее можно почитать тут;
2) С помощью встроенной утилиты dist-upgrade, но разработчики астры не рекомендуют через нее обновляться;
astra-update, то все проходит чисто, а через dist-upgrade могут некорректно обновиться пакеты. Была такая проблема, что при обновлении с 1.8.0 до 1.8.2, изменилось название пакета блокировки экрана и во время обновления, если компьютер уходил в блокировку экрана, разблокировать его непредставлялось возможным не сбросив обновление, тем самым сломаете систему. Решалось это командой: sudo sed -i '/ScreenSaver\=/c ScreenSaver\=\"internal\ fly\-dm\_locker\_modern\"' /usr/share/fly-wm/theme.master/themerc Что произошло. При обновлении предлагает заменить конфиг пакета, если нажать согласие, то чтобы вы не выбрали, оно все равно незаменится в конфигурационном файле на новое название пакета для блокировки. Соответственно блокировка не будет осуществляться, будет бесконечно крутить колесо курсора и ни на что не реагировать. Как заявляла техническая поддержка, что через astra-update данного бага не было бы, но я проверил на практики, он так же повторяется, неважно, через astra-update или dist-upgrade. Я свою систему обновлял с 1.8.0 до 1.8.6, до 1.8.4 я обновлял исключительно dist-upgrade, да, пару раз чинил систему после обновлений, но и с 1.8.4 до 1.8.6 тоже чинил, хотя были udpate через astra-update. В общем не важно через что будите обновляться, но разработчик все же рекомендует astra-update, решать вам! P.s.: не пугайтесь по поводу починки) Тут либо баг самой астры, либо драйвера на видюху не встали (так как я их ставил от 1.7.5), то снова баг от астры.3) С помощью графической утилиты fly-astra-update;
4) С помощью диска.
Сейчас мы рассмотрим только astra-update, но в будущем, буду наполнять эту статью и другими способами, дабы показать разные пути и способы обновиться.
Обновление с помощью astra-update
Утилита astra-update очень требовательна и может уйти в сообщение, что нет доступных обновлений или вообще отказаться обновляться. Виной служит дополнительные репозитории, которые у вас подключены. Порой нужно закомментировать все сторонние репозитории и оставить только официальные от Астра Линукса. После обновления, можно их снова раскоментировать.
С чего начать обновление:
0) Проверим наличие репозиториев, я надеюсь, что вы понимаете, что для обновления нужен интернет репозиторий астра линукса. После установки астры, он автоматически прописывается в /etc/apt/sources.list
Но они закоменчены, нужно просто раскоментировать, а строки с CD закомментировать если есть, скриншот ниже. Если же их нет или они устарели, то можно всегда зайти на официальную вики астры и взять от туда список с серверами. Вот ссылка на эту страницу.

1) После того, как убедились в наличии списков с репозиториями, обновим списки пакетов.
sudo apt update
Будем обновлять с версии 1.8.1 до 1.8.6

2) Запускаем обновление
sudo astra-update -r -T -A
astra-update может отсутствовать, то тогда установите ее sudo apt install -y astra-updateКлючи, о них подробнее можно почитать тут:
| Ключ | Описание |
| -r | Установка обновления из репозиториев, перечисленных в файле /etc/apt/sources.list (без внесения изменений в сам файл) |
| -T | Не выполнять проверку установочного диска (опция доступна в astra-update начиная с версии ПО 1.15+ci20 и выше) |
| -A | Установить обновление, не задавая вопросов, выполняя автоматическое выключение и включение функций безопасности. |


После обновления проверяем версию астры.
cat /etc/astra/build_version

На этом обновление системы с помощью утилиты astra-update завершено.
Обновление с помощью fly-astra-update
Как и обещал, продолжаем статью. Теперь мы рассмотрим вариант для любителей графики. Систему можно обновить через удобный инструмент fly-astra-update.
Версия астры у меня 1.8.1.6
![]()
0) Настроим sources.list, как делали тут, а потом обновим списки пакетов.
sudo apt update

1) Для начало установим его.
sudo apt install fly-astra-update

2) Находим эту утилиту в «Пуск» → «Параметры» → «Система» → «Установка обновлений».

Вводим пароль администратора, так как дальнейшия действия будут с привилегиями администратора.

Открылось окно программы.

Можно вручную добавить нажав на плюсик ⊕ источники обновлений. К примеру свой репозиторий (как поднять свой репозиторий писал тут) или примонтировать диск и обновиться с него (что очень удобно для новичка).

Но мы будем использовать штатный sources.list, по этому закрываем окно добавления источника и выбираем «Экспертный режим».

Поставим галки напротив пунктов: «Установка обновления из репозиториев /etc/apt/sources.list» и «Не искать репозиторий установочного диска».

По желанию, можно поставить «Установить последнее доступное ядро», но как показывает практика, могут быть проблемы (был как-то момент, когда вышло обновление 1.8.3 в котором ядро 6.12 имело баги, позже их пофиксили в 1.8.4, но факт остается фактом).

3) Запускаем обновление системы.

Запустился процесс обновления, как видим, утилита fly-astra-update тянет обновление другой утилиты astra-update и запускает обновление через эту утилиту. Да, fly-astra-update, это лишь юзер-френдли интерфейс для запуска astra-update.

Из скриншота выше, видим, что fly-astra-update запустил astra-update с ключами -A -T -r. По этому я никогда не использую эту утилиту, лишняя прокладка, когда можно напрямую запустить astra-update.

По завершению обновления нас встретит окно



Вот так, мы обновили астру до 1.8.6 в графике. Почти как в Windows :)
Обновление с помощью dist-upgrade
Обновление с помощью dist-upgrade ничем почти не отличается от обновления astra-update, но я все же покажу.

0) Обновляем индексы пакетов
sudo apt update
1) Запускаем обновление системы
sudo apt dist-upgrade


Пошел процесс обновления.

Но как говорил ранее, что разработчики советуют обновляться не через dist-upgrade, а через astra-update и вот простой пример почему:

Во-первых, обновления останавливается на интерактиве с вводом от пользователя. Да, мы можем запустить обновление с автосогласием на все вопросы и так далее. Ну а в чем проблема, спросите вы? Из скриншота видно, что новая версия пакета openssl нашла файлы конфига этого пакета и говорит, что у новой версии пакета, новая версия конфига и нас спрашивают, перезаписать ли конфиг на новый. Это полезно, если вы что-то настроили и перезапись конфига может существенно подпортить нам жизнь. По этому по умолчанию нам предлагают N - Отказ от перезаписи. Во-вторых, астра часто грешит любовью переименовки пакетов на другие названия и забывают переписывать конфиги. Я не первый год работаю на астре, по этому встречал много раз данную проблему.
У меня была и есть Astra Linux на компьютере, установлена на ней версия была 1.8.0, я обновлял ее с помощью dist-upgrade. До версии 1.8.1.6, потом 1.8.1.12, все хорошо, но когда я обновил до 1.8.2.7 я столкнулся с проблемой блокировки экрана. Выяснилось следующее, разработчики изменили название пакета блокировки экрана, слова местами поменяли, а вот конфиг не поправили. Хоть сами разработчики потом сказали, что если бы я обновлялся через astra-update, то он бы перезаписал конфиг на новый (но это не так, я провел эксперемент и обновление через astra-update, так же ломала блокировку, только ручная правка). До версии 1.8.2.8 я обновлялся через dist-upgrade, а вот 1.8.3.7, 1.8.4.48 я уже обновлялся через astra-update. Особой разницы не заметил, но вот astra-update не любит сторонние репозитория и часто говорит что нет обновлений. Закомментируешь сторонние репы и процесс без проблем пошел, а после обновы раскомментируешь. Тут посыл у астры такой, мол astra-update сам решает, заменить конфиг или нет и по идеи он должен был заменить на новый, где прописано новое название пакета.
Возвращаемся в dist-upgrade после небольшого отсупления.

Дальше все так же, как и в astra-update. Только можно заметить, что у dist-ugprade есть индикация процесса, как и у моего скрипта. Если в astra-update бы завезли какую-то индикацию, то было бы супер.
Обновление с помощью диска
Бывают ситуации, когда версия репозитория уже устарела и данной версии астры нету в официльных репозиториях, или нужно не до последней версии, а до определенной или же отсутствует полностью подключение к интернету, своего репозитория нет, а обновить нужно (как поднять свой репозиторий я описывал здесь). Тогда на помощь приходит обновление с диска.
Рассмотрим сценарий, что у меня есть версия Astra Linux 1.8.1.6 и я хочу обновить ее до 1.8.1.12. У меня есть два iso файла, установочный диск (основные пакеты) и расширенный диск (средства разработки и дополнительные пакеты). Приступим к обновлению с диска.

У меня Iso файлы лежат на сетевом ресурсе, по этому для начало я перенесу их на машину. Вы же можете доставить их туда флэшкой или любым другим, удобным для себя способом.
0) Подготовка структуры для iso
Создадим две директории, в которые мы будем монтировать наши iso образы. Например, в каталоге /mnt.
Создадим директорию для установочного iso:
sudo mkdir -p /mnt/astra-install
Создадим директорию для расширенного iso:
sudo mkdir -p /mnt/astra-extended
Теперь создадим директорию в домашней, куда положим iso.
mkdir -p ~/iso
Дополнительно в моем случае, я поставлю утилиту rsync для копирования iso файлов с сетевого ресурса на машину.
sudo apt install -y rsync
1) Перейдем к копированию iso образов на машину
Сначала скопируем установочный диск в директорию ~/iso
rsync -av --progress "/run/user/1000/fly-fm-vfs/smb/192.168.31.17/nas/astra_1.8.1.16/installation-1.8.1.16-27.12.24_15.22.iso" ~/iso/
а потом скопируем расширенный диск
rsync -av --progress "/run/user/1000/fly-fm-vfs/smb/192.168.31.17/nas/astra_1.8.1.16/extended-1.8.1.16-27.12.24_15.22.iso" ~/iso/

По завершению копирования, проверим наличие дисков:
ls -lh ~/iso/

2) Примонтируем загруженные диски в созданные ранее директории
Перейдем в root режим (я противник работы под ним, а почему разобрал здесь, но в данной ситуации он нам нужен)
sudo -i
Монтируем установочный диск:
mount -o loop /home/superuser/iso/installation-1.8.1.16-27.12.24_15.22.iso /mnt/astra-install
Монтируем расширенный диск:
mount -o loop /home/superuser/iso/extended-1.8.1.16-27.12.24_15.22.iso /mnt/astra-extended

3) Теперь приступим к правке sources.list под новый источник (обновления с дисков).
Сделаем резервную копию sources.list на случай, если что-то пойдет не так (это считается хорошей практикой).
cp /etc/apt/sources.list /etc/apt/sources.list.bak
Теперь открываем sources.list и удаляем все записи (смело, мы же скопировали файл)
vim /etc/apt/sources.list

И вставляем записи о наших дисках
#Установочный диск (основные пакеты)
deb [trusted=yes] file:///mnt/astra-install 1.8_x86-64 main contrib non-free
#Расширенный диск (средства разработки и дополнительные пакеты)
deb [trusted=yes] file:///mnt/astra-extended 1.8_x86-64 main contrib non-free

[trusted=yes] используем чтобы apt доверял этим источникам.4) Обновляем список доступных пакетов:
sudo apt update

Отлично, наши диски с обновлениями успешно сработали, теперь можно обновиться с них.
5) Запускаем обновление.
astra-update -r -T -A
Полетит процесс обновления. Так как все файлы для обновления лежат физически на диски, то мы сразу исключаем загрузку по сети всех пакетов для обновлений и сразу приступаем к их установке.


Дальше все как обычно (у меня просто закончилось место на диске на 99% обновления и я не смог сделать скриншоты), по этому там ничего нового, все так же как и при любом, другом обновлении. В конце сообщит об успешном обновлении и все.
Обновление с помощью скрипта bash
Так как я не просто работаю с астрой, но и автоматизирую в ней много вещей, решил поделиться с вами своим скриптом, который в автоматическом режиме обновляет систему до последней версии с помощью (astra-update/dist-upgrade) в интерактивном режиме. Никакого мусора, только состояние обновления. Данный скрипт я разработал для себя в первую очередь и он больше ориентирован на обновление до разных версий. У меня развернут свой репозиторий, в котором есть версии astra_1.8.1, astra_1.8_latest, astra_1.8.3, astra_1.8.4 итд. Соответственно, если на машине где запустил скрипт, стоит версия 1.8.4, то скрипт предложит обновиться до 1.8.5 и 1.8.6. Я могу выбрать нужную мне версию. Так же, если есть проблемы с source.list, то он сам чинит и приводит к эталонному. Но эти функции у всех будут индивидуальными, по этому я их вырезал, но добавил возможность вручную прописать свои репы прямо в скрипте и обновиться с них. Либо можете прописать в скрипте, в константы свои параметры, которые по умолчанию при ручном обновлении.
Скрипт можно загрузить с нашего магазина скриптов, он абсолютно бесплатный. Либо можно загрузить с моего профиля GitHub. Прямая ссылка вверху статьи, справа (иконка GitHub).
Приступим. После того, как вы загрузили мой скрипт. Есть несколько вариантов его запуска по ключам.
| Ключ | Режим | Что делает |
-u |
auto (dist-upgrade)
|
Обновляет систему по текущему /etc/apt/sources.list до последней доступной версии
|
-m |
manual
|
Запрашивает параметры репозитория, предлагает список доступных версий и обновляет через подмену в sources.list
|
-a |
astra-update
|
Обновляет систему через
astra-update по текущему /etc/apt/sources.list |
-h,
--help |
- |
Показать справку и выйти
|
|
без ключей
|
- |
То же, что
-h: показать справку и выйти |
Теперь покажу на практике.
У меня система 1.8.1.6

Проверяем sources.list

Даем права на исполнение скрипту
chmod +x master_updater.sh
Запускаем скрипт:
sudo bash master_updater.sh
Покажет справку, так как без ключа запускает сразу вывод справки.

В моем случае, репы с интернета, по этому я выбираю ключ -u через dist-upgrade.

Пойдет загрузка пакетов. Цель скрипта: для новичков, чтобы видеть не тонну строк, а лишь процесс обновления и удобную интеграцию в другие скрипты, где указал ключ и забыл.

Если Вас пугает долгая загрузка пакетов, можно посмотреть в логах, что он делает.
Весь процесс обновления, который скрыт, пишется в /tmp/log_update.log
Для просмотра в реальном времени
tail -f /tmp/log_update.log

Видим, что процесс не завис, а просто долго качает.
После загрузки пакетов, появится прогресс-бар с установкой пакетов.
![]()
Так же в логах можно увидеть процесс.

По заполнению прогресс-бара на 100%, пойдет прогон POST (настройка пакетов, обновление конфигов итд, она равна количеству пакетов). Если загружено 1835 пакетов, то POST завершится на 1835 пакете. Тем самым я сделал возможность увидеть, когда завершится обновление системы.

Как можно заметить из скриншота выше, система была успешно обновлена до версии 1.8.6.39 через мой скрипт в интерактивном режиме. Никакого мусора, только чистые данные.
При повторном запуске, скрипт не даст запустить процесс обновления.

Ниже представлены видеоролики работы скрипта:
Теперь рассмотрим обновление в ручном режиме, если у вас свой репозиторий. В одной из статей по созданию своего репозитория, мы подняли свою репу. В качестве демонстрации, я отзеркалировал интернет репозиторий Astra Linux версии 1.8.6.39, но только ветку main-repository, а extended-repository нет из-за нехватки места на диске. По этому на скриншотах она закомментирована. Приведем sources.list в соотвестветсвии, а именно укажем свой репозиторий.

Добавляем gpg ключи репозитория.

Запускаем обновление индексов пакетов sudo apt update

Соответственно репозиторий выглядит так:

- astra_1.8.6:
- main-repository
- extended-repository
- astra_1.8.3:
- main-repository
- extended-repository
и так далее.
Далее загружаем скрипт с GitHub и даем права на исполнение.

Запускаем в ручном режиме, с ключом -m.
sudo bash master_updater.sh -m

Скрипт запросит указать протокол (http или https). У меня http, по этому я ничего не ввожу и просто нажимаю enter, по умолчанию стоит http. Далее ввожу ip адрес репозитория. По поводу базового пути, если у вас astra_1.8.6 директория лежит в другой директории, не в корне как у меня, то указываем. К примеру, у вас структура такая: http://IP/repo/astra_1.8.6/main-repository/ - то есть перед директорией astra_1.8.6 у вас директория repo, значит пишем /repo в базовом пути для скрипта. У меня же astra_1.8.6 находится в корне, по этому я указываю просто /, так как в скрипте реализована проверка на заполнение этого поля. Следом скрипт запрашивает имя каталога main (оно может отличаться от моего, как и extended), если дефолтное main-repository и extended-repository, то можно оставить как есть и ничего не вводить и нажать enter. По компонентам тоже самое, если все штатное, то просто enter нажимаете. В моем случае, я указал только ip адрес сервера и базовый путь - / и все, остальные поля просто enter. Доступные версии (это вырезанный функционал, раньше он сверял текущую версию астры с имеющимся версиями на репе, но так как репы у вас могут быть свои, как и названия, я сделал что вы выбираете версию, а он прописывает ее в таком виде: astra_1.8.1, astra_1.8.6, astra_1.8.5 и так далее, в зависимости от выбранной вами версии). У меня директория на репе версии 1.8.6, по этому я выбираю эту версию. Видим, что скрипт создал бэкап sources.list и дописал строчки с репой в sources.list которые мы указали. Обратите внимание, что я указал базовый путь / и он дописал после ip адреса 31.81//astra..., то есть используются два /, но это никак не мешает обновлению. Далее видим, что пошел процесс обновления с локального репозитория, без ветки extended.

Данный скрипт помогает обновлять систему в удобном для новичка процессе. По мере выхода новых версий, я постараюсь своевременно его обновлять на GitHub.
Подведем итог. В данной статье мы рассмотрети основные способы обновления астры и не только. Я так же поделился с Вами своим скриптом, который поможет обновлять быстро и понятно свою систему. Даже если все будет плохо, вы всегда сможете обновиться с помощью диска и починить свою астру. Увидимся в следующих статьях, удачи с обновлением системы!