Закрепление приоритета в настройках apt -с различными версиями и архитектурами

Это будет зависеть от программного обеспечения и его конфигурации; rsyslogdпо крайней мере, версия, представленная в Centos 7, закрывает файл конфигурации после его чтения, поэтому такой инструмент, как lsof, не откроет этот файл после запуска демона:

% sudo lsof -p `pidof rsyslogd` | perl -nle 'print for grep -f, split'
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
/usr/sbin/rsyslogd
...

Однако имя файла отображается в таблице процессов, которую затем можно найти в /etc, так как обычно такая конфигурация скрыта:

% < /proc/`pidof rsyslogd`/cmdline tr '\0' ' ' ; echo
/usr/sbin/rsyslogd -n -f /nunca/adivinarás/esto
% sudo grep -r '/nunca/adivinar' /etc
/etc/sysconfig/rsyslog:SYSLOGD_OPTIONS="-f /nunca/adivinarás/esto"

В совершенно неизвестной системе вам может понадобиться использовать что-то вроде SystemTap или sysdig— другими словами, средство трассировки ядра — и сообщить, какие файлы использует демон:

% sudo sysdig -p '%fd.name' 'proc.name = rsyslogd' | tee files-used
...

Затем перезапустите демон.

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

0
19.08.2020, 18:20
1 ответ

Официальная документация здесь .

  1. Для поддержки нескольких архитектур все закрепляемые пакеты должны указывать свою архитектуру, и для каждой архитектуры должна быть запись. Закрепление имени пакета без указанной архитектуры повлияет только на архитектуру по умолчанию (платформы ):

    .
    Package: my-package
    Pin: version /your regex here/
    Pin-Priority: 1001
    
  2. Записи чувствительны к пробелам -, хотя при наличии пробелов не будет сообщено об ошибках. Следующее закрепление будет молча игнорироваться:

    Package: my-package:amd64
        Pin: version /your regex here/
        Pin-Priority: 1001
    
  3. apt updateдолжен вызываться после обновления файла настроек для их соблюдения и после добавления дополнительных архитектур с использованием (, например)dpkg --add-architecture i386

    Следующий отрывок из /etc/apt/preferencesрешает поставленную задачу:

    Package: my-package:amd64
    Pin: version /-my-git-branch-name-/
    Pin-Priority: 1001
    
    Package: my-package:i386
    Pin: version /-my-git-branch-name-/
    Pin-Priority: 1001
    
    Package: my-package:amd64
    Pin: version /-develop-/
    Pin-Priority: 900
    
    Package: my-package:i386
    Pin: version /-develop-/
    Pin-Priority: 900
    
5
18.03.2021, 23:11

Теги

Похожие вопросы