Содержание
Apt - пакетный менеджер (ПМ) Debian, Ubuntu и пр.
- Графический ПМ : 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
-
- неиспользуемых пакетов : deborphan (отдельная программа)
- название установленного пакета по его файлу : dpkg -S файл
- пакета в репозитории по его файлу : apt-file update && apt-file search файл
- Распаковать пакет : dpkg-deb –extract имя_пакета /путь/к/директории
- Заблокировать обновление пакета : apt-mark hold имя_пакета
- разблокировать: apt-mark unhold имя_пакета
- смотреть заблокированные : apt-mark showhold
Debian Backports - свежие версии программ
Cоздание deb пакета
- Для чего - например опакетить свои скрипты.
- Т.к. используются только ar tar gz - работать будет в любом линуксе
- С бинарниками сложнее - необходима проверка зависимостей в deb дистрибутиве
Создание простого пакета.deb
- mkdir tmp
- Копируем в tmp свои файлы (иерархия от корня)
- deb-make tmp - создает шаблон файла описания 'control'
- Редактируем 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
То же самое с dpkg-deb
- Создать новую директорию, например /tmp/package
- Находясь в каталоге с исходниками, выполнить команду
make install DESTDIR=/tmp/package dpkg-deb -b /tmp/package package_name.deb
Еще можно использовать 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 - бинарник с небольшим количеством зависимостей. Есть под Arch
Приоритет репозитория
Исключить обновление пакетов
sudo apt-mark hold|unhold|showhold
— sfs 2017/05/19 14:33