Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
Столкнулся с неожиданной проблемой. Требуется: свои файлы настроек для fontconfig, то есть полностью заменить /etc/fonts/* Проблема: пакет fontconfig при обновлении пытается заменять файлы конфигурации и добавлять новые, что неприемлемо. Попытка решения: NoExtract = etc/fonts/* NoUpgrade = etc/fonts/* Полумеры: замена пакета fontconfig на самосборный fontconfig-noconf, без конфигов. В PKGBUILD: conflicts=('fontconfig') provides=('fontconfig=2.8.0') Может быть, всё же существует более правильный способ запретить определённому пакету прикасаться к конфигам? |
mechanical |
|
Темы:
16
Сообщения:
663
Участник с: 11 октября 2008
|
такие вещи делают в ~/.fonts.conf или ~/.fonts.conf.d/ ну или на крайняк сделать переопределения правил где-нибудь в /etc/fonts/conf.d/99-my_rules.conf |
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
Спасибо, я в курсе. Но увы, не подходит. Пользовательские конфиги очень любят переписывать всякие ушлые *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." } Так что если действовать по предложенным правилам, то своих конфигов у меня не будет. А они есть, и мне совсем неинтересно, когда их ломают. |
mechanical |
|
Темы:
16
Сообщения:
663
Участник с: 11 октября 2008
|
1) какой DE переписывает ~/fonts.conf ? гном точно не переписывает … кде тоже не должен 2) трогать файлы поставленные пакетом - это неправильно 3) если хочешь переопределить правила шрифтов то: а) либо делаешь это локально для пользователя в ~/fonts.conf б) либо добавляешь глобальное переопределение правил, например в файле /etc/fonts/conf.d/99-my_rules.conf … при обновлении этот файл не будет ни удаляться, ни изменяться, потому что его в пакете нет. что именно ты хочешь изменить в шрифтах? уверен, всё это решаемо через ~/fonts.conf, и никакие танцы тут не нужны |
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
КДЕ переписывал, пока я не стал удалять 50-user.conf Xfce сейчас пока не переписывает. Другие не проверял, но если у них есть в настройки шрифтов, их сглаживания и т.д., то могут очень даже, а если сейчас не пытаются, но потом что-то в них сломают и опять начнётся. Но не о том речь. У меня СВОИ конфиги, где подробно расписано, как какие шрифты будут выглядеть при каком размере. И я так или иначе делаю их недоступными для изменений любыми роботами, будь то пакетные скрипты или непрошенные ГУИ-“помошники”. Папка conf.d/ содержит симлинки специально для того, чтобы их можно было оттуда удалять или добавлять туда. Но авторы пакета почему-то считают своим долгом конфигурировать его сами. Неправильно изменять файлы пакета, но делать пакеты с “зашитыми” конфигами тоже неправильно. Поэтому, если я не могу запретить этому неправильному пакету выполнять его неправильные скрипты, я не буду неправильно менять его файлы, гораздо правильнее выкинуть весь пакет и сделать свой. :) У меня уже набралось почти два десятка самосборных пакетов, но там либо меня не устраивала версия, либо требовался патч, либо просто не было в репозиториях. Теперь просто одним больше, но это первый пакет, который пришлось заменить исключительно из-за конфигов. |
vadik |
|
Темы:
55
Сообщения:
5395
Участник с: 17 августа 2009
|
А делать chattr +i имя_файла не пробовали? |
mechanical |
|
Темы:
16
Сообщения:
663
Участник с: 11 октября 2008
|
Natrio в третий раз уже пишу добавляешь глобальное переопределение правил, например в файл /etc/fonts/conf.d/99-my_rules.confу тебя же есть свой конфиг … ну так и добавь его туда, чтоб он последним применялся и переписывал настройки, которые идут из пакета ты пробовал? зачем обязательно изменять существующие файлы, если можно переопределить их в отдельном файле? |
mechanical |
|
Темы:
16
Сообщения:
663
Участник с: 11 октября 2008
|
я сейчас специально проверил, думал может чего-то недопонимаю скопировал свой ~/.fonts.conf в /etc/fonts/conf.d/ назвал его 99-fonts.conf удалил ~/.fonts.conf проверил … все собственные настройки шрифтов нормально применились обновил fontconfig …. /etc/fonts/conf.d/99-fonts.conf на месте … никто его не трогал в чем проблема? |
mechanical |
|
Темы:
16
Сообщения:
663
Участник с: 11 октября 2008
|
кстати, если какой-то DE якобы переписывает твой ~/.fonts.conf … то как ты ни меняй глобальные настройки в /etc/fonts, конфиги из ~/.fonts.conf всё равно применяются последними … |
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
vadikЭто с ~/.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> |