Pacman, fontconfig и его конфиги

Столкнулся с неожиданной проблемой.
Требуется: свои файлы настроек для fontconfig, то есть полностью заменить /etc/fonts/*

Проблема: пакет fontconfig при обновлении пытается заменять файлы конфигурации и добавлять новые, что неприемлемо.
Попытка решения:
NoExtract = etc/fonts/*
NoUpgrade = etc/fonts/*
не работает, более того, install-скрипты пакета в любом случает игнорируют эти параметры.
Полумеры: замена пакета fontconfig на самосборный fontconfig-noconf, без конфигов.
В PKGBUILD:
conflicts=('fontconfig')
provides=('fontconfig=2.8.0')
Мнусы: самосборный пакет придётся обновлять самостоятельно, хотя в нём нет никаких отличий от репозитория, кроме конфигов и скриптов установки.
Может быть, всё же существует более правильный способ запретить определённому пакету прикасаться к конфигам?
такие вещи делают в ~/.fonts.conf или ~/.fonts.conf.d/
ну или на крайняк сделать переопределения правил где-нибудь в /etc/fonts/conf.d/99-my_rules.conf
Спасибо, я в курсе. Но увы, не подходит.
Пользовательские конфиги очень любят переписывать всякие ушлые *DE, поэтому именно их приходится нейтрализовывать в первую очередь. Допустим, я для этого удаляю симлинк 50-user.conf из conf.d/ . А при обновлении пакета его скрипт заботливо все “недостающие” ссылочки восстановит:
configs=('20-fix-globaladvance.conf'
         '20-unhint-small-vera.conf'
         '29-replace-bitmap-fonts.conf'
         '30-metric-aliases.conf'
         '30-urw-aliases.conf'
         '40-nonlatin.conf'
         '45-latin.conf'
         '49-sansserif.conf'
         '50-user.conf'
         '51-local.conf'
         '60-latin.conf'
         '65-fonts-persian.conf'
         '65-nonlatin.conf'
         '69-unifont.conf'
         '80-delicious.conf'
         '90-synthetic.conf')
post_install() {
  echo -n "updating font cache... "
  /sbin/ldconfig -r .
  pushd /etc/fonts/conf.d > /dev/null
  for config in "${configs[@]}"; do
    ln -sf ../conf.avail/${config} .
  done
  popd > /dev/null
  /usr/bin/fc-cache -f
  echo "done."
}
Насколько я понимаю, каталог conf.d/ всё же предназначен для локальной настройки, а пакет его фактически захватывает.
Так что если действовать по предложенным правилам, то своих конфигов у меня не будет. А они есть, и мне совсем неинтересно, когда их ломают.
1) какой DE переписывает ~/fonts.conf ? гном точно не переписывает … кде тоже не должен
2) трогать файлы поставленные пакетом - это неправильно
3) если хочешь переопределить правила шрифтов то:
а) либо делаешь это локально для пользователя в ~/fonts.conf
б) либо добавляешь глобальное переопределение правил, например в файле /etc/fonts/conf.d/99-my_rules.conf … при обновлении этот файл не будет ни удаляться, ни изменяться, потому что его в пакете нет.

что именно ты хочешь изменить в шрифтах? уверен, всё это решаемо через ~/fonts.conf, и никакие танцы тут не нужны
КДЕ переписывал, пока я не стал удалять 50-user.conf
Xfce сейчас пока не переписывает.
Другие не проверял, но если у них есть в настройки шрифтов, их сглаживания и т.д., то могут очень даже, а если сейчас не пытаются, но потом что-то в них сломают и опять начнётся.

Но не о том речь. У меня СВОИ конфиги, где подробно расписано, как какие шрифты будут выглядеть при каком размере. И я так или иначе делаю их недоступными для изменений любыми роботами, будь то пакетные скрипты или непрошенные ГУИ-“помошники”.
Папка conf.d/ содержит симлинки специально для того, чтобы их можно было оттуда удалять или добавлять туда. Но авторы пакета почему-то считают своим долгом конфигурировать его сами. Неправильно изменять файлы пакета, но делать пакеты с “зашитыми” конфигами тоже неправильно.
Поэтому, если я не могу запретить этому неправильному пакету выполнять его неправильные скрипты, я не буду неправильно менять его файлы, гораздо правильнее выкинуть весь пакет и сделать свой. :)

У меня уже набралось почти два десятка самосборных пакетов, но там либо меня не устраивала версия, либо требовался патч, либо просто не было в репозиториях.
Теперь просто одним больше, но это первый пакет, который пришлось заменить исключительно из-за конфигов.
А делать chattr +i имя_файла не пробовали?
Natrio
Папка conf.d/ содержит симлинки специально для того, чтобы их можно было оттуда удалять или добавлять туда. Но авторы пакета почему-то считают своим долгом конфигурировать его сами. Неправильно изменять файлы пакета, но делать пакеты с “зашитыми” конфигами тоже неправильно.

в третий раз уже пишу
добавляешь глобальное переопределение правил, например в файл /etc/fonts/conf.d/99-my_rules.conf
у тебя же есть свой конфиг … ну так и добавь его туда, чтоб он последним применялся и переписывал настройки, которые идут из пакета

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

скопировал свой ~/.fonts.conf в /etc/fonts/conf.d/
назвал его 99-fonts.conf
удалил ~/.fonts.conf

проверил … все собственные настройки шрифтов нормально применились

обновил fontconfig …. /etc/fonts/conf.d/99-fonts.conf на месте … никто его не трогал

в чем проблема?
кстати, если какой-то DE якобы переписывает твой ~/.fonts.conf … то как ты ни меняй глобальные настройки в /etc/fonts, конфиги из ~/.fonts.conf всё равно применяются последними …
vadik
chattr +i имя_файла
Это с ~/.fonts.conf ?
Пробовал когда-то делать ему chmod 444, chown root:root, но права пользователя позволяли КДЕ удалять его и создавать заново, что он и делал. Вот chattr +i не пробовал, только что посмотрел, что это такое. Вроде работает, спасибо! :)
Надо будет взять этот метод на вооружение. Против пакетов, правда, не поможет, они под рутом, хотя… если вынести на ФС только для чтения… Нет, тогда пакет выдаст ошибку, а это ещё хуже.
А вот против лихих ГУИ или шаловливых юзеров – сработает. Век живи…

mechanical, я вас понял с первого раза, спасибо и вам за участие!
Вы всё правильно пишете, все настройки можно переопределить в конце, но для этого надо знать, что там в начале, и предусматривать в своём конфиге специальные секции только для отмены вышестоящих. А если там добавят ещё какие-то новшества, то учитывать ещё и их… Уж лучше всё же “с чистого листа”.

А вот с “конфиги из ~/.fonts.conf всё равно применяются последними” ошибочка вышла. Как я уже писал выше, ~/.fonts.conf работает не само по себе, а только потому, что в /etc/fonts/conf.d/50-user.conf -> ../conf.avail/50-user.conf написано:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
        <!-- Load per-user customization file -->
        <include ignore_missing="yes">~/.fonts.conf.d</include>
        <include ignore_missing="yes">~/.fonts.conf</include>
</fontconfig>
То есть, ~/.fonts.conf выполняется как раз в середине, под нумером 50.
 
Зарегистрироваться или войдите чтобы оставить сообщение.