Добавить в корзинуПозвонить
Найти в Дзене
IT Communa

Резервное копирование или развертка рабочей среды возможностями APT. (Linux Ubuntu 24.04)

В этой статье описано как работать со списками пакетов через APT. Возможности Apt позволяют быстро восстановить рабочее окружение с помощью списка установленных пакетов (зависимости), который поможет быстро всё переустановить на новой системе. Это одна из самых полезных практик для разработчика в Linux. Расскажу подробно, как работать со списками пакетов через APT. Сохранить список ВСЕХ установленных пакетов: apt list --installed > installed_packages.txt Более удобный формат для восстановления: dpkg --get-selections > package_selections.txt Сохранить только явно установленные вами пакеты (рекомендуется): apt-mark showmanual > manual_packages.txt `apt list --installed` - показывает ВСЕ пакеты, включая зависимости и системные `dpkg --get-selections` - сохраняет состояния пакетов (install/hold/purge) `apt-mark showmanual` - показывает только те пакеты, которые вы устанавливали вручную (самый чистый список) На новой системе: sudo xargs apt install -y < installed_packages.txt На новой сис
Оглавление

В этой статье описано как работать со списками пакетов через APT. Возможности Apt позволяют быстро восстановить рабочее окружение с помощью списка установленных пакетов (зависимости), который поможет быстро всё переустановить на новой системе.

Это одна из самых полезных практик для разработчика в Linux. Расскажу подробно, как работать со списками пакетов через APT.

📋 Сохранение списка установленных пакетов

Базовые команды:

Сохранить список ВСЕХ установленных пакетов:

apt list --installed > installed_packages.txt

Более удобный формат для восстановления:

dpkg --get-selections > package_selections.txt

Сохранить только явно установленные вами пакеты (рекомендуется):

apt-mark showmanual > manual_packages.txt

В чем разница между этими командами?

`apt list --installed` - показывает ВСЕ пакеты, включая зависимости и системные

`dpkg --get-selections` - сохраняет состояния пакетов (install/hold/purge)

`apt-mark showmanual` - показывает только те пакеты, которые вы устанавливали вручную (самый чистый список)

🔄 Восстановление окружения

Из полного списка:

На новой системе:

sudo xargs apt install -y < installed_packages.txt

Из списка manual-пакетов (предпочтительный способ):

На новой системе:

sudo xargs apt install -y < manual_packages.txt

Из dpkg selections:

Восстановить точную конфигурацию пакетов:

sudo dpkg --set-selections < package_selections.txt
sudo apt-get dselect-upgrade

🛠️ Практический пример для разработчика

Допустим, у вас установлены:

- Python/pip пакеты

- Node.js/npm пакеты

- Инструменты разработки (git, docker, IDEs)

- Специфичные утилиты

Расширенный скрипт для полного бэкапа настроек разработчика:

#!/bin/bash
# backup_dev_environment.sh
# 1. APT пакеты
apt-mark showmanual > ~/backups/apt_manual_packages.txt
# 2. Snap пакеты
snap list > ~/backups/snap_packages.txt
# 3. Python пакеты
pip list --format=freeze > ~/backups/python_packages.txt
# 4. NPM глобальные пакеты
npm list -g --depth=0 > ~/backups/npm_global_packages.txt
# 5. Репозитории PPA
ls /etc/apt/sources.list.d/ > ~/backups/ppa_sources.txt
# 6. Ключи репозиториев
apt-key exportall > ~/backups/repository_keys.txt
echo "Резервные копии созданы в ~/backups/"

🎯 Рекомендуемая стратегия

Для регулярного использования:

Сохранять этот список перед крупными обновлениями:

apt-mark showmanual > "apt_packages_$(date +%Y-%m-%d).txt"

И после установки нового ПО добавлять в список:

echo "новый-пакет" >> manual_packages.txt

Автоматизация через cron:

Добавить в crontab -e:

0 2 * * 0 apt-mark showmanual > ~/backups/apt_packages_weekly.txt

💡 Почему это важно именно для разработчика?

1. Быстрое развертывание - восстановить все инструменты за 5-10 минут

2. Консистентность - одинаковое окружение на разных машинах

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

4. Миграция - легко перенести окружение на новый ноутбук

🚀 Восстановление на чистой системе

1. Восстановить ключи репозиториев (если сохраняли):

sudo apt-key add repository_keys.txt

2. Восстановить PPA (нужно создать файлы вручную):

В папке /etc/apt/sources.list.d/ будет список адресов репозиториев подробнее в статье Восстановление репозиториев PPA.

3. Обновить список пакетов:

sudo apt update

4. Установить основные пакеты

sudo xargs apt install -y < manual_packages.txt

5. Восстановить остальные среды (Python, Node.js и т.д.)

⚠️ Важные нюансы

- Храните списки вместе с Timeshift-снапшотами - так вы будете знать, какие пакеты соответствуют состоянию системы

- Периодически чистите список - удаляйте пакеты, которые больше не используете

- Тестируйте восстановление - попробуйте на виртуальной машине, чтобы убедиться, что всё работает

Эта методика сэкономит вам часы при переустановке системы или настройке нового рабочего места!