Jak mogę uzyskać listę pakietów wybranych przez apt-get autorove?

13

Czy jest jakieś polecenie, które wypisuje tylko nazwę wybranych pakietów apt-get autoremove? Tworzę skrypt, który aktualizuje jądro, usuwa stare jądro i niepotrzebne pakiety ( apt-get autoremove), ale chcę wydrukować na ekranie listę pakietów, które zostaną usunięte apt-get autoremove, jak mogę to zrobić?

Afonso Sousa
źródło
Powinieneś być w stanie uruchomić sudo apt-get autoremove -ygo i powinien autorove wszystko, co trzeba usunąć ...
Spróbuj przeczytać tutaj, [To może być pomocne.] [1] [1]: serverfault.com/questions/433250/…
Doug
Aby uzyskać listę pakietów bez ich usuwania, możesz to zrobićsudo apt-get --dry-run autoremove
heemayl,
Chcę tylko uzyskać nazwę pakietów, a nie cały wynik polecenia ....
Afonso Sousa

Odpowiedzi:

13

Ponieważ zgodnie z Twoim komentarzem chcesz wymienić tylko pakiety, które zostaną usunięte:

apt-get --dry-run autoremove | grep -Po '^Remv \K[^ ]+'

grep podział poleceń:

  • -P: Interpretuje podany wzorzec jako wzorzec PCRE (wyrażenie regularne zgodne z Perl)
  • -o: Drukuje tylko dopasowany ciąg zamiast całej linii

Podział Regex:

  • ^: dopasowuje początek linii
  • Remv: dopasowuje Remvciąg
  • \K: wyklucza poprzednio dopasowany podciąg z dopasowanego łańcucha
  • [^ ]+: nie pasuje do jednego lub więcej znaków
$ apt-get --dry-run autoremove | grep -Po 'Remv \K[^ ]+'
libapache2-mod-php5
php5-readline
php5-cli
libonig2
libqdbm14
php5-json
php5-common 
kos
źródło
1
@GeekLynxAfonso, nie musisz używać sudoz --dry-runopcją.
jarno
@jarno Ma sens, że fakt, że prawdopodobnie nie był potrzebny, nie przyszedł mi do głowy. Dzięki
Kos
2

W rzeczywistości wystarczy przefiltrować dane wyjściowe

sudo apt-get autoremove --dry-run 

Komenda.

Na przykład możesz to zrobić

sudo apt-get autoremove --dry-run  | head -n 5 | tail -n 1
cytrynowy
źródło
Twoje polecenie też działa !! Ale wolę polecenie Kos ... Ale dzięki tak samo !! :)
Afonso Sousa,