Рейтинг:1

Могу ли я создавать свои собственные файлы .deb, которые изменяют файлы, созданные другими файлами .deb?

флаг us

Например, я хотел бы, чтобы все рабочие столы Ubuntu, которые я развертываю, имели некоторые настройки для параметров, найденных в /USR/доля/glib-2.0/схемы/, но если я отредактирую эти файлы, а затем сделаю подходящее обновление && подходящее обновление, apt перезаписывает сделанные мной изменения.

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

Это возможно? И считается ли это «допустимым»? Я не хочу нарушать «лучшие практики» в поиске решений.

Любые мысли будут оценены.

флаг ru
Нет, вы не можете создать .deb, который затрагивает другие файлы .debs — это приводит к «конфликтующим файлам» и может нарушить работу других пакетов. Файлы одного пакета НЕ РАЗРЕШЕНЫ (политикой) изменять файлы других пакетов. *Разрешается* использовать одни и те же каталоги и пути к директориям, но НЕ разрешается изменять файлы других пакетов.
Lucas Krupinski avatar
флаг us
Итак, если я хочу изменить файлы, установленные другим пакетом, я должен разветвить этот пакет, а затем изменить файлы в своем собственном пакете? И затем каждый раз, когда исходные файлы обновляются, мне нужно будет разветвлять следующую версию, которую они выпускают, и вносить свои изменения в эти файлы? Просто изменить файлы конфигурации по умолчанию, в этом примере?
флаг ru
Как правило, эти «другие» пакеты настроены так, чтобы *не* заменять файлы по умолчанию, если они уже присутствуют, чтобы не было перезаписи измененных пользователем настроек (например, `/etc/nginx/nginx.conf` можно редактировать администраторами, но не будет перезаписан при обновлении пакета). Однако, если вы собираетесь постоянно изменять «значения по умолчанию» для новых установок, тогда да, вам нужно каждый раз создавать форк пакета и программного обеспечения и изменять этот пакет с вашими версиями.
флаг us
Если вы используете git и хотите внести одно изменение, вы можете потом выполнить `git pull`, чтобы слить изменение в основной репозиторий (из которого вы сделали ответвление).
флаг us
Это может быть [проблема XY] (https://xyproblem.info/). Пожалуйста, отредактируйте вопрос и конкретно сообщите нам, чего вы хотите достичь, с подробностями.
user535733 avatar
флаг cn
Это то, что делают патчи. Ваши изменения в одном файле схемы — это один патч. Вы повторно применяете свои исправления к недавно обновленным пакетам. Повторное применение исправлений обычно тривиально и может быть легко реализовано в сценарии. См. `man patch` и `man diff` для начала.
Lucas Krupinski avatar
флаг us
Я не думаю, что это проблема XY, но, возможно, это так. Некоторые вещи, которые я хочу сделать, включают: Заменить фон рабочего стола по умолчанию моими собственными фонами (для любого пользователя системы, а не только для моего собственного пользователя). Поэтому я хочу очистить фоны по умолчанию и заменить их несколькими другими. Я также хочу внести некоторые постоянные изменения в другие визуальные настройки. Различные шрифты по умолчанию и т. д. Опять же, не только для 1 пользователя системы, но независимо от того, какой пользователь входит в систему. Похоже, что файлы, которые мне нужно отредактировать, когда-то устанавливались из репозиториев Ubuntu.
Рейтинг:1
флаг zw

Вы можете реализовать gschema.override, как это сделано в таких пакетах, как mate-desktop-среда-ядро для МАТЭ.

Видеть 10_mate-common.gschema.override как пример. И другие подобные файлы в файловое дерево.

Документы:

Ответить или комментировать

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