Я использую Ubuntu 12.10 и, если возможно, я хотел бы получить список файлов конфигурации, доступных для данного пакета, который уже установлен.
Я бы предпочел сделать это, используя dpkg или apt, если это возможно, но не проблема, если нужны / рекомендуются другие инструменты, такие как aptitude или dselect.
Давайте, например, протестируем пакет 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
в этом случае: [ 118].
Однако файл конфигурации /etc/apt/apt.conf
может даже не существовать. Помните об этом при поиске файлов конфигурации.
В Linux файлы конфигурации должны находиться в каталоге /etc/
. Вы можете использовать dpkg-query -L your_package | grep etc
для вывода списка всех файлов и каталогов пакетов в каталоге /etc/
.
Нет необходимости использовать что-либо, кроме 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
Что касается случая, когда такого файла для данного пакета не существует, то его сопровождающий может назначить определенные файлы в качестве конфигурации. Если это не было сделано правильно, вы должны сообщить об ошибке, где это уместно.
В таких случаях у вас есть несколько вариантов.
Список файлов, принадлежащих пакету, которые находятся в / etc /:
dpkg -L package | grep '/etc'
Извлечь и проверить пакет с исходным кодом, чтобы узнать, как он был скомпилирован (который также должен показать вам, где он ожидает, что его файлы конфигурации будут найдены).
apt-get source package
less package-x.y.z/debian/rules
Просмотрите верхнюю страницу проекта, чтобы найти документацию.
Как насчет 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