Как вывести список всех файлов конфигурации для уже установленного пакета?


11

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

Я бы предпочел сделать это, используя dpkg или apt, если это возможно, но не проблема, если другие / такие как aptitude или dselect инструменты / рекомендуются / рекомендуются.

Ответы:


16

Нет необходимости использовать что-либо кроме cat, если я правильно понял ваше намерение:

cat /var/lib/dpkg/info/<package>.conffiles

должен дать вам то, что вы после. Например, для пакета zsh:

% cat /var/lib/dpkg/info/zsh.conffiles
/etc/zsh/zlogin
/etc/zsh/zlogout
/etc/zsh/zprofile
/etc/zsh/zshenv
/etc/zsh/zshrc
/etc/zsh/newuser.zshrc.recommended

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

В таких случаях у вас есть несколько вариантов.

  1. Список файлов, принадлежащих пакету, которые находятся в / etc /:

    dpkg -L package | grep '/etc'
    
  2. Извлеките и проверьте исходный пакет, чтобы узнать, как он был скомпилирован (который также должен показать вам, где он ожидает, что его конфигурационные файлы будут расположены).

    apt-get source package
    less package-x.y.z/debian/rules
    
  3. Посмотрите на верхнюю страницу проекта, чтобы найти документацию.


Если у данного пакета нет такого файла .conffiles по этому пути, значит ли это, что он не использует файлы конфигурации?
Даниэль Юсте Арока

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

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

1

Давайте, например, протестируем пакет, aptчтобы получить конфигурационные файлы.

Это может быть сложно понять, что .conffilesвы должны проверить, чтобы увидеть информацию, поэтому я предлагаю использовать, grepчтобы найти подсказку.

locate *.conffiles | grep apt

/var/lib/dpkg/info/apt-config-icons.conffiles
/var/lib/dpkg/info/apt.conffiles
/var/lib/dpkg/info/aptdaemon.conffiles
/var/lib/dpkg/info/apturl-common.conffiles
/var/lib/dpkg/info/libatk-adaptor:amd64.conffiles

И к catлюбому из них, в частности, если вы заинтересованы в соответствии с ответом Марцина Камински.

Еще одна уловка, чтобы прочитать инструкцию, например , man aptприведет вас также раздел, где вы можете позвонить , man apt.confгде вы будете видеть местоположение файла конфигурации для aptв этом случае: /etc/apt/apt.conf.

Однако файл конфигурации /etc/apt/apt.confможет даже не существовать. Помните об этом при поиске файлов конфигурации.

В Linux конфигурационные файлы должны находиться внутри /etc/каталога. Вы можете использовать dpkg-query -L your_package | grep etcдля отображения всех файлов пакета и каталогов внутри /etc/каталога.


1

Как насчет dpkg -S [имя-пакета]? Не могу видеть, что это упоминается здесь.

root@homehub:/# dpkg -S nginx

nginx-common: /usr/share/nginx/html
nginx-full: /usr/share/man/man8/nginx.8.gz
libnginx-mod-http-xslt-filter: /usr/share/doc/libnginx-mod-http-xslt-filter/copyright
nginx-common: /etc/logrotate.d/nginx
libnginx-mod-mail: /usr/share/doc/libnginx-mod-mail/changelog.gz
libnginx-mod-http-upstream-fair: /usr/share/doc/libnginx-mod-http-upstream-fair
libnginx-mod-http-auth-pam: /usr/share/doc/libnginx-mod-http-auth-pam/changelog.Debian.gz
libnginx-mod-http-image-filter: /usr/lib/nginx/modules/ngx_http_image_filter_module.so
nginx-common: /etc/nginx/snippets
libnginx-mod-mail: /usr/share/doc/libnginx-mod-mail/copyright
nginx-common: /etc/nginx/snippets/fastcgi-php.conf
libnginx-mod-http-xslt-filter: /usr/share/doc/libnginx-mod-http-xslt-filter/changelog.Debian.gz
nginx-full: /usr/share/doc/nginx-full/copyright
nginx-common: /usr/share/doc/nginx-common
nginx-common: /etc/ufw/applications.d/nginx
libnginx-mod-http-upstream-fair: /usr/share/doc/libnginx-mod-http-upstream-fair/changelog.gz
libnginx-mod-stream: /usr/share/nginx/modules-available/mod-stream.conf
nginx-common: /etc/nginx/sites-enabled
libnginx-mod-http-upstream-fair: /usr/share/doc/libnginx-mod-http-upstream-fair/copyright
libnginx-mod-http-subs-filter: /usr/share/doc/libnginx-mod-http-subs-filter/changelog.gz
libnginx-mod-http-dav-ext: /usr/share/nginx/modules-available/mod-http-dav-ext.conf
nginx-common: /etc/nginx/koi-utf
nginx-common: /etc/nginx/mime.types
nginx-common: /usr/share/vim/addons/syntax/nginx.vim
nginx-common: /usr/share/doc/nginx-common/NEWS.Debian.gz
nginx-common: /usr/share/doc/nginx-common/README.Debian
nginx-full: /usr/share/doc/nginx-full
libnginx-mod-mail: /usr/share/nginx/modules-available/mod-mail.conf
libnginx-mod-http-auth-pam: /usr/share/doc/libnginx-mod-http-auth-pam/changelog.gz
nginx: /usr/share/doc/nginx
nginx-common: /etc/nginx/win-utf
libnginx-mod-http-dav-ext: /usr/share/doc/libnginx-mod-http-dav-ext
....

И иногда, в зависимости от структуры имени файла, было бы хорошо, если бы он был передан в grep имен, содержащих «.conf»:

root@homehub:/# dpkg -S nginx |grep ".conf"

nginx-common: /etc/nginx/snippets/fastcgi-php.conf
libnginx-mod-stream: /usr/share/nginx/modules-available/mod-stream.conf
libnginx-mod-http-dav-ext: /usr/share/nginx/modules-available/mod-http-dav-ext.conf
libnginx-mod-mail: /usr/share/nginx/modules-available/mod-mail.conf
libnginx-mod-http-auth-pam: /usr/share/nginx/modules-available/mod-http-auth-pam.conf
nginx-common: /etc/nginx/fastcgi.conf
nginx-common: /etc/init/nginx.conf
nginx-common: /etc/nginx/conf.d
libnginx-mod-http-subs-filter: /usr/share/nginx/modules-available/mod-http-subs-filter.conf
libnginx-mod-http-geoip: /usr/share/nginx/modules-available/mod-http-geoip.conf
libnginx-mod-http-echo: /usr/share/nginx/modules-available/mod-http-echo.conf
libnginx-mod-http-upstream-fair: /usr/share/nginx/modules-available/mod-http-upstream-fair.conf
nginx-common: /etc/init/nginx.conf
libnginx-mod-http-xslt-filter: /usr/share/nginx/modules-available/mod-http-xslt-filter.conf
nginx-common: /etc/nginx/snippets/snakeoil.conf
nginx-common: /etc/nginx/nginx.conf
libnginx-mod-http-image-filter: /usr/share/nginx/modules-available/mod-http-image-filter.conf
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.