Chciałbym wypisać listę wszystkich zainstalowanych pakietów do pliku tekstowego, aby móc je przejrzeć i zainstalować masowo w innym systemie. Jak mam to zrobić?
Chciałbym wypisać listę wszystkich zainstalowanych pakietów do pliku tekstowego, aby móc je przejrzeć i zainstalować masowo w innym systemie. Jak mam to zrobić?
Odpowiedzi:
apt
Narzędzie na Ubuntu 14.04 i powyżej sprawia, że to bardzo łatwe.
apt list --installed
Aby uzyskać listę pakietów zainstalowanych lokalnie, zrób to w swoim terminalu:
dpkg --get-selections | grep -v deinstall
( -v
Tag „odwraca” grep, aby zwrócić niepasujące linie)
Aby uzyskać listę zainstalowanego konkretnego pakietu:
dpkg --get-selections | grep postgres
Aby zapisać tę listę do pliku tekstowego wywoływanego packages
na pulpicie, zrób to w swoim terminalu:
dpkg --get-selections | grep -v deinstall > ~/Desktop/packages
Alternatywnie, po prostu użyj
dpkg -l
(nie musisz uruchamiać żadnego z tych poleceń jako superużytkownik, więc nie musisz sudo
tutaj ani żadnych innych wariantów)
sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgrade
Zrób sztuczkę.
Aby uzyskać tylko pakiety, które zostały wyraźnie zainstalowane (nie tylko zainstalowane jako zależności), możesz uruchomić
aptitude search '~i!~M'
Będzie to również zawierać krótki opis, który możesz chcieć. Jeśli nie, dodaj także opcję -F '%p'
, jak wspomniano w karthick87.
Jeszcze inną opcją wydaje się być skopiowanie pliku /var/lib/apt/extended_states
, który jest bazą danych pliku tekstowego w tym formacie:
Package: grub-common
Architecture: amd64
Auto-Installed: 0
Package: linux-headers-2.6.35-22-generic
Architecture: amd64
Auto-Installed: 1
Auto-Installed: 0
wskazuje, że pakiet został wyraźnie zainstalowany i nie jest tylko zależnością.
apt-get
?
Aby wyświetlić listę wszystkich pakietów celowo zainstalowanych (nie jako zależności) za pomocą komend apt, uruchom następujące polecenie:
(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
egrep '^(Start-Date:|Commandline:)' |
grep -v aptdaemon |
egrep '^Commandline:'
Zapewnia to widok oparty na czasie do tyłu, z wcześniejszymi listami starszych poleceń:
Commandline: apt-get install k3b
Commandline: apt-get install jhead
...
Dane instalacyjne pokazują również użycie synaptyczne, ale bez szczegółów (to samo z datą instalacji):
(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
egrep '^(Start-Date:|Commandline:)' |
grep -v aptdaemon |
egrep -B1 '^Commandline:'
zapewniając:
Start-Date: 2012-09-23 14:02:14
Commandline: apt-get install gparted
Start-Date: 2012-09-23 15:02:51
Commandline: apt-get install sysstat
...
zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:'
dpkg
??
Utwórz kopię zapasową aktualnie zainstalowanych pakietów:
dpkg --get-selections > list.txt
Następnie (w innym systemie) przywróć instalacje z tej listy:
dpkg --clear-selections
sudo dpkg --set-selections < list.txt
Aby pozbyć się starych pakietów:
sudo apt-get autoremove
Aby zainstalować jak podczas tworzenia kopii zapasowej (tj. Zainstalować pakiety ustawione przez dpkg --set-selections
):
sudo apt-get dselect-upgrade
ubuntu-desktop
został odinstalowany - prawdopodobnie z powodu jednego z poleceń dpkg. bądź ostrożny, naprawienie uszkodzeń zajęło mi wiele godzin!
sudo apt-mark hold name-your-package
. Zapobiegnie to aktualizacji apt-get do bieżącej wersji, która jest domyślna dla procesu aktualizacji.
apt-mark showmanual
Stan stron podręcznika:
wydrukuje listę ręcznie zainstalowanych pakietów
Powinien więc po prostu podać listę jawnie zainstalowanych pakietów (choć obejmuje to pakiety, które były częścią domyślnej instalacji początkowej) bez uwzględnienia wszystkich zależności związanych z instalowaniem tych pakietów.
Aby wyprowadzić wynik do pliku tekstowego:
apt-mark showmanual > list-manually-installed.txt
apt-mark showmanual
tak naprawdę nie. Zawiera także mnóstwo automatycznie zainstalowanych pakietów, prawdopodobnie część instalacji podstawowej.
apt list --manual-installed
.
dpkg-query
(zamiast dpkg --get-selections
, który zawiera listę niektórych pakietów, które nie są zainstalowane) w następujący sposób:
dpkg-query -W -f='${PackageSpec} ${Status}\n' | grep installed | sort -u | cut -f1 -d \ > installed-pkgs
Lub:
dpkg -l | grep ^ii | sed 's_ _\t_g' | cut -f 2 > installed-pkgs
# for pkg in `cat installed-pkgs`; do apt-get install -y $pkg; done
w drugim systemie, zrobiłem to, aby zainstalować pakiety.
apt-get install -y $(< installed-pkgs)
sprawi, że apt-get uruchomi się tylko raz i zajmie się wszystkimi zależnościami jednocześnie.
sudo apt-get build-dep name-package; sudo apt-get install name-package;
?
Aby wyświetlić listę wszystkich zainstalowanych pakietów,
dpkg -l |awk '/^[hi]i/{print $2}' > 1.txt
lub
aptitude search -F '%p' '~i' > 1.txt
lub
dpkg --get-selections > 1.txt
Uwaga:
Otrzymasz plik wynikowy 1.txt w folderze domowym lub możesz określić własną ścieżkę.
Możesz użyć Synaptic, aby zapisać bieżący stan zainstalowanych pakietów. W Synaptic wybierz „oznaczenie pliku / zapisz”, wprowadź nazwę pliku, w którym chcesz zapisać stan, i zaznacz pole „Zapisz pełny stan, nie tylko zmiany”.
Zapisany plik można załadować do nowego komputera za pomocą „oznaczeń plików / odczytów” w Synaptic.
Polecam użycie planu . Mimo że jest przeznaczony dla serwerów, może być również używany z komputerów stacjonarnych. Stworzy skrypt powłoki / szefa kuchni / lalkę, którego możesz użyć do ponownej instalacji wszystkich swoich pakietów.
Chcesz ponownie zainstalować pakiety 12.04, prawda?
Jeśli tak, to bardzo łatwo. Potrzebne będzie „konto Ubuntu z pojedynczym logowaniem”. (Utwórz go przed ponowną instalacją, aby system był zsynchronizowany).
Przejdź do Centrum oprogramowania i poszukaj opcji „Synchronizuj między komputerami ...” w menu Plik.
Po kliknięciu zobaczysz zarejestrowany komputer i listę wszystkich aplikacji na komputerze.
Po zainstalowaniu nowego komputer ten zostanie uznany za nowy.
Musisz tylko zalogować się na swoje konto Ubuntu, aby wyświetlić poprzedni komputer.
Kliknij na to; otrzymasz listę wszystkich aplikacji. Wybierz „zainstaluj” w aplikacji, którą chcesz zainstalować.
Istnieje również narzędzie o nazwie Aptik (zarówno wiersz poleceń, jak i GUI), które może pomóc Ci wyświetlić listę wszystkich zainstalowanych pakietów, z opcją zaznaczenia / odznaczenia niektórych z nich, utworzenia listy kopii zapasowych, a następnie przywrócenia tego samego zestawu pakietów w inny system.
Żeby zainstalować:
sudo add-apt-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install aptik
Więcej informacji: https://teejeetech.in/aptik/
Jak widać na zrzucie ekranu, Aptik umożliwia także tworzenie kopii zapasowych i przywracanie plików PPA , co z pewnością będzie konieczne do zainstalowania niektórych zainstalowanych pakietów.
apt-get install aptik-gtk
, jak również
Klon APT . Tego pakietu można użyć do klonowania / przywracania pakietów w systemie opartym na apt.
- Będzie zapisywać / przywracać pakiety, sources.list, keyring i automatycznie instalowane stany.
- Może także zapisywać / przywracać pakiety, których nie można już pobrać, używając programu dpkg-repack.
źródło:
man apt-clone
APT-Clone jest używany przez ubiquity
(instalator Ubuntu) do procesu aktualizacji. Jest znacznie lepszy niż dpkg --get-selections
rozwiązanie, ponieważ:
Jak używać
zainstalować
sudo apt-get install apt-clone
Zrobić kopię zapasową
sudo apt-clone clone path-to/apt-clone-state-ubuntu-$(lsb_release -sr)-$(date +%F).tar.gz
Przywracania kopii zapasowej
sudo apt-clone restore path-to/apt-clone-state-ubuntu.tar.gz
Przywróć do nowszej wersji:
sudo apt-clone restore-new-distro path-to/apt-clone-state-ubuntu.tar.gz $(lsb_release -sc)
Tworzy prosty skompresowany plik tar, który można łatwo edytować i przeglądać przed przywróceniem na innych komputerach. Oto przykład jego struktury:
/
├── etc
│ └── apt
│ ├── preferences.d
│ ├── sources.list
│ ├── sources.list.d
│ │ ├── anton_-ubuntu-dnscrypt-vivid.list
│ │ ├── maarten-baert-ubuntu-simplescreenrecorder-vivid.list
│ │ └── megasync.list
│ ├── trusted.gpg
│ └── trusted.gpg.d
│ ├── anton__ubuntu_dnscrypt.gpg
│ ├── anton__ubuntu_dnscrypt.gpg~
│ ├── maarten-baert_ubuntu_simplescreenrecorder.gpg
│ └── maarten-baert_ubuntu_simplescreenrecorder.gpg~
└── var
└── lib
└── apt-clone
├── extended_states
├── installed.pkgs
└── uname
Istnieje świetne wyjaśnienie na temat Unix StackExchange, które opisuje, jak używać aptitude do wyświetlania pakietów niezainstalowanych jako zależności oraz jak porównać tę listę z listą domyślnych pakietów dla twojej wersji Ubuntu.
Aby uzyskać plik manifestu dla wersji 12.04 na komputery stacjonarne i nowsze, odwiedź tę stronę , wybierz wydanie i przewiń w dół poniżej obrazów płyt CD do sekcji plików. Znajdziesz coś w rodzaju „ubuntu-12.04.4-desktop-amd64 + mac.manifest”, który pasuje do Twojej architektury.
W przypadku wersji serwerowych musisz uzyskać plik manifestu z ISO, który został użyty do zainstalowania oryginalnego systemu. W przypadku serwera VPS lub serwera w chmurze dostawca może udostępnić obrazy lub może być konieczne skontaktowanie się z nimi.
Oto przykład użycia kodu z odnośnika, wraz z modyfikacjami do zainstalowania na nowym serwerze.
Stary serwer (kod z innego postu, dane wyjściowe zapisane w pliku):
aptitude search '~i !~M' -F '%p' --disable-columns | sort -u > currently-installed.list
wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest \
| cut -f1 | sort -u > default-installed.list
comm -23 currently-installed.list default-installed.list > user-installed.list
Na nowym serwerze skopiuj plik za pomocą scp, a następnie użyj sed, aby dołączyć „zainstaluj” do każdej linii (-i wykonuje zamianę inline). Następnie możesz użyć listy jako danych wejściowych do „dpkg --set-selections” i zainstalować pakiety za pomocą apt-get:
scp user@oldserver:user-installed.list .
sed -i 's/$/\tinstall/' user-installed.list
sudo dpkg --set-selections < user-installed.list
sudo apt-get dselect-upgrade
Przed rozpoczęciem tego zadania zalecam przeczytanie i zrozumienie wszystkich części posta wspomnianych na początku, a następnie zajrzyj do poradnika umiejętności, aby uzyskać szczegółowe informacje na temat wzorców wyszukiwania.
Dziwi mnie, że apt-cache
polecenie zaprojektowane specjalnie do tego celu nie zostało wspomniane powyżej ...
apt-cache pkgnames
Aby uzyskać więcej informacji, uruchom apt-cache --help
:
** apt-cache to narzędzie niskiego poziomu używane do wyszukiwania informacji z binarnych plików pamięci podręcznej APT Polecenia: gencaches - Zbuduj pamięć podręczną pakietu i źródła showpkg - Pokazuje ogólne informacje o pojedynczej paczce showsrc - Pokaż rekordy źródłowe statystyki - Pokaż podstawowe statystyki zrzut - Pokaż cały plik w zwięzłej formie dumpavail - Wydrukuj dostępny plik na standardowe wyjście unmet - Pokaż niespełnione zależności szukaj - Wyszukaj w liście pakietów wzorzec wyrażenia regularnego show - Pokaż czytelny rekord dla pakietu depends - Pokaż surowe informacje o zależnościach dla pakietu rdepends - Pokazuje informacje o odwrotnej zależności dla pakietu pkgnames - Wymień nazwy wszystkich pakietów w systemie dotty - Generuj wykresy pakietów dla GraphViz xvcg - Generuj wykresy pakietów dla xvcg polityka - Pokaż ustawienia polityki Opcje: -h Ten tekst pomocy. -p =? Pamięć podręczna pakietów. -s =? Pamięć podręczna źródła. -q Wyłącz wskaźnik postępu. -i Pokaż tylko ważne deps dla polecenia unmet. -c =? Przeczytaj ten plik konfiguracyjny -o =? Ustaw dowolną opcję konfiguracji, np. -O dir :: cache = / tmp Aby uzyskać więcej informacji, zobacz strony podręcznika apt-cache (8) i apt.conf (5). **
apt --installed list
daje najlepszy wynik (jak sugeruje powyższa odpowiedź powyżej. Chociaż apt-cache pkgnames
wydaje się, że robi to na pierwszy rzut oka, zawiera listę „wszystkich pakietów w systemie” (zgodnie z powyższym tekstem pomocy), który obejmuje również pakiety, o których apt wie o tym ale w rzeczywistości nie są zainstalowane. Istnieje --installed
opcja, ale wydaje się, że nie działa pkgnames
.
apt-cache pkgnames | wc -l
daje 55909
pakiety (system wie o tym), natomiast aptitude search '~i!~M' | wc -l
daje 2160
(pakiety jawnie zainstalowane, bez zależności).
Pełne podsumowanie patrz:
w połowie strony:
dpkg --list
Poniższe polecenie wyświetli również listę wszystkich zainstalowanych pakietów,
grep ' installed ' /var/log/dpkg.log /var/log/dpkg.log.1 | awk '{print $5}' | sort -u
/var/log/dpkg.log*
aby uzyskać wszystkie obrócone dzienniki.
Pomóż tej wiki społeczności - Dodaj aktualne rozwiązania.
To polecenie powinno zakończyć tworzenie pliku tekstowego zawierającego zainstalowane pakiety:
dpkg -l | awk '{print $2}' > package_list.txt
Aby przeprowadzić masową instalację wymienionych pakietów, musisz edytować plik „pakiet_list.txt”. Usuń dziwne linie u góry pliku za pomocą edytora tekstu. Następnie możesz użyć tego polecenia, aby zainstalować pakiety z utworzonego pliku, używając:
xargs < package_list.txt apt-get install -y
Używaj tej metody tylko wtedy, gdy chcesz, aby wszystkie bieżące pakiety były instalowane przy użyciu listy (w tym automatycznie instalowanej itp.).
Wyślij odpowiedź „apt-cache pkgnames” do pliku, który nazwiemy po prostu „pakiet_list.txt”. Możesz to zrobić za pomocą:
apt-cache pkgnames > package_list.txt
Następnie, jeśli chcesz zainstalować pakiety z „package_list.txt”, użyj tej komendy:
xargs < package_list.txt apt-get install -y
Możemy użyć tego polecenia, apt-mark showmanual
aby podać listę pakietów, które zostały ręcznie lub wstępnie zainstalowane z Ubuntu. Będziemy chcieli wysłać to do pliku, który nazwiemy „pakiet-list.txt”. Użyj tego polecenia, aby to zrobić:
apt-mark showmanual > package-list.txt
Polecenie, którego użylibyśmy do zainstalowania pakietów z pliku „lista_pakietów.txt”, znajduje się poniżej.
xargs < package_list.txt apt-get install -y
Narzędzie do uproszczenia ponownej instalacji pakietów oprogramowania po aktualizacji / ponownej instalacji dystrybucji opartych na Ubuntu.
[ Launchpad | Aptik ]
Aby uzyskać informacje na temat Aptik, odwiedź jego oficjalną stronę , a zrzut ekranu kliknij tutaj lub zobacz koniec tej sekcji.
Instalacja Aptik jest prosta. Wykonaj następujące kroki:
Dodaj PPA z:
sudo add-apt-repository -y ppa:teejee2008/ppa
Zaktualizuj apt za pomocą poniższego polecenia.
sudo apt-get update
Zainstaluj Aptik za pomocą:
sudo apt-get install aptik
apt-mark showmanual
obejmują między innymi Bash, Unity i Xorg. Czy oni powinni tam być?
Wydaje mi się, że warto zauważyć apt list --installed
lub dpkg-query --list
użyć pliku wywoływanego /var/lib/dpkg/status
za, gdzie wszystkie informacje o paczkach są brodą.
Więc jeśli chcesz poradzić sobie z super rozszerzoną listą pakietów cat /var/lib/dpkg/status
.
Uwaga: Nie zmieniaj /var/lib/dpkg/status
pliku.
Oprócz pakietów APT wiele pakietów GUI jest obecnie dystrybuowanych jako przystawki .
Jeśli nie można znaleźć Twojego pakietu apt list --installed
, spróbuj snap list
:
$ snap list
Name Version Rev Tracking Publisher Notes
gimp 2.10.10 165 stable snapcrafters -
gnome-calculator 3.32.1 406 stable/… canonical✓ -
keepassxc 2.4.1 267 stable keepassxreboot -
...
Dobrym pomysłem jest również dodanie /snap/bin
do PATH, aby można było uruchomić je z terminala (wykonywane automatycznie dla użytkowników innych niż root).
Pakiet dctrl-tools
zapewnia grep-status
narzędzie do uzyskania listy pakietów oznaczonych jako zainstalowane w systemie:
sudo apt install dctrl-tools
Stosowanie:
grep-status -FStatus -sPackage -n "install ok installed"
widzieć : man dctrl-tools
https://www.rosehosting.com/blog/list-all-installed-packages-with-apt-on-ubuntu/ :
1. Wyświetl listę zainstalowanych pakietów oprogramowania w systemie Ubuntu
Aby wyświetlić listę zainstalowanych pakietów oprogramowania na komputerze, możesz użyć następującego polecenia:
sudo apt list --installed
Wynik działania polecenia będzie bardzo podobny do następującego, w zależności od tego, które pakiety są obecnie zainstalowane:
Listing... acl/xenial,now 2.2.52-3 amd64 [installed] adduser/xenial,xenial,now 3.113+nmu3ubuntu4 all [installed] apache2/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] apache2-bin/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed,automatic] apache2-data/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed,automatic] apache2-doc/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed] apache2-utils/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] apparmor/xenial-updates,now 2.10.95-0ubuntu2.5 amd64 [installed,automatic] apt/xenial-updates,now 1.2.19 amd64 [installed] apt-utils/xenial-updates,now 1.2.19 amd64 [installed] ...
2. Użyj programu LESS
Aby łatwo odczytać całe wyjście, możesz użyć
less
programu.sudo apt list --installed | less
3. Użyj polecenia GREP
Możesz wyszukać konkretny pakiet za pomocą
grep
programu wyjściowego .sudo apt list --installed | grep -i apache
4. Wyświetl listę wszystkich pakietów, które zawierają Apache
Dane wyjściowe powyższego polecenia zawierają listę wszystkich pakietów, które zawierają się
apache
w ich nazwach.apache2/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] apache2-bin/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed,automatic] apache2-data/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed,automatic] apache2-doc/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed] apache2-utils/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] libapache2-mod-php/xenial,xenial,now 1:7.0+35ubuntu6 all [installed,automatic] libapache2-mod-php7.0/xenial-updates,now 7.0.13-0ubuntu0.16.04.1 amd64 [installed,automatic] libapache2-mod-security2/xenial,now 2.9.0-1 amd64 [installed] libapache2-modsecurity/xenial,xenial,now 2.9.0-1 all [installed]
Apt obsługuje wzorce, aby dopasować nazwy pakietów i opcje, aby wyświetlić listę zainstalowanych
(--installed)
pakietów,(--upgradeable)
pakietów z możliwością aktualizacji lub wszystkich dostępnych(--all-versions)
wersji pakietów.5. Użyj programu DPKG
Inną alternatywą, której można użyć do wyświetlenia listy zainstalowanych pakietów oprogramowania w systemie Ubuntu VPS, jest
dpkg
polecenie.sudo dpkg -l
Dane wyjściowe polecenia dostarczą informacji, takich jak nazwa pakietu, wersja, architektura i krótki opis pakietu. Oczywiście możesz
grep
ponownie użyć programu, aby wyszukać konkretny pakiet.sudo dpkg -l | grep -i apache
Dane wyjściowe powinny wyglądać następująco:
ii apache2 2.4.18-2ubuntu3.1 amd64 Apache HTTP Server ii apache2-bin 2.4.18-2ubuntu3.1 amd64 Apache HTTP Server (modules and other binary files) ii apache2-data 2.4.18-2ubuntu3.1 all Apache HTTP Server (common files) ii apache2-doc 2.4.18-2ubuntu3.1 all Apache HTTP Server (on-site documentation) ii apache2-utils 2.4.18-2ubuntu3.1 amd64 Apache HTTP Server (utility programs for web servers) rc apache2.2-common 2.2.22-6ubuntu5.1 amd64 Apache HTTP Server common files ii libapache2-mod-php 1:7.0+35ubuntu6 all server-side, HTML-embedded scripting language (Apache 2 module) (default) rc libapache2-mod-php5 5.5.9+dfsg-1ubuntu4.16 amd64 server-side, HTML-embedded scripting language (Apache 2 module) ii libapache2-mod-php7.0 7.0.13-0ubuntu0.16.04.1 amd64 server-side, HTML-embedded scripting language (Apache 2 module) ii libapache2-mod-security2 2.9.0-1 amd64 Tighten web applications security for Apache ii libapache2-modsecurity 2.9.0-1 all Dummy transitional package ii libapr1:amd64 1.5.2-3 amd64 Apache Portable Runtime Library ii libaprutil1:amd64 1.5.4-1build1 amd64 Apache Portable Runtime Utility Library ii libaprutil1-dbd-sqlite3:amd64 1.5.4-1build1 amd64 Apache Portable Runtime Utility Library - SQLite3 Driver ii libaprutil1-ldap:amd64 1.5.4-1build1 amd64 Apache Portable Runtime Utility Library - LDAP Driver .
Dzięki konkursowi tego samouczka z powodzeniem nauczyłeś się, jak wyświetlać listę zainstalowanych pakietów w Ubuntu.
Można to zrobić na wiele sposobów. Jeśli używasz CentOS jak ja, możesz użyć tych: 1. yum list installed
2.rpm -qa