Два пути как переустановить всё текущее ПО вашей системы в свежеустановленной Ubuntu

Обновлено: 15.04.2010 в 00:05 Путей больше))
applНебольшая заметка, на тему установки\переустановки программного обеспечения в Ubuntu. Иногда случается так, что вам необходимо переустановить систему, поставить “с нуля” свежую версию Ubuntu или еще че нить. Методы которые будут описаны ниже, так же пригодны и для того, что-бы установить все существующее ПО с вашей системы на системе друга, брата, зятя, свата etc.. Данные методы отличаются тем, что в обоих случаях на машинах где вы будете устанавливать ПО необходимо подключение к Сети. Это не локальный репозетарий закатанный в iso-файл или на болванку\и. Статья любезно предоставлена к переводу сайтом WebUpd 8 (странное название). Как реализовать оба метода смотрите под катом.

Метод первый (простой)

Шаг 1

Давайте скажем так, вам будет необходимо ПО вашей текущей системы, на системе новой, будь то Debian или Ubuntu, не важно. Первое что нам необходимо сделать, это составить список всего установленного ПО в вашей системе.
Делаем это так:

sudo dpkg --get-selections > installed-applications.txt
sudo dpkg --get-selections > installed-applications.txt

Итак выполнено, мы получили файл со всем установленным ПО.

Шаг 2

Теперь нам необходимо установить всё это добро из файла installed-applications.txt на новую систему или на другой компьютер. Если это будет другой компьютер, то не забудьте этот файл туда перенести (по сети или с помощью флеш-накопителя) Делаем следующее:

sudo dpkg --set-selections < installed-applications.txt
sudo apt-get -y update
sudo apt-get dselect-upgrade
sudo dpkg --set-selections < installed-applications.txt
sudo apt-get -y update
sudo apt-get dselect-upgrade

Дополнение

Как выяснилось есть еще пути:
Например вот...
Получаем список ПО из системы:

sudo dpkg- l | awk '{print $2}' > installed_packages.txt
sudo dpkg- l | awk '{print $2}' > installed_packages.txt

На новой системе выполняем установку:

sudo apt-get install `cat installed_packages.txt`
sudo apt-get install `cat installed_packages.txt`

И еще один метод. Осторожно не проверенный.
Получаем список ПО из системы:

sudo aptitude search -F "%p" '~i!~M' > instman.txt
sudo aptitude search -F "%p" '~i!~M' > instman.txt

На новой системе выполняем установку:

sudo aptitude install `cat  instman.txt
sudo aptitude install `cat  instman.txt

За сим всё. Первый метод как видите прост и неприхотлив.

И наконец всё тоже самое но с использованием Synaptic. Открываем его, нажимаем Файл - Сохранить отметки пакетов как. Сохраняем файл предположим на флешку. На новой системе снова таки открываем Synaptic, нажимаем Файл - Загрузить отметки пакетов и указываем путь к сохраненном ранее файлу.

Метод второй (более сложный)

Второй метод немного сложнее, здесь будет необходимо создать *.deb файл и править контрольный файл. Для тех, кто уже сталкивался с созданием deb-файлов способ запутанным не покажется. Созданный нами файл так же можно будет использовать на разных машинах под управлением Debian\Ubuntu.

Шаг 1. Подготовка.

На этом шаге, мы установим вспомогательную программу equivs и создадим папку с названием нашего будущего пакета. Так же, мы создадим контрольный файл для deb-пакета.

Устанавливаем пакет equivs (будет много зависимостей):

sudo apt-get install equivs
sudo apt-get install equivs

Создаем папку для нашего будущего deb-пакета:

cd && mkdir MyPackage
cd MyPackage/
mkdir ubuntu
cd ubuntu/
cd && mkdir MyPackage
cd MyPackage/
mkdir ubuntu
cd ubuntu/

Создаем файл с именем control:

equivs-control control
equivs-control control

следующего содержания (по умолчанию):

cat control 
### Commented entries have reasonable defaults.
### Uncomment to edit them.
Section: misc
Priority: optional
Standards-Version: 3.6.2
 
Package: <package name; defaults to equivs-dummy>
# Version: <enter version here; defaults to 1.0>
# Maintainer: Your Name <[email protected]>
# Pre-Depends: <comma-separated list of packages>
# Depends: <comma-separated list of packages>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
# Architecture: all
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
Description: <short description; defaults to some wise words> 
 long description and info
 .
 second paragraph
cat control 
### Commented entries have reasonable defaults.
### Uncomment to edit them.
Section: misc
Priority: optional
Standards-Version: 3.6.2

Package: <package name; defaults to equivs-dummy>
# Version: <enter version here; defaults to 1.0>
# Maintainer: Your Name <[email protected]>
# Pre-Depends: <comma-separated list of packages>
# Depends: <comma-separated list of packages>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
# Architecture: all
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
Description: <short description; defaults to some wise words> 
 long description and info
 .
 second paragraph

Шаг 1. Контрольный файл.

Итак наш *.deb файл будет содержать список всех установленных на данный момент приложений в системе (в любой момент вы можете модифицировать файл, добавив новое или убрав лишнее). Файл будет весом всего в несколько Kb так будет содержать только мето-данные и информацию о зависимостях.

Очень важно, чтобы перед началом редактирования файла у нас был готовый список установленного ПО. Делаем этот файл следующей командой:

cd
sudo aptitude search -F %p ~i --disable-columns libedataserver | sed 's/$/,/' | tr '\n\r' ' ' | sed 's/, $//' > installed-applications.txt
cd
sudo aptitude search -F %p ~i --disable-columns libedataserver | sed 's/$/,/' | tr '\n\r' ' ' | sed 's/, $//' > installed-applications.txt

Если вы посмотрите на новый файл, то увидите, что все приложения идут в строчку через запятую, таким образом этот файл будет легко вставить в контрольный.

Открываем файл control:

gedit ~/webupd8package/debian/control
gedit ~/webupd8package/debian/control

И теперь заполните все поля, приблизительно так, как показано ниже:

cat control 
### Commented entries have reasonable defaults.
### Uncomment to edit them.
Section: misc
Priority: optional
Standards-Version: 3.6.2
 
Package: mycoolpackage
Version: 1.0
Maintainer: Alex < berber.it@gmail.com >
# Pre-Depends: <comma-separated list of packages>
Depends: <strong>Вставьте сюда содержание файла  installed-applications.txt</strong>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
Architecture: i386
#Copyright: <Under GNU\GPL2 license>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
Description: All my fucking prgramms that I need. 
 long description and info
 .
 second paragraph
cat control 
### Commented entries have reasonable defaults.
### Uncomment to edit them.
Section: misc
Priority: optional
Standards-Version: 3.6.2

Package: mycoolpackage
Version: 1.0
Maintainer: Alex < [email protected] >
# Pre-Depends: <comma-separated list of packages>
Depends: <strong>Вставьте сюда содержание файла  installed-applications.txt</strong>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
Architecture: i386
#Copyright: <Under GNU\GPL2 license>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
Description: All my fucking prgramms that I need. 
 long description and info
 .
 second paragraph

Шаг 3. Создание deb-файла.

Переходим в папку с контрольным файлом.

cd 
cd ~/MyPackage/ubuntu/
cd 
cd ~/MyPackage/ubuntu/

И запускаем команду для генерации долгожданного deb-файла:

equivs-build control 
equivs-build control 

Вот так должно выглядеть сообщение об успешном завершении:

user@linux:~/MyPackage/ubuntu$ equivs-build control
dh_testdir
dh_testroot
dh_clean -k
dh_testdir
dh_testroot
dh_install
dh_installdocs
dh_installchangelogs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: сборка пакета mycoolpackage в файл ../mycoolpackage_1.0_i386.deb.
 
The package has been created.
Attention, the package has been created in the current directory,
not in ".." as indicated by the message above! 
[email protected]:~/MyPackage/ubuntu$ equivs-build control
dh_testdir
dh_testroot
dh_clean -k
dh_testdir
dh_testroot
dh_install
dh_installdocs
dh_installchangelogs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: сборка пакета mycoolpackage в файл ../mycoolpackage_1.0_i386.deb.

The package has been created.
Attention, the package has been created in the current directory,
not in ".." as indicated by the message above! 

Второй метод, он как бы так сказать элегантнее первого, но стоит признать, он немного дольше, а команды используемые во втором методе тяжелее запомнить на память. Т.е. при реализации придется смотреть в мануал.