Pri pokuse naučiť sa Ansible na Arch node som sa rozhodol vymazať konfiguráciu Nginx:
sudo systemctl stop nginx.servie
sudo pacman -Rnc nginx
sudo rm -rf /etc/nginx
V nádeji, že preinštalovanie nginx (alebo možno nginx-mainline) obnoví
všetky súbory:
sudo pacman -S nginx
sudo systemctl start nginx.service
Bohužiaľ, spustiť nginx.service už nebolo možné:
Job for nginx.service failed because the control process exited with error code.
Hľadanie možnej príčiny v systémovom žurnáli:
sudo journalctl -xeu nginx
Prinieslo výsledky:
open() "/etc/nginx/mime.types" failed (2: No such file or directory) in
/etc/nginx/nginx.conf:18
Akceptované riešenie na
Unix Stack Exchange
navrhlo stiahnutie mime.types z
upstream
zdroja.
Vlastníctvo súborov balíčka #
Súbor /etc/nginx/mime.types musel niekde pochádzať, preto som skúmal
balíček Nginx:
pacman -Fl nginx | grep mime
Neukázal žiadny takýto súbor vlastnený balíčkom, a predsa nový
/etc/nginx/nginx.conf ho vyžaduje:
...
http {
include mime.types;
default_type application/octet-stream;
...
Kontrola, ktorý balíček vlastní mime.types:
pacman -F /etc/nginx/mime.types
Súbor /etc/nginx/mime.types pochádza z balíčka
mailcap.
Vzťahy balíčkov #
Prečo súbor uložený v /etc/nginx nepochádza z balíčka mailcap? Sú spolu
prepojené?
pacman -Si nginx | grep -i mailcap
Výstup ukazuje, že Nginx Závisí od mailcap — to je úľava. Preinštalujem
oba:
sudo pacman -S nginx mailcap
Pacman potvrdzuje, že chýbajúci súbor mime.types ho tiež mätie, a obnoví
ho:
:: Proceed with installation? [Y/n]
(2/2) checking keyring...
(2/2) checking package integrity...
(2/2) loading package files...
(2/2) checking for file conflicts...
(2/2) checking available disk space...
warning: could not get file information for etc/nginx/mime.types
Nginx service sa teraz spustí.
Krížová verifikácia #
Rozhodol som sa skontrolovať, či iné súbory v /etc/nginx patria iným
balíčkom:
ls /etc/nginx | xargs -I % sh -c 'pacman -F /etc/nginx/%; printf "\n"'
Prezeranie čiastočne čitateľného výstupu ukazuje iba mime.types:
etc/nginx/fastcgi.conf is owned by extra/nginx 1.18.0-2
etc/nginx/fastcgi.conf is owned by community/nginx-mainline 1.19.6-2
etc/nginx/fastcgi_params is owned by extra/nginx 1.18.0-2
etc/nginx/fastcgi_params is owned by community/nginx-mainline 1.19.6-2
etc/nginx/koi-utf is owned by extra/nginx 1.18.0-2
etc/nginx/koi-utf is owned by community/nginx-mainline 1.19.6-2
etc/nginx/koi-win is owned by extra/nginx 1.18.0-2
etc/nginx/koi-win is owned by community/nginx-mainline 1.19.6-2
etc/nginx/mime.types is owned by extra/mailcap 2.1.49-1
etc/nginx/nginx.conf is owned by extra/nginx 1.18.0-2
etc/nginx/nginx.conf is owned by community/nginx-mainline 1.19.6-2
etc/nginx/scgi_params is owned by extra/nginx 1.18.0-2
etc/nginx/scgi_params is owned by community/nginx-mainline 1.19.6-2
etc/nginx/uwsgi_params is owned by extra/nginx 1.18.0-2
etc/nginx/uwsgi_params is owned by community/nginx-mainline 1.19.6-2
etc/nginx/win-utf is owned by extra/nginx 1.18.0-2
etc/nginx/win-utf is owned by community/nginx-mainline 1.19.6-2
A pre istotu, že je iba tento jeden cudzí súbor:
ls /etc/nginx | xargs -I % pacman -F /etc/nginx/% | cut -d' ' -f5 | grep -v nginx
Vyššie uvedené vráti iba balíček extra/mailcap.
V iných balíčkoch #
Mať jeden balíček, ktorý poskytuje konfiguračný súbor do iného konfiguračného adresára, sa stáva:
pacman -Fl syncthing | grep ufw
Balíček
syncthing
poskytuje súbory do /etc/ufw/:
syncthing etc/ufw/
syncthing etc/ufw/applications.d/
syncthing etc/ufw/applications.d/ufw-syncthing
Na toto správanie som už naznačil v jednom z predchádzajúcich príspevkov.
Odkazy #
- https://bugs.archlinux.org/task/56532
- https://bbs.archlinux.org/viewtopic.php?id=232313
- https://lists.archlinux.org/pipermail/arch-dev-public/2017-November/029036.html
Toto je 34. príspevok #100daystooffload.