Jak sprawdzać tylko aktualizacje zabezpieczeń z wiersza polecenia?

16

Czy istnieje sposób szybkiego sprawdzenia dostępności aktualizacji zabezpieczeń z wiersza poleceń?

W moim systemie 12.04 działającym apt-get updatepobiera 20 MB danych o dostępnych pakietach za każdym razem, gdy go uruchamiam, trafiając po drodze do wielu repozytoriów. Następnie mogę użyć dowolnej z opisanych tutaj metod , aby faktycznie przeprowadzić aktualizację.

Moje pytanie dotyczy tylko wykrycia dostępności aktualizacji zabezpieczeń (tj. Nie wykonania rzeczywistej aktualizacji za pomocą apt-get / aptitude / itp.): Czy istnieje szybkie sprawdzenie, które można wykonać z poziomu wiersza poleceń, który zapewnia odpowiedź tak-nie pytanie „czy są dostępne aktualizacje zabezpieczeń?”. Chciałbym uruchomić to przed uruchomieniem długiej apt-get update+ faktycznej aktualizacji.

Przypuszczam, że nie muszę pobierać 20 MB danych, aby znać odpowiedź na to pytanie każdego dnia.

laramichaels
źródło
Masz na myśli apt-get updatepobieranie 20 MB metadanych pakietu?
Jeremy Kerr
@JeremyKerr: tak, dzieje się tak, jeśli jesteś na głównym serwerze (archiwum / us.archive), ponieważ listy pakietów są aktualizowane co pół godziny ... jest jeden lub dwa długie wątki na ten temat w AU z międzynarodowych / niskiej prędkości użytkownicy, którzy są bardzo rozczarowani.
ish
@izx: ciekawe, właśnie uruchomiłem test przy apt-get updateużyciu australijskiego lustra (jestem w .au); łącznie pobrano 1,3 MB.
Jeremy Kerr

Odpowiedzi:

11

Moje pytanie dotyczy tylko wykrycia dostępności aktualizacji zabezpieczeń

Tak, jest to wykonalne z zastrzeżeniem, że normalny apt-get updatedokona pełnego odświeżenia przy następnym uruchomieniu (20 MB oznacza, że ​​i tak to robi).

  • sudo sh -c 'grep precise-security /etc/apt/sources.list > /etc/apt/secsrc.list

  • A jeśli następnie uruchomisz, zobaczysz, czy są dostępne aktualizacje zabezpieczeń ( przykładowe dane wyjściowe ):

    sudo sh -c 'apt-get -o Dir :: Etc :: sourcelist = "secsrc.list" \
    -o Dir :: Etc :: sourceparts = "-" update && \
    apt-get --assume-no upgrade '
    
  • To mówi, apt-getaby tymczasowo skorzystać ze specjalnej listy źródeł tylko dla bezpieczeństwa, a następnie uruchamia się upgrade, automatycznie odpowiadając nie.

  • Jeśli są, uruchom je poprawnie apt-get update(co spowoduje pełne odświeżenie), a następnie zaktualizuj.

  • Możesz zrobić powyższy skrypt bash z prostym sprawdzaniem kodu grep / exit na końcu, jeśli nie masz ochoty analizować wyniku apt-get :)

ish
źródło
właśnie tego szukałem, wielkie dzięki! :) jedno szybkie pytanie: mój plik /etc/apt/secsrc.list nie odwołuje się do repozytorium „partnerów” (tylko do „głównego ograniczenia”, „wszechświata” i „ multiverse '), czy nadal będę otrzymywać powiadomienia o aktualizacjach bezpieczeństwa dla pakietów w tym repozytorium?
laramichaels,
@laramichaels, repozytorium partnerów zawiera tylko piętnaście pakietów , a są to w zasadzie zastrzeżone pliki binarne opakowane w .deb. Przyrostowe aktualizacje „bezpieczeństwa” nie są dla nich wydawane i wydaje mi się, że nawet regularne aktualizacje są rzadkie (pomyśl Adobe Reader). Dodałbym tylko rzeczywiste repozytorium ( deb http://archive.canonical.com/ubuntu precise partner) do secsrc.listpodanego niewielkiego rozmiaru (5 kb) pliku aktualizacji partnera.
ish
@laramichaels, dodałem również bardziej szczegółową odpowiedź na twoje poprzednie pytanie dotyczące aspektu aktualizacji zabezpieczeń partnera. Przyjęta odpowiedź była błędna IMO, więc proszę spojrzeć, kiedy masz wolną chwilę, i zamiast tego zaakceptuj moją, jeśli uważasz, że jest lepsza.
ish
1
Do czego to służy? -o Dir::Etc::sourceparts="-"
ChocoDeveloper
2

To może nie być dokładnie to, o co pyta pytanie, ale jeśli już uruchomiłeś apt update, możesz sprawdzić, jakie aktualizacje zabezpieczeń są dostępne, używając:

sudo apt list --upgradable | grep -e "-security"

co da ci coś takiego:

libssl1.0.0/xenial-updates,xenial-security 1.0.2g-1ubuntu4.9 i386 [upgradable from: 1.0.2g-1ubuntu4.8]
openssl/xenial-updates,xenial-security 1.0.2g-1ubuntu4.9 i386 [upgradable from: 1.0.2g-1ubuntu4.8]
Steve
źródło