====== Apt - пакетный менеджер (ПМ) Debian, Ubuntu и пр. ======
*[[http://www.debian.org/doc/manuals/refcard/refcard.ru.pdf|Памятка по командам Debian]]
*[[https://zalinux.ru/?p=5291|Примеры базового и продвинутого использования команд apt, apt-cache, dpkg]]
*[[https://slax9.blogspot.com/p/60-apt.html|ПМ apt]]
*Графический ПМ : Synaptic
===== Операции с пакетами =====
*Обновить
*списки пакетов в репозитории : apt-get update
*все установленные пакеты: apt-get upgrade
*Установить
*пакет из репозитория без рекомендованных пакетов : apt-get install имя_пакета --no-install-recommends
*с заменой имеющихся файлов : apt install -o DPkg::options::="--force-overwrite" имя_пакета
*локальный пакет : dpkg -i /путь/пакет.deb && apt -f install
*с заменой имеющихся файлов : dpkg --force-overwrite -i /путь/пакет.deb
*Загрузить пакет без установки : apt-get install имя_пакета -d --reinstall или apt-get download имя_пакета
*Показать установленные пакеты : dpkg -l
*Удалить
*пакет : apt-get purge пакет
*неиспользуемые пакеты : apt-get autoremove
*[[http://packages.debian.org/|Поиск]]
*неиспользуемых пакетов : deborphan (отдельная программа)
*название установленного пакета по его файлу : dpkg -S файл
*пакета в репозитории по его файлу : apt-file update && apt-file search файл
*Распаковать пакет : dpkg-deb --extract имя_пакета /путь/к/директории
*[[https://itisgood.ru/2020/03/05/tri-sposoba-iskljuchit-uderzhat-predotvratit-obnovlenie-opredelennogo-paketa-s-apt-upgrade/|Заблокировать обновление]] пакета : apt-mark hold имя_пакета
*разблокировать: apt-mark unhold имя_пакета
*смотреть заблокированные : apt-mark showhold
===== Debian Backports - свежие версии программ =====
https://wiki.debian.org/ru/Backports
====== Cоздание deb пакета ======
*Для чего - например опакетить свои скрипты.
*Т.к. используются только ar tar gz - работать будет в любом линуксе
*С бинарниками сложнее - необходима проверка зависимостей в deb дистрибутиве
=====Компиляция=====
https://forum.puppyrus.org/index.php?topic=21917.0
===== Создание простого пакета.deb =====
-mkdir tmp
-Копируем в tmp свои файлы (иерархия от корня)
-deb-make tmp - создает шаблон файла описания 'control'
-[[https://habrahabr.ru/post/78094/|Редактируем control]] (описание пакета)
-deb-make tmp - получаем то_что_написали_в_control.deb
Скрипт deb-make
#!/bin/sh
#170519 sfs
#http://webhamster.ru/mytetrashare/index/mtb0/2046
#https://debian-handbook.info/browse/ru-RU/stable/packaging-system.html
[ ! -d "$1" ] && echo "Create .deb from directory
Usage $o direttory_name" && exit 1
if [ -f control ] ;then
[ "`cat control |wc -m`" = "352" ] && echo "Edit file 'control'" && exit 1
else
echo "\
Package: licq-plugin-icqnd
Architecture: i386
Depends: licq, adobe-flashplugin (= 1:20170509.1-0ubuntu0.14.04.1), libc6 (>= 2.7)
Provides: licq-plugin
Priority: optional
Version: 0.1.9.3
Maintainer: nobody care
Description: graphical user interface plug-in for Licq using GTK2
This package provides the GTK2-based graphical user interface to the Licq
" >control && echo "File 'control' created/ Edit it" && exit
fi
tar czf control.tar.gz control
echo 2.0 > debian-binary
cd "$1" && tar czf ../data.tar.gz *
cd ..
A(){ awk '/^'$1':/ {print $2}' control ; }
ar -qS "`A Package`_`A Version`_`A Architecture`".deb debian-binary control.tar.gz data.tar.gz
То же самое с [[http://webhamster.ru/mytetrashare/index/mtb0/1427|dpkg-deb]]
*Создать новую директорию, например /tmp/package
*Находясь в каталоге с исходниками, выполнить команду
make install DESTDIR=/tmp/package
dpkg-deb -b /tmp/package package_name.deb
Еще можно использовать [[http://webhamster.ru/mytetrashare/index/mtb0/803|checkinstall]]
===== Перепаковка deb =====
*Все делаем от root
*Распаковываем deb в каталог /tmp/package : dpkg-deb -R package_name.deb /tmp/package
*dpkg-deb -b /tmp/package package_name.deb
===== Просмотр control внутри .deb=====
#!/bin/sh
[ ! "$1" ] && echo "List 'control' from .deb
Usage $o *.deb" && exit 1
ar p "$1" control.tar.gz |tar -O -xzf -
====== Создание репозитория ======
*В конце https://habrahabr.ru/post/78094/. reprepro - бинарник с небольшим количеством зависимостей. [[https://archlinux.org/packages/community/x86_64/reprepro/|Есть]] под Arch
*[[https://wiki.debian.org/ru/CreateLocalRepo#C_.2BBD8EPgQ8BD4ESQRMBE4_.2BBEMEQgQ4BDsEOARCBEs__reprepro|Debian Wiki]]
*https://sanych.oneleft.ru/content/reprepro
===== Создание локальной копии репозитория =====
[[https://wiki.astralinux.ru/pages/viewpage.action?pageId=61575159#id-Созданиелокальныхисетевыхрепозиториев-Созданиелокальнойкопиирепозиторияспомощьюapt-mirror|apt-mirror]]
===== Приоритет репозитория =====
*https://debian.pro/3056
*https://interface31.ru/tech_it/2016/03/ispolzuem-apt-pinning-dlya-zakrepleniya-paketov-v-debian-ubuntu.html
--- //sfs 2017/05/19 14:33//