Mój potencjalny dostawca hostingu sugeruje uruchomienie polecenia w terminalu, aby zminimalizować obraz systemu operacyjnego serwera opartego na KVM. Ponieważ ich szablony KVM są dostarczane z pakietami, których nie będę potrzebował, pomyślałem, że mogę użyć tego samego polecenia do usunięcia niechcianych pakietów.
To polecenie zaczyna się od DEBIAN_FRONTEND=noninteractive
, a następnie wywołuje apt-get remove
w następujący sposób:
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" package-1 package-2 ... package-n; apt-get -y autoremove; apt-get clean all
Po raz pierwszy napotykam DEBIAN_FRONTEND
zmienną środowiskową i jak dotąd nie mogłem znaleźć użytecznych informacji. Zastanawiam się więc, co to noninteractive
robi i czy jest to wskazane, ponieważ przypuszczam, że ta wartość ( noninteractive
) będzie się utrzymywać.
apt
environment-variables
Asarluhi
źródło
źródło
Odpowiedzi:
Zwykłe wstawienie
apt
polecenia za pomocąDEBIAN_FRONTEND=something
nie trwa po pojedynczym poleceniu, do którego zostało zastosowane.Te
DEBIAN_FRONTEND
opcje są udokumentowane w rozdziale 7 Podręcznik strondebconf
(może trzeba zainstalowaćdebconf-doc
pakiet w celu udostępnienia ich w systemie). Odman 7 debconf
:Zauważa również, że:
źródło
DEBIAN_FRONTEND=noninteractive
często używane w Dockerfiles. Ta odpowiedź sprawia, że zastanawiam się, dlaczego po prostu nie używamy--yes
flagi z poleceniami apt, ponieważ będzie ona bardziej jednoznaczna iw większości przypadków spełni nasze potrzeby.DEBIAN_FRONTEND
zsudo
, ustaw zmienną wsudo
poleceniu, a nie dla niego. Czyli:sudo DEBIAN_FRONTEND=noninteractive apt-get install slrn
. Jeśli wcześniej wstawisz ustawienie zmiennej envsudo
, będzie ono ważne dla samegosudo
polecenia isudo
nie skopiuje go doapt-get
uruchamianego polecenia. Używanie go pomiędzysudo
a rzeczywistą komendą jestsudo
składnią do ustawiania zmiennych env dla komendy, która ma zostać uruchomiona (patrz strona man). To sprawiło mi trudność, więc pomyślałem o dzieleniu się.noninteractive
, możesz to zrobić za pomocą następującego polecenia:dpkg-reconfigure debconf --frontend=noninteractive