Як перелічити всі файли конфігурації для вже встановленого пакету?


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
....

І іноді, залежно від структури імені файлів, це може бути добре, якщо вивідати імена, які містять ".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.