Jak wyświetlić listę wszystkich plików konfiguracyjnych dla już zainstalowanego pakietu?

11

Korzystam z systemu Ubuntu 12.10 i, jeśli to możliwe, chcę uzyskać listę plików konfiguracyjnych dostępnych dla danego pakietu, który jest już zainstalowany.

Wolę to zrobić za pomocą dpkg lub apt, jeśli to możliwe, ale nie ma problemu, jeśli inne narzędzia, takie jak aptitude lub dselect są potrzebne / zalecane.

Daniel Yuste Aroca
źródło

Odpowiedzi:

16

Nie trzeba używać niczego innego cat, jeśli dobrze zrozumiałem twój zamiar:

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

powinien dać ci to, czego szukasz. Na przykład dla pakietu 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

Jeśli chodzi o przypadek, w którym nie ma takiego pliku dla danego pakietu - opiekun pakietu musi wyznaczyć określone pliki jako konfigurację. Jeśli nie zostało to wykonane poprawnie, należy zgłosić błąd w stosownych przypadkach.

W takich przypadkach masz kilka opcji.

  1. Wyświetl listę plików należących do pakietu, które znajdują się w / etc /:

    dpkg -L package | grep '/etc'
    
  2. Pobierz i sprawdź pakiet źródłowy, aby dowiedzieć się, w jaki sposób został skompilowany (co powinno również pokazać, gdzie oczekuje, że zostaną zlokalizowane jego pliki konfiguracyjne).

    apt-get source package
    less package-x.y.z/debian/rules
    
  3. Przejrzyj stronę projektu w górę, aby znaleźć dokumentację.

Marcin Kamiński
źródło
Jeśli dany pakiet nie ma takiego pliku .conffiles pod tą ścieżką, czy to znaczy, że nie używa plików konfiguracyjnych?
Daniel Yuste Aroca
Niekoniecznie - być może rzeczywiście istnieją pliki konfiguracyjne używane przez pakiet, ale program pakujący nie wyznaczył żadnych plików jako części plików konfiguracyjnych aplikacji w pakiecie.
Marcin Kamiński
Plik .conffiles wyświetli listę wszystkich plików konfiguracyjnych dostarczonych z pakietem i oznaczonych jako takie przez program pakujący. Automatycznie zainstalowany, który nie pojawia się, to błąd opakowania, ale pamiętaj, że niektóre pliki (szczególnie konfiguracja specyficzna dla użytkownika w plikach dot użytkownika) nie mogą zostać dostarczone z pakietem i nie można tak naprawdę automatycznie zlokalizować, chyba że wiesz już, co oni są.
Darael,
1

Przetestujmy na przykład pakiet, aptaby uzyskać pliki konfiguracyjne.

Zrozumienie, co .conffilesnależy sprawdzić, aby wyświetlić informacje, może być trudne, więc sugeruję użyć, grepaby znaleźć wskazówkę.

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

I na catktórekolwiek z nich, szczególnie jeśli jesteś zainteresowany zgodnie z odpowiedzią Marcina Kamińskiego.

Inną sztuczką jest zapoznanie się z instrukcją, na przykład man aptdoprowadzi Cię do patrz także punkt, z którego można zadzwonić man apt.conf, gdzie można zobaczyć lokalizację dla pliku konfiguracyjnego aptw tym przypadku: /etc/apt/apt.conf.

Jednak plik konfiguracyjny /etc/apt/apt.confmoże nawet nie istnieć. Pamiętaj o tym podczas wyszukiwania plików konfiguracyjnych.

W systemie Linux pliki konfiguracyjne powinny znajdować się w /etc/katalogu. Możesz użyć, dpkg-query -L your_package | grep etcaby wyświetlić listę wszystkich plików pakietów i katalogów w /etc/katalogu.

prosti
źródło
1

A co z dpkg -S [nazwa-pakietu]? Nie widzę, żeby o tym wspominano.

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

A czasem, w zależności od struktury nazwy pliku, może być dobrze, jeśli zostanie wysłany do nazw grep zawierających „.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
hrdy
źródło