кратко
глянуть пакеты
https://www.debian.org/distrib/packages
http://packages.ubuntu.com/
https://pkgs.org/

содержимое пакетов
https://sources.debian.org/

размер пакетов
apt install debian-goodies
dpigs -n 40 -H

установить набор пакетов
tasksel
установка пакета backports из командной строки
apt-get -t jessie-backports install chromium

установленные пакеты
dpkg --get-selections
dpkg --list
dpkg-query -l '*' | grep '^ii' | awk '{ print $2 }'

все зависимости пакета:
apt-cache showpkg пакет
apt show -a пакет
sudo apt-get install apt-rdepends
sudo apt-rdepends пакет
визуально отобразить
sudo apt-get install graphviz
sudo apt-rdepends -d пакет | dot > пакет.dot
dotty пакет.dot

удалить пакеты с зависимостями:
# apt-get install deborphan
# deborphan | xargs dpkg —purge
# dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg —purge

сохранить пакеты
sudo apt-get install dpkg-repack
sudo dpkg-repack название_пакета

перечислить все доступные пакеты
apt-cache pkgnames |sort

перечислить все пакеты, начинающиеся с «ПАКЕТ»
apt-cache pkgnames ПАКЕТ

в каком пакете содержится файл
apt-file search ИМЯ-ФАЙЛА
dpkg -S $(which -a ИМЯ-ФАЙЛА)


подробней

Все управление пакетами в Debian происходит с помощью следующих простых команд.

Обновление базы доступных пакетов:
sudo apt-get update

Пакеты можно искать через веб-интерфейс или с помощь команды:
apt-cache search mysql | less

Просмотр дополнительной информации о пакете:
apt-cache show mysql-server

Получения списка доступных версий пакета:
apt-cache madison postgresql

Установка пакета:
sudo apt-get install имя_пакета

… или, в случае всяких там Dropbox, Skype и тп:
sudo dpkg -i dropbox_1.4.0_i386.deb

Переустановка пакета:
sudo apt-get install --reinstall имя_пакета

Даунгрейд или установка определенной версии:
sudo apt-get install имя_пакета=версия

Если не переустанавливается, можно попробовать так (осторожно, временно ломаются зависимости):
sudo dpkg --purge --force-depends имя_пакета
sudo apt-get install имя_пакета

Обновление всех пакетов (с подробностями):
sudo apt-get -V upgrade

Запретить/разрешить обновление конкретного пакета:
sudo apt-mark hold имя_пакета
sudo apt-mark unhold имя_пакета

Посмотреть список пакетов на холде:
sudo dpkg --get-selections | grep hold

Проверка контрольных сумм установленных пакетов:
sudo dpkg --verify

Список установленных пакетов и поиск по нему:
dpkg -l | grep firefox

Удаление пакета:
sudo apt-get remove firefox

Удаление вместе с файлами конфигурации:
sudo apt-get purge firefox

Удаление пакетов, которые были установлены в качестве зависимостей и более не требуются:
sudo apt-get autoremove # --purge для удаления конфигов

Чистка кэша deb-пакетов (каталог /var/cache/apt/archives/):
sudo apt-get clean

Просмотр логов — что и когда ставилось:
/var/log/dpkg.*
grep installed /var/log/dpkg.log

Иногда нужно определить, к какому пакету относится файл. Данную задачу можно решить так:
dpkg -S /usr/bin/pstree

А еще можно получить список всех файлов, содержащихся в пакете:
dpkg-query -L package_name

В общем, все легко и просто, если не считать пары моментов. Во-первых, иногда требуется установить какой-нибудь экспериментальный пакет (из ветки sid). Для этого нужно открыть файл /etc/apt/sources.list и дописать в него строчку:

deb http://ftp.ru.debian.org/debian sid main

… после чего говорим «sudo apt-get update», ставим нужный пакет, удаляем строчку из sources.list и вновь говорим «sudo apt-get update».
Во-вторых, некоторые пакеты тянут за собой слишком много лишнего софта. Например, mail-notifications тянет за собой postfix и требует его настроить. Для решения это проблемы следует прописать в /etc/apt/apt.conf следующее:

APT::Install-Recommends "0";

После чего все должно пройти как по маслу:
sudo apt-get update
sudo apt-get install mail-notification

Альтернативное решение, не требующее правки apt.conf:
sudo apt-get --no-install-recommends install mail-notification

Бывает еще так, что нужно создать резервную копию уже установленного пакета. Например, если он по каким-то причинам был удален из репозитория. Такое иногда бывает в случае со внутренними репозиториями компании. Решается эта проблема так:

sudo apt-get install dpkg-repack
sudo dpkg-repack имя_пакета

Из приятных фишек Debian/Ubuntu мне особенно хотелось бы отметить умение выводить суммарный размер пакетов при их установке/удалении, а также способность делать так:

$ dia
Приложение 'dia' может быть найдено в следующих пакетах:
* dia-gnome
* dia
Попробуйте: sudo apt-get install <выбранный пакет>

Чтобы такая же фишка появилась в zsh, нужно прописать в ~/.zshrc:

command_not_found_handler() {
  /usr/lib/command-not-found $1
}


Работа с пакетами исходных текстов

Сборка пакета в среде стабильного дистрибутива обечпечит генерацию .deb с зависимостями, соответствующими пакетам, доступным в дистрибутиве.

Для этого запись deb-src в вашем файле /etc/apt/sources.list должна указывать на нестабильный дистрибутив. Она должна быть разрешена (раскомментирована).
Для скачивания пакетов исходных текстов рекомендуется использовать команду:

$ apt-get source packagename

Команда должна скачать три файла: .orig.tar.gz, .dsc и .diff.gz. В случае, если пакеты создавались исключительно для Debian, последний из них не скачивается и первый файл не имеет вставки "orig" в своем имени.

Файл .dsc пользуется командой dpkg-source для распаковки пакета исходных текстов в каталог packagename-version. Внутри каждого скачанного пакета исходных текстов есть каталог debian/, который содержит файлы, необходимые для создания пакета .deb.

Для автоматического построения пакета из скачиваемых исходных текстов просто укажите ключ -b в командной строке, примерно так:

$ apt-get -b source имяпакета

Если вы рашаете не создавать .deb при скачивани, то вы можете создать его позже командой:

$ dpkg-buildpackage -rfakeroot -uc -b

из каталога, который был создан для пакета после скачивания.

для того, чтобы пакет можно было собрать, нужны некоторые заголовочные файлы и совместно-используемые библиотеки. Все пакеты исходных текстов имеют в своих управляющих файлах поле 'Build-Depends:', которое указывает дополнительные пакеты, которые необходимы для построения пакета из исходных текстов.

APT имеет простой метод скачивания этих пакетов. Просто запустите apt-get build-dep package, где `package' - это имя пакета, который вы собираетесь построить

apt-get build-dep имяпакета

краткая справка:


apt-get

apt-get update - обновление базы пакетов
apt-get upgrade - обновление всех установленных пакетов
apt-get install название_пакета - установить пакет
apt-get purge название_пакета - полное удаление (не удаляет файлы в дом каталоге)
apt-get remove название_пакета - удаление с сохранением его конфигурационных файлов
apt-get check - узнать о конфликтующих пакетах, а также поломанных зависимостях пакетов
apt-get -f install название_пакета - исправить нарушенные зависимости
apt-get -h - справка

dpkg

dpkg -l - отобразить список всех установленных пакетов
dpkg -l | grep name - отобразить список всех установленных пакетов, в названии которых есть "name"
dpkg -S /bin/ping - найти пакет, в который входит указанный файл
dpkg -s название_пакета - отобразить информацию по конкретному пакету
dpkg -i /путь/к/пакету/название_пакета. deb - установить или обновить пакет
dpkg -i *.deb - установка всех deb пакетов из текущей папки
dpkg -r название_пакета - удалить пакет, но сохранить файл конфигурации
dpkg -P название_пакета - удалить пакет и удалить файл конфигурации
dpkg -h - справка
dpkg-reconfigure


aptitude

aptitude update - обновление базы пакетов
aptitude upgrade - обновление всех установленных пакетов
aptitude full-upgrade - обновление системы

aptitude search название_пакета - поиск пакета

Значения основного статуса:

* i (от installed) - пакет установлен в системе:
* p (от purge) - пакет не был установлен или был удален "вчистую";
* c (от clean) - пакет, удаленный с сохранением конфигурационных файлов;
* v (от virtual) - т. н. виртуальные пакеты, то есть просто списки реальных пакетов, один из которых будет использоваться в той или иной ситуации.

Дополнительный статус:

* A (от Auto) - пакет был установлен не самостоятельно, а автоматически, как зависимость другого пакета;
* h (от hold) - для пакета зафиксирована его текущая версия, то есть он не будет обновляться при выполнении операторов upgrade и dist-upgrade;
* u (от unpacked) - пакет был получен, распакован, но не инкорпорирован в файловую систему и не сконфигурирован;
* C (от half-Configured) - пакет, установка которого оборвалась на стадии конфигурирования;
* H (от Half-installed) - пакет, установка которого оборвалась на стадии инсталляции;
* B (от Broken) - т. н. "сломанные" пакеты - то есть содержащие ошибки внутри себя или утратившие свои зависимости.

aptitude show название_пакета - информация о пакете
aptitude install название_пакета - установка/обновление пакета
aptitude remove название_пакета - удаление с сохранением его конфигурационных файлов
aptitude purge название_пакета - полное удаление (не удаляет файлы в дом каталоге)
aptitude purge ~c - удаление кофигурационных файлов удалённых пакетов
aptitude remove или aptitude purge "~name" - удалить все пакеты имеющие в своём названии "name"
aptitude autoclean - удалить неиспользуемые пакеты из кэша
aptitude clean - удалить все пакеты из кэша
Полезные опции:
-h справка
-s ничего не делать, имитировать выполнение
-d только загрузить - не устанавливать и не распаковывать архивы
-y предполагается ответ Yes на все вопросы, сами вопросы не выводить
-f принудительно исправлять неработоспособные пакеты
-u показывать список обновленных пакетов

некоторые рецепты



dpkg --get-selections | grep -v deinstall > backup.txt
sudo dpkg --set-selections < backup.txt
sudo apt-get -y update
sudo apt-get dselect-upgrade

tac /var/log/apt/history.log |head --lines=225
tail -n 125 /var/log/apt/history.log
dpkg --get-selections | sed -n 's/\t\+install$//p'
dpkg -l | grep ^rc | awk '{print($2)}' | xargs sudo apt-get -y purge

приоритет установки пакетов:
https://wiki.debian.org/ru/AptPreferences
https://www.debian.org/doc/manuals/apt-howto/ch-apt-get.ru.html
https://www.opennet.ru/openforum/vsluhforumID3/120590.html#43

Значения веса приоритета могут быть следующими:
P >= 1000 - пакет будет установлен, даже если это приведет к понижению версии уже установленного пакета
990 <= P < 1000 - пакет будет установлен, если не установлена более новая версия
500 <= P < 990 - пакет будет установлен, если нет пакета принадлежащего к целевому выпуску или не установлена более новая версия
100 <= P < 500 - пакет будет установлен, если нет кандидатов из других источников или установленного пакета более новой версии
0 < P < 100 - пакет будет установлен, если нет других кандидатов и установленных пакетов любой версии
P < 0 - пакет не будет установлен ни при каких условиях
P = 0 - неопределенное состояние, не используется

ONE of theese files content:
1. nano /etc/apt/preferences
2. mcedit /etc/apt/preferences.d/security.pref

## STABLE ###############

Package: *
Pin: release a=debian-security
Pin-Priority: 1001

Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release a=stretch-backports
Pin-Priority: 800

Package: *
Pin: release a=testing
Pin-Priority: 700

Package: *
Pin: release a=unstable
Pin-Priority: 500

Package: *
Pin: release a=experimental
Pin-Priority: 100

Package - на какие пакеты распространяется приоритет. Звёздочка говорит что на все без исключения.
Pin - название ветки дистрибутива.
Pin-priority - собственно, приоритет. Чем он выше - тем жёстче будет закреплена ветка. Приоритет выше 1000 позволит произвести даунгрейд пакетов до той ветки, в которой он установлен. Потому если вы переборщили с экспериментами - выставляйте на stable приоритет 1001, обновляйте список пакетов и делайте dist-upgrade.

Как мы видим, репозиторий unstable у нас имеет наименьший приоритет. Возможно он вам не понадобится, но включить его нужно по той причине, что бывает программу переместили в testing, а часть её зависимостей осталась в unstable. И программа, естественно, не установится.

Просмотр логов — что и когда ставилось:
https://system-admins.ru/kak-uznat-kogda-ustanovlen-ili-obnovlen-paket-debian-ili-ubuntu/
/var/log/dpkg.*

Список пакетов по дате установки
tail -f /var/log/dpkg.log
less /var/log/dpkg.log
more /var/log/dpkg.log

/var/log/dpkg.log может быть ротирован или сжат с использованием Logrotate инструмента. Для просмотра списка всех файлов, введите:
ls -l /var/log/dpkg.log*

Используйте команду zgrep или zmore чтобы просматривать файлы gzip:
zmore /var/log/dpkg.log.4.gz
zless /var/log/dpkg.log.4.gz
zgrep 'remove' /var/log/dpkg.log.4.gz

Просмотреть дату и время установки пакетов
grep installed /var/log/dpkg.log

Аналогично для архивного файла
zgrep installed /var/log/dpkg.log.4.gz

Просмотреть дату и время обновления пакетов
grep upgrade /var/log/dpkg.log
grep upgrade /var/log/dpkg.log.2
zgrep upgrade /var/log/dpkg.log.3.gz

Просмотреть дату и время удаленных пакетов
grep remove /var/log/dpkg.log
grep remove /var/log/dpkg.log.2
zgrep remove /var/log/dpkg.log.3.gz

/var/log/apt/history.log
Файл var/log/apt/history.log также содержит некоторую полезную информацию

tail -f /var/log/apt/history.log
more /var/log/apt/history.log
less /var/log/apt/history.log
grep -A4 -B4 'yyyy-mm-dd' /var/log/apt/history.log
grep -A4 '2016-01-14' /var/log/apt/history.log

Результат
Start-Date: 2016-01-15 14:17:15
Commandline: apt-get upgrade
Upgrade: isc-dhcp-common:amd64 (4.2.4-7ubuntu12.3, 4.2.4-7ubuntu12.4), isc-dhcp-client:amd64 (4.2.4-7ubuntu12.3, 4.2.4-7ubuntu12.4)
End-Date: 2016-01-15 14:17:25

манипуляции с пакетами на примере Viber
https://linuxthebest.net/kak-vse-taki-ustanovit-viber-v-debian-gnu-linux-i-ubuntu/
sudo dpkg -i viber.deb
sudo apt install -f
Она должна была бы доустановить недостающие зависимости, но сейчас просто удалит криво установленый Viber, потому что он нам ни к чему.

Открываем терминал в каталоге с пакетом «viber.deb» и поочередно выполняем:
dpkg-deb -x viber.deb viber
dpkg-deb --control viber.deb viber/DEBIAN

ищем в долгом списке после слова «Depends:» libcurl3 и перепечатываем на libcurl4
внимание — очень важный шаг, без которого метод не сработает. Обязательно нужно удалить пустую строку в этом же файле. Она прячется в самом конце. сохраните документ и вернитесь обратно в терминал
dpkg -b viber viberlibcurl4.deb

Менеджер dpkg создаст пакет «vibercurl4.deb». Тепер его можно установить любым способом. Например, так:
sudo dpkg -i viberlibcurl4.deb

ещё способ (как пример сборки пакета)
Откройте консоль и выполните там несколько команд.
Первой командой мы устанавливаем зависимости:
sudo apt install libxss1 `apt-cache search libssl1.0.[0-9] | awk '{ print $1 }'` libpulse0 libasound2 libnss3 libxcomposite1 libxcursor1 libxdamage1 libcurl4 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-pulseaudio gstreamer1.0-libav libssl1.0-dev

Скачиваем сам пакет:
wget https://download.cdn.viber.com/cdn/desktop/Linux/viber.deb

Распаковываем скаченный пакет deb:
ar x viber.deb

Распаковываем контрольный архив:
tar xzf control.tar.gz

Делаем крошечный патч: меняем libcurl3 на libcurl4 в файле control. Дело в том, что libcurl3 — это устаревшая версия библиотеки и она больше недоступна в репозиториях, так как заменена версией libcurl4 Дополнительно мы меняем запись libssl1.0.0 на ту версию пакета, которая доступна в системе:
sed -i 's/libcurl3/libcurl4/' ./control
sed -i "s/libssl1.0.0/`apt-cache search libssl1.0.[0-9] | awk '{ print $1 }'`/" ./control

Вот и всё — мы пропатчили всё что нужно, теперь осталось собрать пакет обратно.
tar --ignore-failed-read -cvzf control.tar.gz pre{inst,rm} postinst md5sums control

Вновь собираем deb:
ar rcs viber_fixed.deb debian-binary control.tar.gz data.tar.xz

Устанавливаем наш пофиксенный пакет:
sudo dpkg -i viber_fixed.deb

Как установить пакет, для которого отсутствует зависимость нужной версии

получить полный список всех зависимостей пакета
Как скачать рекурсивные зависимости пакета в Ubuntu
Как получить список зависимостей пакета с «под зависимостями» в APT или dpkg?

PKG=название_пакета

Перечислить все рекурсивные зависимости:

apt-rdepends $PKG




вывести рекурсивные зависимости в столбики:



скачать пакет вместе со всеми рекурсивными зависимостями:



перейти в папку и установить:
$ sudo dpkg -i *

создать индекс загруженных пакетов, перейдите в расположение, в котором хранятся пакеты, и выполните следующую команду:
$ dpkg-scanpackages . | gzip -c9 > Packages.gz

Добавьте эту папку в список источников APT, используя следующую команду:
$ echo "deb[trusted=yes] file:///путь_к_каталогу/с_пакетом ./" | sudo tee -a /etc/apt/sources.list

Обновите индекс пакета, используя команду:
$ sudo apt-get update

Наконец, установите пакет $PKG с помощью менеджера пакетов APT:
$ sudo apt-get install $PKG

ошибки
Невозможно инициализировать соединение с debian.map.fastlydns.net:80 (2a04:4e42:14::644). - connect (101: Сеть недоступна) Не удалось соединиться с debian.map.fastlydns.net:80 (151.101.86.132): время ожидания для соединения истекло

https://www.reddit.com/r/linux4noobs/comments/13y8wk7/facing_issue_0_connecting_to/
0% [Соединение с debian.map.fastlydns.net (2a04:4e42:14::644)] [Соединение с debian.map.fastlydns.net (2a04:4e42:14::644)] [Ожидание заголовков]
это происходит из-за ограничения fup моего провайдера

https://www.linux.org.ru/forum/general/16900016
Репозиторий «http://ftp.ru.debian.org/debian-security bookworm Release» не содержит файла Release.
в местной сетке оборудование в режиме MiM, подменяет траффик
Пропиши https://ftp.debian.org/debian в своём репозитории (https вместо http)

при установке dpkg -i
dpkg: ошибка при обработке пакета название_пакета (--install):
проблемы зависимостей — оставляем не настроенным
делаем
apt install -f
dpkg --configure -a

снятие блокировки apt-get
sudo fuser /var/cache/debconf/config.dat
kill -9 №такой_то
sudo dpkg --configure -a
sudo apt-get -f install

«Could not get lock /var/lib/dpkg/lock»
Устранение ошибки «Could not get lock /var/lib/dpkg/lock»
ps aux | grep -i apt
sudo killall apt apt-get

lsof покажет каким процессом используется lock-файл.

sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/dpkg/lock-frontend
sudo lsof /var/lib/apt/lists/lock
sudo lsof /var/cache/apt/archives/lock
sudo kill -9 ID_процесса

удалить файл блокировки следующими командами.
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend

ошибка блокировки apt-cache, такой как /var/cache/apt/archives/lock, удалите файл блокировки,
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock

затем перенастроить dpkg и очистите локальный репозиторий от любых остатков, которые могли сохраниться в файле /var/cache.
sudo dpkg --configure -a
sudo apt clean


Как исправить ошибку «E: Sub-process /usr/bin/dpkg returned an error code (2)»

Для начала попробуйте выполнить следующие команды:
sudo rm /var/lib/dpkg/available
sudo touch /var/lib/dpkg/available
sudo sh -c 'for i in /var/lib/apt/lists/*_Packages; do dpkg --merge-avail "$i"; done'

И вновь повторите операцию (установку или обновление), которая вызывала ошибку.
Если предыдущие команды не помогли, то попробуйте следующие:

sudo dpkg --configure -a
sudo apt -f install
sudo apt clean
sudo apt update && sudo apt-get upgrade

Если и это не помогло, то присмотритесь внимательно к ошибке — упоминается ли в ней имя какой-либо программы (пакета)? Если да то перейдите в директорию /var/lib/dpkg/info
cd /var/lib/dpkg/info

Теперь удалите файлы ПАКЕТА, который вызывает ошибку:
sudo rm ПАКЕТ*

Вновь запускаем команду исправления:
sudo apt install -f && sudo dpkg --configure -a

Затем устанавливаем пакет по новой.
Если проблема по-прежнему осталась, то запускаем команду в режиме отладки и смотрим на выводимые сообщения:
sudo DEBCONF_DEBUG=developer apt install -f


Создаём свой репозиторий с deb-пакетами
dpkg-scanpackages
Создание deb-пакетов. Первые шаги в PPA
Пересобираем mc с поддержкой samba
fakeroot dpkg-deb --build пакет

Как конвертировать пакеты в Ubuntu, используя Alien

https://fpm.readthedocs.io/en/latest/
https://github.com/jordansissel/fpm

pbuilder
http://devhead.ru/read/pbuilder
pbuilder — это интересное средство, позволяющее нам создать архив, хранящий в себе образ свежеустановленной Debian или Ubuntu в минимальной комплектации — то есть, только с самыми необходимыми пакетами.

Настройка
Для начала создаем файл конфигурации ~/.pbuilderrc. Вот его примерное содержимое:
# названия дистрибутивов Ubuntu
#UBUNTU_SUITES=("karmic" "jaunty" "intrepid" "hardy" "gutsy")
#MIRRORSITE="http://mirror.yandex.ru/ubuntu/"
# компоненты дистрибутива по умолчанию
COMPONENTS="main restricted universe multiverse"

# выбираем дистрибутив для использования
: ${DIST:="$(lsb_release --short --codename)"}

# а также архитектуру
: ${ARCH:="$(dpkg --print-architecture)"}

# ну и давайте определим имя, которым мы будем обозначать отдельный образ
NAME="$DIST"
if [ -n "${ARCH}" ]; then
NAME="$NAME-$ARCH"
# следующая строчка нужна для того чтобы собирать под разные архитектуры
DEBOOTSTRAPOPTS=("--arch" "$ARCH" "${DEBOOTSTRAPOPTS[@]}")
fi

# где мы будем создавать, а потом искать файл образа
BASETGZ="/home/andrey/build/pbuilder/$NAME-base.tgz"
DISTRIBUTION="$DIST"

# и куда мы будем класть собранные пакеты
BUILDRESULT="/home/andrey/build/pbuilder/$DIST/result/"

# тут у нас будет лежать кэш слитых из сети пакетов
APTCACHE="/home/andrey/build/pbuilder/$NAME/aptcache/"

# а в это место будет распаковываться образ для сборки
BUILDPLACE="/home/andrey/build/pbuilder/build/"

# еще можно раскомментировать следующие два параметра по необходимости:
# примонтировать каталог вашей системы в такой же каталог образа
#BINDMOUNTS="/var/cache/archive"
# подключить дополнительное зеркало помимо стандартного
#OTHERMIRROR="deb file:///var/cache/archive unstable main"

Файл конфигурации я взял здесь и закомментировал или удалил то что посчитал ненужным


Создание образа системы
Создать образ какой-нибудь системы можно например, так:

$ sudo ARCH=i386 DIST=jaunty pbuilder --create
Где i386 архитектура создаваемого образа, а jaunty название дистрибутива. Если вы собираете пакет под текущие дистрибутив и архитектуру то можно просто написать:

$ sudo pbuilder --create

Сборка пакетов
Для создания базового образа для архитектуры i386 под x86_64

/usr/sbin/pbuilder create --debootstrapopts --arch --debootstrapopts i386
Для сборки пакета для архитектуры i386 под x86_64
sudo DIST=karmic ARCH=i386 linux32 /usr/sbin/pbuilder build mypaint_0.7.1-2.dsc

Руководство по созданию пакетов Ubuntu!
PbuilderRussianDocumentation Pbuilder
PbuilderHowto
Сборка пакетов. Глава 3. Chroot. Mock. Pbuilder
Как собирать/бэкпорчить deb пакеты
Раздел полезных советов: Перекомпиляция пакета в Debian и Ubuntu
Стать мэинтейнером — часть пятая
Создание локального репозитария
ubuntu-вский apt-get update в pbuilder-е

Компиляция пакетов
1)Установим программу auto-apt командой
sudo apt-get install auto-apt
2)Командой cd переходим в директорию с распакованными исходниками и применяем команду
sudo auto-apt update && auto-apt -y run ./configure
Эта команда автоматически скачает и установит все необходимые файлы и библиотеки, т. е. удовлетворит все зависимости.
3)Теперь командой sudo checkinstall -D создадим deb-пакет, использующийся в дистрибутивах основанных на Debian, например Ubuntu.
4)Теперь этот пакет можно устанавливать: либо командой
sudo dpkg -i pocket_name.deb
Либо двойным щелчком по пакету.
5)Всё вышенаписанное применимо к основанным на Debian дистрибутивах.
Также если запустить sudo checkinstall -R получим rpm-пакет, применяемый в Fedora, RHEL, ASP Linux, ALT Linux, Mandriva, openSUSE.
Если же запустить sudo checkinstall -S получим пакет применяемый в Slackware.

auto-apt делает тоже, что и apt-get build-dep, но может использоваться и для пакетов, отсутствующих в репозитории.
auto-apt нужен только в том случае если такого пакета нет в репозиториях, иначе зависимости можно устанавливать просто через apt командой
apt-get build-dep имя-пакета

Как создать и установить фиктивный пакет
Как в Linux симулировать установку пакета (Как создать и установить фиктивный пакет)
Можно столкнуться с проблемой, что в системе отсутствует нужная зависимость. Выход из этой ситуации — установить фиктивный пакет.
Существует пакет Debian под названием equivs, которая может создавать фиктивные пакеты. Установите его, запустив
sudo apt install -y equivs

Из-за неразрешённых зависимостей я не смог установить пакет с equivs в проблемную ОС — для помощи я воспользовался другим компьютером.

После установки вы создайте файл «control» шаблона с помощью следующей команды:
equivs-control ИМЯ_ФАЙЛА

Например:
equivs-control qt5-default

Можно использовать альтернативное имя пакета, например postfix-custom для postfix или что-то ещё.
Откроем сгенерированный файл для редактирования:
gedit qt5-default

Пример содержимого в моём случае:



Строки с комментариями показывают, какие значения по умолчанию будут применены при создании пакета — можете удалить эти строки или раскомментировать и указать своё значение.

Также в строке «Package» впишите имя пакета, у меня получилось так:



С помощью строки «Provides» можно сказать, что мой пакет предоставляет возможности, предлагаемые другим пакетом, который я пытаюсь подделать.

Наконец, после создания файла управления шаблоном используйте команду equivs-build для создания поддельного пакета, например
equivs-build /ПУТЬ/ДО/СГЕНЕРИРОВАННОГО/КОНТРОЛЬНОГО/ФАЙЛА

В моём случае это:
equivs-build qt5-default

Сборка пакета займет несколько секунд, а затем вы можете запустить
sudo dpkg -i ИМЯ_ПАКЕТА*.deb

Например, в моём случае после переноса пакета на проблемную систему команда следующая:
sudo dpkg -i qt5-default_5.15.2_all.deb

После установки пакета работа менеджера пакетов пришла в норму — вновь возможно устанавливать и удалять пакеты, обновлять систему.
Для опытных пользователей, если ваш файл управления шаблоном имеет строку «Requires», вы можете создавать метапакеты, для установки группы программ.

ссылки
Руководство начинающего разработчика Debian
https://debian-handbook.info/browse/ru-RU/stable/
http://eax.me/debian-packages/
https://wiki.debian.org/ru/PackageManagement
https://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.ru.html
https://www.debian.org/releases/testing/mipsel/release-notes/ch-upgrading.ru.html
https://wiki.debian.org/ru/AptPreferences
Сборка deb-пакетов при помощи pbuilder
Стать мэинтейнером — часть пятая
Linux - начинающим. Часть 5. Управление пакетами в Debian и Ubuntu
[HOWTO] Сборка ПО и создание .deb-пакетов из исходников в Ubuntu (Debian)
Создание RPM или DEB пакетов с Checkinstall в Linux
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

uzverss: (Default)
uzverss

December 2024

S M T W T F S
12345 67
891011121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 8th, 2025 02:41 pm
Powered by Dreamwidth Studios