Chcę, aby mój skrypt raportowania uruchamiany w trybie Cron powiadamiał mnie w przypadku aktualizacji moich pakietów. Czy to sposób, aby udostępnić apt-get
mi listę dostępnych aktualizacji, ale nie robić nic więcej?
208
W nowoczesnych wersjach apt
dostępny jest specjalny przełącznik:
apt list --upgradable
W przypadku starego apt-get
polecenia -u
przełącznik wyświetla listę pakietów dostępnych do aktualizacji:
# apt-get -u upgrade --assume-no
Od apt-get
strony man :
-u
--show-upgrade Pokaż zaktualizowane pakiety; Wydrukuj listę wszystkich pakietów, które mają zostać zaktualizowane. Element konfiguracji: APT :: Get :: Show-Upgraded.
--assume-no Automatyczne „nie” dla wszystkich podpowiedzi. <== Aby zapobiec rozpoczęciu instalacji
-u
jest domyślną opcjąapt-get
Nie czyta się tak łatwo, poniżej znajduje się jeden linijka perla do analizy danych wyjściowych apt-get:
Powinno to wygenerować coś takiego:
Mam nadzieję, że pomoże to komuś innemu,
źródło
column
apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}' | column -s " " -t
Inna opcja, zainspirowana przez enzotib:
To polecenie użyje aptitude do wypisania nowych pakietów, a następnie wc do zliczenia linii.
Z jednej strony stwierdziłem, że rozwiązanie enzotibu bez pojedynczych cudzysłowów wokół ~ U nie działa dla mnie. (Wheezy, ZSH, aptitude 0.6.8.2)
Aktualizacja :
Dzięki nowemu apt możesz teraz:
źródło
Najłatwiej jest:
źródło
Możesz biegać
lub nieudokumentowane
Inna metoda wykorzystująca
apt-get
symulację:źródło
dist-upgrade
zgubić niektóre pakiety, które były tak potrzebneaptitude
.aptitude install $(apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }')
wykonał lewę!Spójrz na pakiet „apticron”:
apticron - Proste narzędzie do wysyłania wiadomości e-mail o oczekujących aktualizacjach pakietów
https://packages.debian.org/buster/apticron
źródło
wyświetli listę dostępnych aktualizacji bez faktycznej instalacji.
Pierwsze polecenie aktualizuje pliki indeksu pakietu przed przeprowadzeniem symulowanej (a więc -s) aktualizacji. „-s” wykona symulowaną aktualizację pokazującą pakiety, które zostaną zainstalowane, ale w rzeczywistości niczego nie zainstalują.
Wręcz przeciwnie, „-u” zamiast „-s” faktycznie instaluje się po potwierdzeniu.
źródło
-s, --simulate, --just-print, --dry-run, --recon, --no-act
, rekonfiguracja i uruchomienie na sucho są moimi osobistymi ulubionymi.Potrzebowałem informacji o pełnej wersji możliwych aktualizacji, więc użyłem modyfikacji odpowiedzi Jasonwryana:
To proste i odpowiednio sformatowane wyjście IMO.
źródło
Po prostu odfiltruj dane wyjściowe
mieć w rejestrze tylko preferowane informacje.
Najprawdopodobniej będziesz potrzebować pięknej części po linii
ma na początku niewiele spacji.
źródło
Odrzutowiec on-line zainspirowany tą odpowiedzią :
Dane wyjściowe wyglądają następująco (w kolorze):
Jeśli nie chcesz tego krótkiego opisu, użyj tego:
Wynik:
źródło
jest najprostszy dla wiadomości e-mail Cron; nie ma iteracji użytkownika, a jeśli nie ma aktualizacji, nie ma danych wyjściowych.
źródło
Po napisaniu ostrzeżenia do odpowiedzi @ jasonwryan chcę podać własne rozwiązanie:
Niestety, ten nie działa z serwerem Debian Wheezy i musiałem sprawdzić kilka kontenerów LXC, które wciąż nie są uaktualnione. Ten formularz zawsze będzie działał:
Wreszcie chciałem również sformatować dane wyjściowe. Zdecydowałem się zmienić połączenie ponownie (używając,
--dry-run
ale ignorując wszystkie dodatkowe dane wyjściowe), ponieważ wydaje się to bezpieczniejsze:Zwroty:
źródło
apt-check
jest prawdopodobnie najbardziej wydajną metodą skryptową.Bardzo mała modyfikacja pokazuje tylko aktualizacje zabezpieczeń.
źródło
Jako wariant używam następujących:
Wstaw go do skryptu o nazwie,
apt-updates
a następnie możesz zadzwonić,apt-updates
aby uzyskać listę wszystkich aktualizacji bez względu na użytkownika.Nadal musisz dzwonić
apt-get update
z uprzywilejowanym dostępem.źródło
Jest
apt-show-versions
narzędzie. Aby wyświetlić dostępne aktualizacje, uruchom:źródło
Lubię to używać:
Otrzymasz wyjście takie jak to:
jeśli są dostępne aktualizacje, a żadna, jeśli nie ma. W ten sposób możesz po prostu połączyć go z rozwiązaniem monitorującym.
źródło