LINUX.ORG.RU

Арч - вернуть настройки к дефолту, выборочно

 , ,


0

1

Привет.

Есть один арч, переживший превращение из манжаро и многократные кастомизации - всё и не вспомню уже.

В целом работает он сносно и ставить с нуля я не хочу, так как пройти весь путь настройки слишком затратно по времени. Но есть и неудачные настройки: тормоза при нагрузке на HDD (SSD тоже есть, проблем не доставляет), корявые шрифты в некоторых прогах, например, в systemsettings5 (KDE System Settings), а так же всякие костыли для работы с qemu-kvm, которым я больше не пользуюсь.

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

Вот и вопрос: как найти конфиги, которые я изменил или добавил, политики полисикит, юниты системд и т.д. Допустим, /home меня не интересует.

Есть ли способ проще чем поставить арч в виртуалку/отдельный раздел и сделать дифф по содержимому файлов? (например, с привлечением пакетного менеджера)


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

anonymous ()

Я бы один раз потратился на переустановку (шиндовс-мышление конечно), но зато был бы уверен, что все сделал качественно, чем потом гадать, что перенеслось, а что нет. Уверен, больше времени потратишь с этим «реверс-инжинерингом»

Sh- ()
Ответ на: комментарий от Sh-

Мне представляется инструмент вроде diff, где на выходе будет видно какие файлы добавлены, а какие поменялись и как поменялись. В таком случае я буду уверен в качестве проврдимых работ. А с нуля ставить - это я потом месяц буду тут-там находить «недоделки» и устранять.

dsxl ()

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

как найти конфиги, которые я изменил или добавил, политики полисикит, юниты системд и т.д.

Имея одни весы и не сравнивая с эталоноными гирьками, как узнать, что они взвешивают верно?

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

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

Имея одни весы и не сравнивая с эталоноными гирьками, как узнать, что они взвешивают верно?

Но ведь у меня есть пакетный менеджер, список установленных пакетов известен, эталонный контент можно взять из /var/cache/pacman/pkg/.

Кстати, ведь в нём есть создание .pacnew - считай, половина нужной мне функциональности (только в неудобном виде - нужно переустанавливать пакеты и искать файлы на диске вместо диффа в консольке)

dsxl ()
Ответ на: комментарий от anonymous

утилита lostfiles

спасибо, как раз что-то такое я и представлял. Если нагенерить .pacnew предварительно, то задача будет решена. Не оч удобно, конечно, но уже лучше, чем дифф со свежеустановленной системой.

pacman -Qqe

Это же просто список «явно» установленных пакетов. Если имелось в виду, что его можно использовать для чистки системы от ненужных пакетов, то мне это не оч поможет, потому что эти-то как раз все мне нужны.

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

dsxl ()
Ответ на: комментарий от sergej

если не обновлял пакеты после изменений, то можно написать несложный скрипт

обновлял, конечно, но всё же идею со скриптом поясни подробнее.

но это если .pacnew файлы есть

думается мне, что можно все пакеты переустановить и они появятся. Другое дело, что я не хочу чтобы они появлялись. Ведь если есть способ их создать, то должен быть и способ сразу в stdout всё выводить (а не на диск из-под рута).

dsxl ()

Есть ли способ проще чем поставить арч в виртуалку/отдельный раздел и сделать дифф по содержимому файлов?

Есть. Называется «установить „чистый“ Arch». Ибо поиск «недефолтных» настроек — это такой гемморой, что «гралось воно в пысок». А чтобы было удобнее, берёте команды с «арчвики», бросаете их в скрипт, скрипт выполняете.

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

О-о-о да-а-а... Правда, это было с «убунтой», да и пытался я, тогда ещё нуб, скорее «каштомизацию» GNOME 2 от Canonical убрать (плюс ещё чего по мелочи, уже и не вспомню). В итоге улетел в «край хамелеонов» (сиречь на openSUSE «переехал») и сидел там года два.

Сейчас смотрю на комментарии и понимаю — недалеко ушли за 10 лет. Проще сделать «как надо» с нуля.

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

«каштомизацию» GNOME 2 от Canonical убрать

Ну, это явно сложнее, так как пришлось бы смотреть дифф исходников для неопределённого круга пакетов, редактировать код, который ты видишь впервые и конечно же «конпелять.»

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

dsxl ()

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

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

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

эталонный контент можно взять из /var/cache/pacman/pkg/.

Во-первых, он иногда чистится всякими -Sc|-Scc.
Ну и во-вторых, никакой он не эталонный, т.к. там будут лежать одна или несколько последних скачанных из репозиториев версий пакетов. Далеко не факт, что такие пакеты и версии еще существуют в самих репозиториях. И далеко не факт, что именно эти файлы упоминаются в базе установленных пакетов.

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

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

pacman -Qo покажет, что конфиг сделал ты сам и в пакете его не было или покажет из какого пакета конфиг,

pacman -Sw скачает пакет без установки

архиваторы умеют выдирать отдельные файлы

пишешь несложный скрипт, который проходится по конфигам и делает что там тебе надо

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

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

Это мне известно.

но каждый всё равно придётся переосмысливать головой, чтобы не сломать работающие компоненты.

Именно так я и собираюсь поступить с найденными отличиями. Поэтому и добавлено слово «выборочно» в заголовок треда.

Первоначальная структура файловой системы находится в ISO образе, в файле airootfs.sfs.

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

чтобы не извлекать лишнего в действующую ФС

Согласен. В идеальном варианте я хочу найти отличия в read-only режиме (не считая, возможно, возни во временной папке)

эталонный контент можно взять из /var/cache/pacman/pkg/.

Во-первых, он иногда чистится всякими -Sc|-Scc. Ну и во-вторых, никакой он не эталонный, т.к. там будут лежать одна или несколько последних скачанных из репозиториев версий пакетов. Далеко не факт, что такие пакеты и версии еще существуют в самих репозиториях. И далеко не факт, что именно эти файлы упоминаются в базе установленных пакетов.

Ну, система-то моя и я знаю, что чищу я исключительно с paccache -rvk2. И даже если я всё почистил, то ничего не мешает мне переустановить все пакеты, что приведёт к заполенению кеша актуальными версиями. А ещё можно их просто скачать с https://archive.archlinux.org/packages

В Rolling Release ты в принципе не можешь вернуться к каким-то предыдущим конфигурациям системы и версиям пакетов, которых давно нет ни в системе, ни в репозиториях.

Тут какое-то недопонимание задачи. Я хочу не вернуться в прошлое, а сравнить актуальное состояние системы с актуальным дефолтным (при том же наборе установленных пакетов).

dsxl ()
Ответ на: комментарий от sergej

Ага, и я примерно о том же думал.

Правда я всё больше склоняюсь к мысли, что писать скрипт я поленюсь, и проще стриггерить пересоздание .pacnew в комбинации с lostfiles.

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

Тут какое-то недопонимание задачи. Я хочу не вернуться в прошлое, а сравнить актуальное состояние системы с актуальным дефолтным (при том же наборе установленных пакетов).

Тогда тебе нужно:

  1. airootfs.sfs + pkglist.${ARCH}.txt из ISO
  2. содержимое всех установленных пакетов, отсутствующих в pkglist.${ARCH}.txt, разложенных по ФС
  3. выполнение всех установочных скриптов этих пакетов в какой-то песочнице с ФС (в пакетах встречаются не только тела файлов, но и выполняемые скрипты, модифицирующие систему)
  4. сравнение получившегося содержимого песочницы с реальной ФС

При этом из (2) и (3) выпадают все пакеты и их более не существующие версии, которые когда-то были установлены, снесены, но после которых, по каким-либо причинам, остались изменения в системе. Тут могла бы помочь история установки пакетов, например, из лога /var/log/pacman.log, но его содержимое также не является надёжным источником информации, да и упоминаемых там пакетов и их версий, опять-таки, может уже не существовать в природе.

Для (1) без (2) и (3), в принципе, хватило бы содержимого ISO образа, с которого ставилась система, или с которым ты хочешь сравнивать текущее состояние системы.

blexey ★★★★★ ()
Последнее исправление: blexey (всего исправлений: 2)
Ответ на: комментарий от blexey
pacman -S arch-install-scripts
mkdir /mnt/nev_arch
mount /dev/sdb2 /mnt/nev_arch
pacstrap /mnt/nev_arch base linux
pacman -Qqn > /mnt/nev_arch/pac.txt
arch-chroot /mnt/nev_arch
pacman -Suy $(cat pac.txt)

И получите систему с дефолтными настройками всех установленных у вас пакетов

anonymous ()