Я хотів би вивести список всіх встановлених пакетів у текстовий файл, щоб я міг його переглянути та встановити групово в іншій системі. Як би я це зробив?
Я хотів би вивести список всіх встановлених пакетів у текстовий файл, щоб я міг його переглянути та встановити групово в іншій системі. Як би я це зробив?
Відповіді:
apt
Інструмент на Ubuntu 14.04 і вище робить це дуже легко.
apt list --installed
Щоб отримати список встановлених локальних пакетів, зробіть це у своєму терміналі:
dpkg --get-selections | grep -v deinstall
( -v
Тег "інвертує" grep для повернення невідповідних рядків)
Щоб отримати список встановленого конкретного пакета:
dpkg --get-selections | grep postgres
Щоб зберегти цей список у текстовому файлі, викликаному packages
на робочому столі, зробіть це у своєму терміналі:
dpkg --get-selections | grep -v deinstall > ~/Desktop/packages
Або ж просто використовувати
dpkg -l
(вам не потрібно запускати жодну з цих команд як суперпользователь, тому тут не sudo
потрібні будь-які або інші варіанти)
sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgrade
робить трюк.
Щоб отримати лише ті пакунки, які були встановлені прямо (а не просто встановлені як залежності), ви можете запустити
aptitude search '~i!~M'
Сюди також буде включено короткий опис, який ви можете захотіти. Якщо ні, також додайте параметр -F '%p'
, як згадував karthick87.
Ще одним варіантом здається скопіювати файл /var/lib/apt/extended_states
, який є базою даних текстових файлів у такому форматі:
Package: grub-common
Architecture: amd64
Auto-Installed: 0
Package: linux-headers-2.6.35-22-generic
Architecture: amd64
Auto-Installed: 1
Auto-Installed: 0
вказує на те, що пакет був встановлений прямо і не є лише залежністю.
apt-get
?
Щоб перелічити всі навмисно встановлені пакети (а не як залежності) за допомогою команд apt, виконайте наступне:
(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:'
Це забезпечує зворотний вигляд на основі часу, в першу чергу перераховані старші команди:
Commandline: apt-get install k3b
Commandline: apt-get install jhead
...
Дані про встановлення також показують використання синаптичних даних, але без деталей (те ж саме з датою встановлення):
(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:'
надаючи наступне:
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
??
Створіть резервну копію пакетів, які зараз встановлені:
dpkg --get-selections > list.txt
Потім (в іншій системі) відновіть установки зі цього списку:
dpkg --clear-selections
sudo dpkg --set-selections < list.txt
Щоб позбутися несвіжих пакетів:
sudo apt-get autoremove
Щоб встановитись як під час резервного копіювання (тобто встановити встановлені пакети dpkg --set-selections
):
sudo apt-get dselect-upgrade
ubuntu-desktop
видалився - ймовірно, через одну з команд dpkg. будьте обережні, на ремонт пошкоджень пішло кілька годин!
sudo apt-mark hold name-your-package
. Це запобіжить переходу apt-get до оновлення до поточної версії, що є типовим для процесу оновлення.
apt-mark showmanual
чоловічі сторінки констатують:
надрукує список встановлених вручну пакетів
Таким чином, він повинен просто надати список явно встановлених пакетів (хоча це включає пакети, які були частиною початкової установки за замовчуванням) без усіх включених залежностей через встановлення цих пакетів.
Щоб вивести результат у текстовий файл:
apt-mark showmanual > list-manually-installed.txt
apt-mark showmanual
насправді. Тут також перелічено тонни автоматично встановлених пакетів, ймовірно, частина базової установки.
apt list --manual-installed
.
dpkg-query
(замість dpkg --get-selections
якого перераховано деякі пакунки, які не встановлені) наступним чином:
dpkg-query -W -f='${PackageSpec} ${Status}\n' | grep installed | sort -u | cut -f1 -d \ > installed-pkgs
Або:
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
у другій системі я зробив це так, що вона встановить пакети.
apt-get install -y $(< installed-pkgs)
зробить це так, що apt-get працює лише один раз і піклується про всі залежності відразу.
sudo apt-get build-dep name-package; sudo apt-get install name-package;
?
Щоб перерахувати всі встановлені пакети,
dpkg -l |awk '/^[hi]i/{print $2}' > 1.txt
або
aptitude search -F '%p' '~i' > 1.txt
або
dpkg --get-selections > 1.txt
Примітка.
Ви отримаєте файл 1.txt в домашній папці або можете вказати власний шлях.
Ви можете використовувати Synaptic для збереження поточного стану встановленої упаковки. У Synaptic виберіть "файл / збереження маркування", введіть ім'я файлу для збереження стану та переконайтесь, що встановіть прапорець "Зберегти повний стан, а не лише зміни".
Файл, збережений від цього, можна завантажити в нову машину, використовуючи "файл / прочитати маркування" в Synaptic.
Рекомендую використовувати план . Незважаючи на те, що він призначений для серверів, він також може бути використаний і на настільних комп'ютерах. Це створить сценарій оболонки / шеф-кухар / маріонетку, який ви можете використовувати для перевстановлення всіх пакунків.
Ви хочете перевстановити пакети вже 12.04, правда?
Якщо так, то це дуже просто. Вам знадобиться "Обліковий запис з єдиним входом у Ubuntu". (Створіть його перед перевстановленням, щоб ваша система синхронізувалася.)
Перейдіть у Центр програмного забезпечення та знайдіть опцію "Синхронізувати між комп’ютерами ..." у меню Файл.
Натиснувши на нього, ви побачите ваш комп'ютер, зареєстрований, і список усіх програм на вашому комп'ютері.
Коли ви встановите свіжий, цей комп'ютер буде вважатися новим.
Вам просто потрібно увійти до свого облікового запису Ubuntu, і ваш попередній комп'ютер буде показаний.
Клацніть на ньому; ви отримаєте список усіх додатків. Виберіть "встановити" в додатку, який ви хочете встановити.
Також є інструмент під назвою Aptik (і командний рядок, і графічний інтерфейс), який може допомогти вам переглянути список усіх встановлених пакетів, з можливістю вибрати / зняти виділення з них, скласти резервний список, а потім відновити той самий набір пакунків у інша система.
Щоб встановити:
sudo add-apt-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install aptik
Детальна інформація: https://teejeetech.in/aptik/
Як видно на скріншоті, Aptik дозволяє також зробити резервну копію та відновити PPA , що, безумовно, буде потрібно для встановлення деяких встановлених пакетів.
apt-get install aptik-gtk
а також
APT-клон . Цей пакет може бути використаний для клонування / відновлення пакунків у підходящій системі.
- Він збереже / відновить пакети, source.list, брелок та автоматично встановлені стани.
- Він також може зберегти / відновити вже не завантажувані пакети, використовуючи dpkg-prepack.
джерело:
man apt-clone
APT-Clone використовується ubiquity
(інсталятором Ubuntu) для процесу оновлення. Це набагато краще, ніж dpkg --get-selections
рішення, оскільки:
Як користуватись
Встановити
sudo apt-get install apt-clone
Зробіть резервне копіювання
sudo apt-clone clone path-to/apt-clone-state-ubuntu-$(lsb_release -sr)-$(date +%F).tar.gz
Відновити резервну копію
sudo apt-clone restore path-to/apt-clone-state-ubuntu.tar.gz
Відновити до новішого випуску:
sudo apt-clone restore-new-distro path-to/apt-clone-state-ubuntu.tar.gz $(lsb_release -sc)
Це робить простий gzipped файл tar, який можна легко редагувати та переглядати перед відновленням на інших машинах. Ось приклад його структури:
/
├── 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
У Unix StackExchange є чудове пояснення, яке описує, як використовувати aptitude для того, щоб перелічити пакунки, не встановлені як залежності, і як порівняти цей список зі списком пакетів за замовчуванням для вашого випуску Ubuntu.
Щоб отримати файл маніфесту для версій для настільних версій 12.04 та новіших, відвідайте цей веб-сайт , оберіть його випуск та прокрутіть униз нижче зображень CD до розділу файлів. Ви знайдете щось на кшталт "ubuntu-12.04.4-desktop-amd64 + mac.manifest", що відповідає вашій архітектурі.
Для версій сервера вам потрібно буде отримати файл маніфесту від ISO, який використовувався для встановлення оригінальної системи. Для VPS або хмарного сервера ваш постачальник може зробити зображення доступними або вам може знадобитися зв’язатися з ними.
Ось приклад використання коду з посилається на публікацію разом із модифікаціями для встановлення на новий сервер.
Старий сервер (код з іншої публікації, вихід збережений у файл):
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
На новому сервері скопіюйте файл за допомогою scp, а потім використовуйте sed, щоб додати «встановити» до кожного рядка (-i виконує вбудовану заміну). Тоді ви можете використовувати список як вхід до 'dpkg --set-select' та встановлювати пакунки з 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
Перш ніж розпочати це завдання, рекомендую прочитати та зрозуміти всі частини публікації, згадані на початку, а потім ознайомтесь із довідковою інструкцією щодо можливості щодо детальної інформації про схеми пошуку.
Я здивований, що apt-cache
команда, призначена саме для цієї мети , не була згадана вище ...
apt-cache pkgnames
Для отримання додаткової інформації запустіть apt-cache --help
:
** apt-кеш - це інструмент низького рівня, який використовується для запиту інформації з файлів бінарного кешу APT Команди: gencaches - Створіть кеш пакету та джерела showpkg - Показати загальну інформацію про один пакет showrc - Показати вихідні записи статистика - Показати основні статистичні дані дамп - Показує весь файл у стислій формі dumpavail - друкує доступний файл для stdout unmet - Показати невиконані залежності пошук - пошук у списку пакунків за схемою регулярного вираження show - Показати читабельний запис для пакету залежно - Показують інформацію про необмежену залежність для пакета rdepends - Показує інформацію про зворотну залежність для пакету pkgnames - Перерахуйте назви всіх пакетів у системі dotty - Створення графіків пакетів для GraphViz xvcg - Створення пакетних графіків для xvcg policy - Показати налаштування політики Параметри: -h Цей довідковий текст. -p =? Кеш пакету. -s =? Кеш джерела. -q Вимкнути показник прогресу. -i Показати лише важливі деп-файли для команди unmet. -c =? Прочитайте цей файл конфігурації -о =? Встановіть довільну опцію конфігурації, наприклад -o dir :: cache = / tmp Додаткову інформацію див. На сторінках керівництва apt-cache (8) та apt.conf (5). **
apt --installed list
дає найкращий результат (як це пропонується у верхній відповіді вище. Хоча apt-cache pkgnames
на перший погляд, здається, це робиться трюк, він перелічує "всі пакунки в системі" (за текстом довідки вище), який також включає пакети, про які вдало знає але насправді не встановлено. Є --installed
варіант, але він, схоже, не працює pkgnames
.
apt-cache pkgnames | wc -l
дає 55909
пакети (система знає про це), тоді як aptitude search '~i!~M' | wc -l
дає 2160
(пакунки явно встановлені, без залежностей).
Про повний пробіг див:
на півдорозі:
dpkg - список
У наведеній нижче команді також будуть перераховані всі встановлені пакети,
grep ' installed ' /var/log/dpkg.log /var/log/dpkg.log.1 | awk '{print $5}' | sort -u
/var/log/dpkg.log*
щоб отримати всі обернені журнали.
Допоможіть цій вікі спільноти - додайте сучасні рішення.
Ця команда повинна створити текстовий файл, що містить встановлені пакети:
dpkg -l | awk '{print $2}' > package_list.txt
Щоб здійснити масове встановлення перелічених пакетів, вам потрібно буде відредагувати "package_list.txt". Видаліть дивні рядки вгорі файлу за допомогою текстового редактора. Потім можна скористатися цією командою для встановлення пакунків із створеного файлу, використовуючи:
xargs < package_list.txt apt-get install -y
Використовуйте цей метод лише в тому випадку, якщо ви хочете, щоб усі поточні пакети були встановлені за допомогою списку ( який включає автоматично встановлені тощо).
Виведіть відповідь 'apt-cache pkgnames' у файл, який ми просто назвемо "package_list.txt". Ви можете досягти цього за допомогою:
apt-cache pkgnames > package_list.txt
Тоді, коли ви хочете встановити пакети з "package_list.txt", ви використовуєте цю команду:
xargs < package_list.txt apt-get install -y
Ми можемо використовувати команду apt-mark showmanual
для подання списку пакунків, які були встановлені вручну або спочатку встановлені за допомогою Ubuntu. Ми захочемо вивести це у файл, який ми просто назвемо "package-list.txt". Використовуйте цю команду, щоб досягти цього:
apt-mark showmanual > package-list.txt
Команда, яку ми використаємо для встановлення пакетів з файлу "package_list.txt", наведена нижче.
xargs < package_list.txt apt-get install -y
Утиліта для спрощення перевстановлення програмних пакетів після оновлення / перевстановлення дистрибутивів на основі Ubuntu.
[ Запуск | Аптик ]
Для отримання інформації про Aptik спробуйте відвідати його офіційну сторінку , а для знімка екрана натисніть тут або перегляньте кінець цього розділу.
Установка Aptik проста. Виконайте такі дії:
Додайте PPA за допомогою:
sudo add-apt-repository -y ppa:teejee2008/ppa
Оновіть apt за допомогою команди нижче.
sudo apt-get update
Встановіть Aptik за допомогою:
sudo apt-get install aptik
apt-mark showmanual
Bash, Unity та Xorg, серед інших. Вони там повинні бути?
Я думаю, що цікаво відзначити apt list --installed
чи dpkg-query --list
фактично використовувати файл, закликаний /var/lib/dpkg/status
позаду, де вся інформація про пакунки - борода.
Тож якщо ви хочете просто розібратися з надзвичайно розширеним списком пакунків cat /var/lib/dpkg/status
.
Примітка. Не змінюйте /var/lib/dpkg/status
файл.
Окрім пакетів APT , багато пакунків із графічним інтерфейсом сьогодні розповсюджуються як оснащення .
Якщо ваш пакунок неможливо знайти apt list --installed
, спробуйте 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 -
...
Також непогано додати /snap/bin
до PATH, щоб ви могли запустити їх з терміналу (робиться автоматично для не-root користувачів).
Пакет dctrl-tools
надає grep-status
інструмент для отримання списку пакунків, позначених як встановлені у вашій системі:
sudo apt install dctrl-tools
Використання:
grep-status -FStatus -sPackage -n "install ok installed"
побачити : man dctrl-tools
https://www.rosehosting.com/blog/list-all-installed-packages-with-apt-on-ubuntu/ :
1. Перерахуйте встановлені програмні пакети на Ubuntu
Для переліку встановлених програмних пакетів на вашій машині ви можете скористатися такою командою:
sudo apt list --installed
Вихід команди буде дуже подібний до наступного, залежно від того, які пакунки встановлені зараз:
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. Використовуйте програму МЕНШЕ
Щоб легко прочитати весь вихід, ви можете скористатися
less
програмою.sudo apt list --installed | less
3. Використовуйте команду GREP
Ви можете шукати конкретний пакет через вихід, використовуючи
grep
програму.sudo apt list --installed | grep -i apache
4. Перерахуйте всі пакунки, що включають Apache
У висновку з вищевказаної команди будуть перераховані всі пакети, що містяться
apache
у їхніх назвах.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 підтримує шаблони, які відповідають назвам пакетів та параметрам списку встановлених
(--installed)
пакетів, оновлених(--upgradeable)
пакетів або всіх доступних(--all-versions)
версій пакетів.5. Використовуйте програму DPKG
Ще одна альтернатива, яку ви можете використовувати для переліку встановлених програмних пакетів на вашому Ubuntu VPS, - це
dpkg
команда.sudo dpkg -l
Вихід команди дасть вам інформацію, таку як назва пакета, версія, архітектура та короткий опис про пакет. Звичайно, ви можете
grep
знову використовувати програму для пошуку певного пакету.sudo dpkg -l | grep -i apache
Вихід повинен бути таким, як показано нижче:
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 .
З конкуренцією цього підручника ви успішно навчилися перераховувати встановлені пакети в Ubuntu.
Є багато способів зробити це. У випадку, якщо ви використовуєте CentOS, як я, ви можете скористатися цим: 1. yum list installed
2.rpm -qa