LINUX.ORG.RU

Дебиан: место обитания конфигов

 , конфиги,


0

1

Во многих дистрах в /etc/ существует каталог либо отдельный файл, содержащий настройки системы, в том числе пути для различных системных файлов. В генте это /etc/portage/, в арче - /etc/pacman.conf, в сюсе - /etc/zypp/

Их ценность для меня в том, что можно вынести конфиги и кэш пакетов на отдельный носитель и в случае форс-мажора локально переустановить систему без использования интернетов. Для меня это актуально. Даже гента, с бинарным кэшем, переустанавливается за час.

Но копаясь в дебиане, я не нашел такого конфига. Маны, само собой читал, но возможно, невнимательно.

Собственно вопрос: я плохо ищу или такая возможность отсутствует в принципе?

П.С. про /etc/apt/apt.conf я в курсе, не нашел там нужного функционала.

Обновлено: нагугленные варианты не работали в силу разных причин, мануалы дебиана написаны на каком-то канцелярите. Но на одном из форумов наткнулся на решение. Запускаем

apt-config dump

И видим полный список параметров. Переопределяем необходимые в /etc/apt/apt.conf и всё.

Проблема решена, всем спасибо.

★★★★★

Последнее исправление: utanho (всего исправлений: 2)

Ты мыслишь категориями роллинг релиз дистрибутивов и дистрибутивов, собираемых из исходников.

Debian - это бинарный дистрибутив.

Отдельных конфигов по сборке и настройке поведения системы в целом нет.

Есть только список репозиториев в /etc/apt/ и там же конфиг.

Остальное - конфиги устанавливаемых программ (пакетов) в /etc.

kostik87 ★★★★★
()

Ну, предположим, ты восстановишь Gentoo, используя /etc/portage. Что дальше? Настройки всех программ(к примеру: /etc/sshd/, /etc/nginx/, /etc/conf.d/, /etc/grub.d/, /etc/default/ и так далее) откуда на чистой машине возьмутся? Для аналогичного поведения в Debian, вообще конфиги не нужны. Нужен только список пакетов (dpkg -l) и всё. Если же нужно именно что восстановить систему, бекапить надо весь /etc/ или как минимум необходимый софт. Для этого можно использовать, например etckeeper или аналоги.

shell-script ★★★★★
()

Ну я не понял что именно надо. Есть debconf может в эту сторону копать например вот список того что он в системе конфигурирует

dron@gnu:~$ sudo debconf-show --listowners
console-setup
unknown
exim4-config
steam
steam-installer
libpam0g
libpam0g:amd64
d-i
keyboard-configuration
openvpn
grub-pc
base-passwd
tzdata
update-inetd
phonon4qt5
phonon4qt5:amd64
debsecan
ucf
ssl-cert
...

Далее смотрим что-то отдельное (или как тут несколько всего)

dron@gnu:~$ sudo debconf-show sddm locales grub-pc
  grub-pc/mixed_legacy_and_grub2: true
  grub-pc/hidden_timeout: false
  grub2/kfreebsd_cmdline:
* grub-pc/install_devices_disks_changed: /dev/disk/by-id/секрет :)
  grub2/enable_os_prober: false
  grub2/force_efi_extra_removable: false
  grub-pc/install_devices_empty: false
* locales/default_environment_locale: ru_RU.UTF-8
  grub-pc/install_devices_failed_upgrade: true
* grub2/linux_cmdline_default: quiet splash radeon.audio=0
  grub-pc/kopt_extracted: false
  grub-pc/install_devices_failed: false
* grub-pc/install_devices: /dev/disk/by-id/секрет :)
  grub-pc/chainload_from_menu.lst: true
  grub-pc/disk_description:
  sddm/daemon_name: /usr/bin/sddm
  grub2/kfreebsd_cmdline_default: quiet
* locales/locales_to_be_generated: en_US.UTF-8 UTF-8, ru_RU.UTF-8 UTF-8
* shared/default-x-display-manager: sddm
  grub-pc/postrm_purge_boot_grub: false
  grub-pc/partition_description:
  grub2/update_nvram: true
  grub-pc/timeout: 5

Может в эту сторону копать? Но я не пробовал например это эскортировать и на свежей системе вносить обратно. Как оно хранит эти данные не знаю, не проверял. По поводу системных путей… Фиг знает, они просто есть :)

Лично я просто сохраняю периодически в архив

  • ~/.config/
  • /etc/

Может ещё вот надо базу/базы debconf сохранять, если что эти каталоги просто наложу на систему свежую и всё. А debconf’ом можно по сути точечно восстановить конкретные настройки, список того что он отслеживает в нём же самом, оно же это имена пакетов.

Всё остальное появляется во время инсталяции пакетов, хотя вот systemd лапшу из каталогов, симлинков и файлов я хз если честно как бекапить. Свои юниты ладно ещё можно скопировать просто, а вот общее состояние, хотя оно мне и не надо.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 3)
Ответ на: комментарий от kostik87

Ты мыслишь категориями роллинг релиз дистрибутивов и дистрибутивов, собираемых из исходников

OpenSuSE - это роллинг или сырцовый, куда записать?

Арч - роллинг, бинарный + сборка того, что не влезло в репы.

Дебиан бинарный/роллинг + собирай что надо, если чешется.

Ваш критерий и экспертная оценка - мимо.

Отдельных конфигов по сборке и настройке поведения системы в целом нет

Я не ищу декларативности, для этого изврата есть накось. Если в двух словах, то в условном файле /etc/config.conf есть строка типа PACKAGE_DIR=/путь/к/каталогу. И прочие параметры, определяющие пути для конфигурационных файлов. Вот этого я и не нашел в дебиане.

utanho ★★★★★
() автор топика
Ответ на: комментарий от shell-script

Если система легла, то пихать обратно /etc - так себе затея. Задача в другом. Нужны конфиги ПМ. То есть ставлю систему с условной флешки, потом закидываю из бекапа файл конфига ПМ и получаю систему с тем же набором пакетов. Хомяк при этом не трогается и всё нажитое непосильным трудом на месте.

Вопрос не в воспроизводимости и прочей ерунде. Бывает всякое и интернет бывает недоступен или стоит как унция золота. Поэтому неплохо иметь аварийный вариант на всякий случай.

У меня как-то было, не мог ничего сделать с системой, потому что ей надо было качнуть либу в 200кб. А интернеты были далеко.

utanho ★★★★★
() автор топика
Ответ на: комментарий от witaway

Пока всё, что придумал - бэкапить папку /var/lib/apt. Но это не то, что мне надо. Требуется изначально переместить вышеуказанный каталог на другой носитель и в конфиге прописать путь.

В /etc/ не нашел нужного

utanho ★★★★★
() автор топика
Ответ на: комментарий от utanho

Opensuse - релизный бинарный дистрибутив в RPM пакетами.

Debian - релизный бинарный дистрибутив с DEB пакетами.

Дебиан бинарный/роллинг + собирай что надо, если чешется.

То, что в Debian ты можешь скачать исходники любой программы и собрать её. хоть через

git clone
./configure
make
make install

хоть через debian-src пакет (dsc) собрать deb пакет и поставить не делает Debian ни собираемым из исходников, ни роллинг.

Модель поставки и распространения дистрибутива - бинарные deb пакеты.

В Gentoo - это ebuild файлы, в которых описываются сценарии конфигурирования и сборки программ из исходных кодов, аналогично в Arch Linux - pkgbuild.

Arch Linux - rolling дистрибутив, в нём нет релизов.

А в Debian есть релизы, аналогично и в OpenSuse.

Единственый роллинг, что есть - Debian Sid, т.к. в него постоянно собирают и помещают DEB пакеты с новыми версиями программ.

Релиз - это когда ты ставишь Debian 12 ты получаешь определённый набор пакетов и их версий.

В Arch Linux или Gentoo Linux нет релиза, всё зависит от постоянно изменяемого состояния дерева portage, а в Arch Linux от постоянно меняемого набора пакетов.

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

В Debian и OpenSuse - нет.

Ты не понимаешь то, о чём говоришь и пишешь и не понимаешь что спрашиваешь.

Так что это ты идёшь мимо со своим вопросом и ответом.

Напиши нормально какие конфиги тебе нужны. Копировать весь /etc/ и переносить в новую систему я тебе и не предлагал. Это ты своей головой, которая не умеет думать, сам такое себе надумал.

Я тебе лишь сказал, что конфиги лежат в /etc, если тебе они нужны - копируй необходимые, переноси.

Если в двух словах, то в условном файле /etc/config.conf есть строка типа PACKAGE_DIR=/путь/к/каталогу.

В Debian, как и во всех нормальных дистрибутивах конфиги программ и сервисов лежат в /etc. Сколько раз тебе это ещё нужно написать.

PACKAGE_DIR=/путь/к/каталогу.

Пусть /var/cache/apt/archives можно переопределить в конфигурационном файле apt.conf или создать символьную ссылку или смонтировать туда отдельную ФС.

Конфиги чего ты хочешь так и не понятно.

Ещё есть /etc/default, туда вынесены базовые конфиги ряда программ, например grub.

Сформулируй чётко свои мысли и напиши конфиги чего тебе нужны.

kostik87 ★★★★★
()
Ответ на: комментарий от utanho

Делай резервное копирование установленной системы, на ext4 есть утилиты dump / restore.

Переносить /var/lib/apt - чушь. Почитай официальную документацию так это не работает.

Ты можешь частично достичь желаемого, но этот подход никто не тестировал и он не является официальным.

Делай backup`ы, если ты часто ломаешь свои системы кривизной рук.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Вы судя зачем зашли, побухтеть посреди ночи? если вам что-то непонятно, лучше идите спать или обход территории сделайте, если в ночную.

Я не писатель и зачастую не умею красиво излагать мысли. Но даже это не дает вам права корчить из себя эксперта. Если бы мне нужен был бекап, я бы так и написал.

utanho ★★★★★
() автор топика
Последнее исправление: utanho (всего исправлений: 1)
Ответ на: комментарий от utanho
man apt.conf

Вот выдержка:

DIRECTORIES
       The Dir::State section has directories that pertain to local state information.  lists is the directory to place downloaded package lists in and status is the name
       of the dpkg(1) status file.  preferences is the name of the APT preferences file.  Dir::State contains the default directory to prefix on all sub-items if they do
       not start with / or ./.

       Dir::Cache contains locations pertaining to local cache information, such as the two package caches srcpkgcache and pkgcache as well as the location to place
       downloaded archives, Dir::Cache::archives. Generation of caches can be turned off by setting pkgcache or srcpkgcache to "". This will slow down startup but save
       disk space. It is probably preferable to turn off the pkgcache rather than the srcpkgcache. Like Dir::State the default directory is contained in Dir::Cache

       Dir::Etc contains the location of configuration files, sourcelist gives the location of the sourcelist and main is the default configuration file (setting has no
       effect, unless it is done from the config file specified by APT_CONFIG).

В /etc/apt.conf

Dir::cache::archives /mnt/archives;

Создай директорию

mkdir /mnt/archives
mount /dev/sdXY /mnt/archives
mkdir /mnt/archives/partial
chmod 0700 /mnt/archives/partial 

А можешь просто в /var/cache/apt/archives монтировать то, что нужно, только там создай директорию partial.

Документацию читай.

kostik87 ★★★★★
()
Ответ на: комментарий от utanho

Где ты видишь, что я из себя что-то корчу? Я им являюсь.

А если без шуток - я тебе написал, что и как делать.

Читай man apt.conf и учись формулировать мысли. 90% ответа лежит в правильно поставленном вопросе.

kostik87 ★★★★★
()
Ответ на: комментарий от utanho

То есть ставлю систему с условной флешки, потом закидываю из бекапа файл конфига ПМ и получаю систему с тем же набором пакетов.

Сохранить настройки ПМ /etc/apt/. Сохранить кеш пакетов (/var/cache/apt/). Сохранить список установленных руками пакетов(apt-mark showmanual). На свежей системе по полученному списку пройтись с помощью apt-get install.

ВАЖНО: не делать apt-get update на свежей системе.

Не сработает, если в процессе использования ты делал apt-get clean.

В общем случае - этого достаточно. Предполагается, что настройки приоритетов, источников и меток ты делал через конфиги, а не на живую. Иначе - полный бекап /var/cache/apt, /var/lib/apt, /var/lib/dpkg и игры с dpkg --get/set-selections, apt-mark, apt-config и остальными утилитами, которые использовались без предварительной правки конфигов. Второй вариант в двух словах не объяснить. Если проводить аналогии с Gentoo, то это работа по восстановлению того, что было установлено с помощью USE=«some -use flags» emerge package.

shell-script ★★★★★
()
Ответ на: комментарий от kostik87

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

Я провтыкал этот абзац в man apt.conf

Видимо мне нужно переопределить State и Cache

Буду пробовать.

И да, спасибо.

utanho ★★★★★
() автор топика
Ответ на: комментарий от utanho

Ох, и знатно тебя накормили ответами в лучших традициях лора.

Видимо мне нужно переопределить State и Cache

Нет, конечно же. Если ты хочешь

кэш пакетов на отдельный носитель и в случае форс-мажора локально переустановить систему без использования интернетов.

штатным образом, то тебе нужен локальный репозиторий пакетов. Кэш - это именно кэш, это ограниченное по времени и размеру хранилище. Из него ничего не поставится аптом, только руками через dpkg с указанием имени файла.

Создать локальную репу и импортировать в неё пакеты (с зависимостями) из сетевой можно через aptly.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Про репу я в курсе, делал. В принципе, это один из вариантов, хоть апт и ругается постоянно на подпись.

Хотелось перенести кэш и состояние пакетов. Если получится - отпишусь

utanho ★★★★★
() автор топика
Ответ на: комментарий от kostik87

Я им являюсь.

Штош, уважаемый эксперт, пришло ваше время. Готовьте панамку.

1. Копипаста «Dir::cache::archives» не работает.

2. «chmod 0700 /mnt/archives/partial» - ненужно.

Что в итоге получилось.

Dir::Cache /home/debian переместило содержимое /var/cache/apt на новое место. Каталог partial создал вручную, апт ругался.

Но! апт не сохраняет скачанные пакеты. Синаптик работает с новым кэшем, пишет и читает из него. Апт - только читает. При этом видно, что пакет при скачивании появляется в partial. Теперь надо найти, как сказать апту хранить пакеты.

utanho ★★★★★
() автор топика
Ответ на: комментарий от utanho

Во многих дистрах в /etc/ существует каталог либо отдельный файл, содержащий настройки системы, в том числе пути для различных системных файлов. … в арче - /etc/pacman.conf

В pacman.conf — только настройки pacman-а.

( И в /etc/pacman.d/ нет почти ничего, в сравнении с тем, что было раньше в /etc/rc.conf)

Нужен дистрибутив, чтобы можно было как в старом Арче указывать в одном файле нужные параметры - rc.conf.

greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 4)
Ответ на: комментарий от utanho

Штош, уважаемый эксперт, пришло ваше время. Готовьте панамку.

Мне и так хорошо.

«chmod 0700 /mnt/archives/partial» - ненужно.

Посмотри какие права у директории /var/cache/apt/archives, они именно такие.

Dir::Cache /home/debian переместило содержимое /var/cache/apt на новое место. Каталог partial создал вручную, апт ругался.

Читай man apt.conf.

Самое простое - смонтировать файловую систему в текущее место в /var/cache/apt/archives и скопировать в неё содержимое.

Или сделать символьную ссылку. Работать будет и так.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Читай man apt.conf

Читал.

Самое простое - смонтировать файловую систему в текущее место в /var/cache/apt/archives и скопировать в неё содержимое.

Или сделать символьную ссылку. Работать будет и так.

Ненужное. Прописал в /apt.conf

Dir::State /home/debian/apt/;
Dir::Cache /home/debian;
Binary::apt::APT::Keep-Downloaded-Packages "1";

И все заработало.

Но для полного успеха надо переместить /var/lib/dpkg

Пока не получилось.

utanho ★★★★★
() автор топика
Ответ на: комментарий от utanho

Ненужное. Прописал в /apt.conf

Путей решения больше чем один. И символьные ссылки альтернатива - править конфиги в этом случае не нужно. В этом случае для системы останется привычные расположение директории с кэшем apt. Разве что отключить удаление deb пакетов.

Но для полного успеха надо переместить /var/lib/dpkg

Пока не получилось.

Сделай символьную ссылку или читай документацию.

kostik87 ★★★★★
()
Ответ на: комментарий от utanho

Ну ты и хамло, разбирайся сам, если тебе по какой-то причине не устраивают символьные ссылки Видимо, ты не понимаешь как их использовать.

Не мои проблемы.

Документацию для школьников готов читать только за большие деньги.

kostik87 ★★★★★
()

В генте это /etc/portage/, в арче - /etc/pacman.conf, в сюсе - /etc/zypp/

Это не настройки системы, а настройки менеджера пакетов. В дебианах менеджером пакетов является не только apt, но и dpkg, поэтому так же надо иметь в виду /etc/dpkg/

annulen ★★★★★
()
Ответ на: комментарий от annulen

С аптом я разобрался. Там всё в порядке. С dpkg сложнее, файл /etc/dpkg/dpkg.cfg практически пустой, такой же как и его man page. Ищу как прописать новые пути, но пока мимо.

utanho ★★★★★
() автор топика
Ответ на: комментарий от utanho

Но для полного успеха надо переместить /var/lib/dpkg

Не надо. У тебя в голове опилки смешались в одну кучу две разные вещи:

  1. установленный дебьян
  2. пачка пакетов, из которых инсталлируется дебьян

Тебе нужно определиться, что из двух ты хочешь копировать. Если тебе нужно воспроизводимое путём инсталляции окружение без подключения к сети, как ты заявил в оп-посте, то тебе нужны:

  1. Загрузочный носитель
  2. локальная репа
  3. список пакетов, который ты хочешь поставить из этой репы

Никакие другие файлы из установленного дебьяна для решения этой задачи не нужны. Содержимое /var/lib/dpkg будет создано / модифицировано при установке пакетов.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Да, ещё есть Debootstrap - установка дебьяна из дебьяна на подключённый носитель без необходимости грузится с загрузчного меда. Тоже может быть полезно в контексте.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

список пакетов, который ты хочешь поставить из этой репы

/var/lib/dpkg/status

Список установленных файлов. Если его нет, то проблеиа, все файлы помечаются как неустановленные.

И там еще папка /info где хранится инфа о пакетах.

Имея перемещенный кэш пакетов, возня с локальной репой не нужна. Хотелось бы от нее отказаться по ряду причин.

Надеюсь, что где-то в глубинах дебиановского скриптового черезжопия, найдется ответ.

utanho ★★★★★
() автор топика
Ответ на: комментарий от utanho

Имея перемещенный кэш пакетов, возня с локальной репой не нужна.

Нужна, потому что через apt мимо репы ты ничего не поставишь, а без apt’а будешь руками разгребать зависимости и конфликты.

С попыткой «тупо скопировать» кэш и текущею конфигурацию apt / dpkg тебе надо будет решать задачу как на новой машине «сказать апту, что пакет не установлен», чтобы он его поставил из кэша, - то есть модифицировать скопированную копию. Теоретически выполнимо, но объём геморроя в разы выше локальной репы, и это ещё про обновление речи не было.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Дебутстрапу нужен интернет или локальная репа. Вопрос в том, что ее нужно постоянно синхронизировать.

Что может пойти не так? При переустановке системы она может попросить докачать пару килобайт из интернетов. И всё, конечная. Имея в наличии файлы со статусом пакетов, плюс кэш, система станет автономной.

П.С. Я понимаю, что творю дичь. В здравом уме и трезвом рассудке. Почему бы и нет, собсно?

utanho ★★★★★
() автор топика
Ответ на: комментарий от LamerOk

Нужна, потому что через apt мимо репы ты ничего не поставишь, а без apt’а будешь руками разгребать зависимости и конфликты.

Апт ставит пакеты из кэша. Который переместился на другой носитель.

utanho ★★★★★
() автор топика
Ответ на: комментарий от LamerOk

Гран мерси.

Решил задачку.

/var/lib/dpkg

переносится на новое место при помощи переменной в dpkg.cfg

admindir=/путь/к/каталогу/dpkg/

И всё.

utanho ★★★★★
() автор топика
Последнее исправление: utanho (всего исправлений: 1)