Jun. 14th, 2016


кратко
глянуть пакеты
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 имя-пакета

установка старого gcc
sudo vim /etc/apt/sources.list.d/bullseye.list
deb http://deb.debian.org/debian bullseye main
deb-src http://deb.debian.org/debian bullseye main
sudo apt update

для докера
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo vim /etc/apt/sources.list.d/archive_uri-https_download_docker_com_linux_debian-bookworm.list
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable

sudo apt install -t bullseye gcc-10 g++-10 linux-compiler-gcc-10-x86

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 12
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
sudo update-alternatives --query gcc

gcc --version
g++ --version
dpkg -l | grep linux-compiler-gcc

Как создать и установить фиктивный пакет
Как в 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», вы можете создавать метапакеты, для установки группы программ.


https://wiki.debian.org/ru/AptPreferences
Создание deb-пакетов. Первые шаги в PPA
Aptly – свой репозиторий с контролем версий
Памятка по управлению пакетами в Debian и Ubuntu

установка дров
ubuntu-drivers devices
ubuntu-drivers autoinstall

запрет обновление пакета
apt-mark hold pppoe - блокируем обновление пакета pppoe
apt-mark unhold pppoe - снимаем блокировку обновления пакета pppoe
apt-mark showhold - показать все пакеты с меткой hold


откат обновления
http://vasilisc.com/problem-apt-get

Для пользователей систем с yum можно откатиться так:
yum history
yum history undo {ЧИСЛО}

в Debian и Ubuntu
grep -A 2 'Start-Date: 2016-01-21 09:42:42' /var/log/apt/history.log | tail -1 >/tmp/packages.txt

Удалим слово
sed -i 's/Install://' /tmp/packages.txt

Нам нужно только имя пакета.
tr ',' '\n' < /tmp/packages.txt | sed '/automatic)/d' | awk '{ print $1}' > /tmp/final.packages.txt

Теперь можно попробовать удалить поставленное. Подумать сто раз над выводом и убрать -s (симуляция) оставляю на вашей совести.
sudo apt-get -s purge `cat /tmp/final.packages.txt | xargs`


назначить приложение по умолчанию
как изменить приложения по умолчанию в debian
Настройка xdg-open под свой файловый менеджер

sudo apt-get install galternatives
sudo galternatives

ls -al /etc/alternatives/
sudo update-alternatives --config x-www-browser

это лучше работает
sudo update-alternatives --set gnome-www-browser /usr/bin/chromium
sudo update-alternatives --set x-www-browser /usr/bin/chromium
xdg-mime query default inode/directory


если не помогает (вместо хрома запускается фирефокс), хотя выставлено Debian Sensible Browser /usr/bin/sensible-browser то в файле x-www-browser заменить firefox-esr на sensible-browser или x-www-browser
либо cp /etc/mailcap ~/.mailcap и заменить там

sudo apt install command-not-found
sudo update-command-not-found

заодно
sudo apt install configure-debian

https://askubuntu.com/questions/18418/how-can-i-set-which-application-is-launched-by-xdg-open
xdg-mime:
xdg-mime query default x-scheme-handler/http
chromium.desktop
xdg-mime query default x-scheme-handler/https
chromium.desktop

xdg-mime default chromium.desktop 'x-scheme-handler/http'
xdg-mime default chromium.desktop 'x-scheme-handler/https'

BROWSER переменная окружения
sensible-browser( /usr/bin/sensible-browser, скрипт-оболочка, который пытается запустить некоторые другие элементы в этом списке)
gnome-www-browser( /usr/bin/gnome-www-browser, символическая ссылка на /etc/alternatives/gnome-www-browser)
x-www-browser( /usr/bin/x-www-browser, символическая ссылка на/etc/alternatives/x-www-browser
www-browser( /usr/bin/www-browser, символическая ссылка на /etc/alternatives/www-browser)
update-alternatives --get-selections


Обновление
https://www.debian.org/releases/testing/i386/release-notes/ch-upgrading.ru.html
Перед обновлением системы до stretch, рекомендуется удалить из системы старые файлы настроек (такие как *.dpkg-{new,old} в /etc.




Обновление до Debian 13 Trixie
sudo apt-get update && sudo apt-get dist-upgrade --autoremove -y
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sudo find /etc/apt/sources.list.d -type f -exec sed -i 's/bookworm/trixie/g' {} \;
sudo apt-get update && sudo apt-get dist-upgrade --autoremove -y

Следующие команды отображают список всех удалённых пакетов, чьи файлы настройки всё ещё остаются в системе (если таковые имеются):
sudo dpkg -l | awk '/^rc/ { print $2 }'


Эти пакеты могут быть удалены с помощью команды apt-get purge.
sudo apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }')


Для истинных джедаев Убунту
git clone https://github.com/wimpysworld/rolling-rhino.git
cd rolling-rhino
less ./rolling-rhino

скрипт обновления системы
nano ~/bin/upd.sh


В моей системе используется файловая система btrfs и поэтому страхуюсь снимками, которые автоматически создаются при работе утилит apt, dpkg и т.д. Удаляю снимки старше 3 дней. Эти строки не актуальны для ext4

sudo apt-btrfs-snapshot delete-older-than 3d
sudo apt-btrfs-snapshot list


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

sudo killall apt apt-get
sudo rm /var/lib/dpkg/lock*
sudo rm /var/cache/apt/archives/lock
sudo dpkg --configure -a
sudo apt clean

https://askubuntu.com/questions/1109982/e-could-not-get-lock-var-lib-dpkg-lock-frontend-open-11-resource-temporari
Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
sudo killall apt apt-get
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*
sudo dpkg --configure -a
sudo apt update


Репозитории
Мировые серверы-зеркала Debian
https://www.debian.org/mirror/list.ru.html

Debian Sources List Generator

список реп
https://www.debian.org/mirror/list
https://ftp.cica.es/Guadalinex/mirror/debian/README.mirrors.txt

найти самые быстрые репы
netselect-apt testing -n -c ru

/etc/apt/sources.list

deb http://deb.debian.org/debian/ trixie main contrib non-free-firmware.
deb-src http://deb.debian.org/debian/ trixie main contrib non-free-firmware.

deb http://security.debian.org/debian-security/ trixie-security main contrib non-free-firmware.
deb-src http://security.debian.org/debian-security/ trixie-security main contrib non-free-firmware.

# trixie-updates, to get updates before a point release is made;
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
deb http://deb.debian.org/debian/ trixie-updates main contrib non-free-firmware
deb-src http://deb.debian.org/debian/ trixie-updates non-free-firmware contrib main

#################################################################################

## deb-multimedia
# apt-get update -oAcquire::AllowInsecureRepositories=true
# apt-get install deb-multimedia-keyring -oAcquire::AllowInsecureRepositories=true
# deb https://www.deb-multimedia.org bookworm main non-free

## WI-FI
# deb http://httpredir.debian.org/debian/ bookworm main contrib non-free non-free-firmware


ошибки
Невозможно инициализировать соединение с 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)


https://wiki.debian.org/ru/UnofficialRepositories
https://wiki.debian.org/ru/Backports
http://linuxoid.in/Полезные_репозитории_для_Debian
https://sites.google.com/site/mydebiansourceslist/
https://sparkylinux.org/wiki/doku.php/repository
https://docs.kali.org/general-use/kali-linux-sources-list-repositories
https://debgen.simplylinux.ch/
Репозитории для Debian
Полезные репозитории для Debian
apt-get и виндовые прокси ( NTLM-proxy, MS Proxy Server ISA ...)
локальный репозиторий debian или ubuntu
добавление ppa репозитория в debian
как добавить ключ репозитория в debian или ubuntu
Добавление ключей репозитория, когда другие способы не помогли
Зеркалирование репозитория Debian - это просто!

Aptly – свой репозиторий с контролем версий
Резервное копирование Ubuntu


добавить недостающие ключи (ppa)




http://snapshot.debian.org/

добавить репозитарий
add-apt-repository ppa:mozillateam/ppa

удалить репозитарий
sudo ppa-purge ppa:mozillateam/ppa

аналог AUR для убунтовых
https://pacstall.dev/
https://github.com/pacstall/pacstall
https://pacstall.dev/packages?page=0&size=25&sortBy=default&sort=asc&filter=&filterBy=name
https://github.com/pacstall/pacstall-programs/tree/master

вывод описания пакета на русском
LANG=ru_RU.UTF-8 apt-cache show xfce4-terminal
echo 'Acquire::Languages { "ru"; "en"; };' | sudo tee /etc/apt/apt.conf.d/99translations > /dev/null

ссылки
Руководство начинающего разработчика 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

Существует несколько различных методов установки Django, каждый из которых имеет свои преимущества в определённых ситуациях.


развернуть

  • Глобальная установка Django из пакета. Официальный репозиторий Ubuntu предоставляет пакеты Django, которые можно без труда установить при помощи менеджера пакетов apt. Этот метод очень прост, но не так гибок, как другие методы. Кроме того, репозиторий может содержать несколько устаревшую версию пакета Django.

  • Глобальная установка Django при помощи pip. Инструмент pip – это менеджер пакетов Python. С его помощью можно выполнить общесистемную установку Django. Он, как правило, предоставляет последнюю доступную версию пакета. Однако глобальные (общесистемные) установки всегда менее гибки.

  • Установка через pip в Virtualenv. Пакет virtualenv позволяет создавать автономные окружения для разных проектов. При помощи этой технологии можно установить Django в каталог проекта, при этом не повлияв на систему в целом. Это позволяет задавать индивидуальные настройки для каждого проекта. Виртуальное окружение (или среда) – гораздо более гибкий вариант установки пакета.

  • Установка разрабатываемой версии через Git. Чтобы установить последнюю разрабатываемую версию вместо стабильного релиза, нужно получить код из репозитория git . Это предоставит новейшие функции и исправления программы; установить такую версию можно как глобально, так и локально. Но имейте в виду: разрабатываемые версии нестабильны.


Выберите наиболее подходящий вариант установки Django и следуйте инструкциям соответствующего раздела данной статьи.


Глобальная установка Django из пакета


Процесс установки Django из официального репозитория Ubuntu очень прост. Для начала нужно обновить список локальных пакетов при помощи apt, а затем установить пакет python-django.


sudo apt-get update

sudo apt-get install python-django


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


django-admin --version

1.6.1


Появившийся номер версии значит, что установка прошла успешно.


Обратите внимание: Эта версия не является последней доступной версией Django.


Глобальная установка через pip


Чтобы глобально установить последнюю стабильную версию Django, используйте инструмент pip, менеджер пакетов Python. Чтобы установить pip, нужно сначала обновить список пакетов:


sudo apt-get update


Чтобы установить pip для Python 2, введите:


sudo apt-get install python-pip


Чтобы установить pip для Python 3, используйте:


sudo apt-get install python3-pip


Теперь менеджер пакетов pip установлен, можно приступать к установке Django. Для Python 2 введите:


sudo pip install django


Для Python 3 наберите:


sudo pip3 install django


Чтобы убедиться, что установка прошла должным образом, введите:


django-admin --version

1.7.5


Как видите, pip предоставляет более новый релиз Django, чем репозиторий Ubuntu.


Установка Django через pip в Virtualenv


Вероятно, наиболее гибким вариантом установки является использование virtualenv. Этот инструмент позволяет создавать виртуальные окружения Python, в которые можно устанавливать любые необходимые пакеты, не влияя на систему в целом. Благодаря virtualenv можно выбирать пакеты для проектов на индивидуальной основе и при этом не беспокоиться о конфликте зависимостей.


Дл начала нужно установить менеджер pip из официального репозитория Ubuntu. Обновите список пакетов:


sudo apt-get update


Для Python 2:


sudo apt-get install python-pip


Для Python 3:


sudo apt-get install python3-pip


После установки pip его можно использовать для установки пакета virtualenv.


Для Python 2 введите:


sudo pip install virtualenv


Для Python 3:


sudo pip3 install virtualenv


Теперь можно создать индивидуальную виртуальную среду для любого проекта. Создайте каталог нового проекта и перейдите в него:


mkdir ~/newproject

cd ~/newproject


Создайте виртуальное окружение в каталоге проекта:


virtualenv newenv


Примечание: Замените условное название newenv своим названием.


Эта команда создаст автономную среду, установит Python и pip в изолированный каталог. Созданный каталог будет содержать файловую иерархию для установки пакетов.


Чтобы установить пакеты в изолированную среду, включите её:


source newenv/bin/activate


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


(newenv)username@hostname:~/newproject$.


В новом окружении используйте pip для установки Django. Вне зависимости от того, какую версию Python вы используете, в виртуальной среде нужно запускать только команду pip. Кроме того, при локальной установке не нужно использовать sudo.


pip install django


Убедитесь, что программа установлена успешно.


django-admin --version

1.7.5


Чтобы покинуть виртуальную среду, используйте команду:


deactivate


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


cd ~/newproject

source newenv/bin/activate


Установка разрабатываемой версии Django из git


Чтобы установить разрабатываемую версию Django, загрузите её из репозитория git.


Для этого установите git при помощи стандартного менеджера пакетов apt. Обновите список пакетов:


sudo apt-get update


А затем установите git и менеджер пакетов pip, который понадобится позже для установки Django. Для Python 2 используйте:


sudo apt-get install git python-pip


Для Python 3:


sudo apt-get install git python3-pip


После установки git клонируйте репозиторий Django. Он содержит новейшие функции и исправления, но не является стабильным. Чтобы клонировать репозиторий в каталог django-dev в домашнем каталоге, введите:


git clone git://github.com/django/django ~/django-dev


После этого установите его при помощи pip. Используйте флаг -e  для установки в режиме editable, поскольку это необходимо при установке через систему контроля версий. Для Python 2:


sudo pip install -e ~/django-dev


Для Python 3:


sudo pip3 install -e ~/django-dev


Введите следующую команду, чтобы убедиться, что установка прошла успешно:


django-admin --version

1.9.dev20150305171756


Примечание: Этот метод можно применить в виртуальной среде и таким образом изолировать нестабильную версию Django.


Создание проекта Django


После установки Django ознакомьтесь с основами использования этого фреймворка.


Для создания проекта используется команда django-admin:


django-admin startproject projectname

cd projectname


Эта команда создаст каталог projectname в текущем каталоге и поместит в него скрипт управления и другой каталог по имени projectname с текущим кодом.


Примечание: Находясь в каталоге проекта, созданном при помощи virtualenv, Django может разместить скрипты управления и внутренние каталоги в текущем каталоге при помощи следующей команды (обратите внимание на точку в конце стоки):


django-admin startproject projectname .


Чтобы сгенерировать базу данных в более новых версиях Django (по умолчанию используется SQLite), введите:


python manage.py migrate


Если команда migrate не работает, значит, текущая версия Django является более старой и не поддерживает её. В таком случае используйте:


python manage.py syncdb


При этом Django попросит создать учётную запись администратора; укажите имя пользователя, электронный адрес и пароль.


При использовании команды migrate нужно создать учётную запись администратора вручную. Для этого наберите:


python manage.py createsuperuser


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


Создав пользователя, можно запустить сервер разработки Django, чтобы ознакомиться с внешним видом нового проекта. Имейте в виду: этот сервер нужно использовать только в процессе разработки, для производства он не подходит. Запустите:


python manage.py runserver 0.0.0.0:8000


В браузере посетите IP-адрес, задав порт:


server_ip_address:8000


Это откроет приветственную страницу Django.


Если добавить в конец ссылки сегмент /admin, на экране появится страница входа для администратора.


server_ip_address:8000/admin


Введите имя и пароль администратора, чтобы получить доступ к панели управления.


Ознакомившись со стандартным проектом, остановите сервер разработки, введя в терминал CTRL-C.



ссылки
https://www.8host.com/blog/ustanovka-veb-frejmvorka-django-v-ubuntu-14-04/
https://beget.ru/articles/webapp_python
http://klen.github.io/create-python-packages.html
http://tutorial.djangogirls.org/ru/installation/
http://adw0rd.com/2012/6/19/python-virtualenv/
http://tutorial.djangogirls.org/ru/installation/
http://proft.me/2010/04/3/python-i-okruzhenie-virtualenv/
http://www.unix-lab.org/posts/virtualenv/
http://asvetlov.blogspot.ru/2014/05/pip.html
https://www.8host.com/blog/obshhie-instrumenty-python/
Почему я ненавижу virtualenv и pip

http://djbook.ru/rel1.9/topics/install.html
uzverss установка Django в virtualenv с помощью pip через proxy

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 Jun. 14th, 2026 08:01 pm
Powered by Dreamwidth Studios