====== 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//