Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>shell utils system apt dpkg NO_PUBKEY}} ====== Менеджер пакетов APT: вопросы и ответы ====== * [[system:dpkg|dpkg]] - работа с пакетами * [[:add-apt-repository]] * [[system:aptitude]] ====== Популярное ====== <code bash> $ apt istall ifupdown $ apt autoremove -f $ apt purge ifupdown $ apt-file search ifupdown $ apt-file list ifupdown </code> ==== Update apt-get ==== NO_PUBKEY <code bash> $ apt-get autoclean $ apt-get autoremove $ apt-get -f install $ apt-key list | grep "expired:" $ apt-get update $ apt-get upgrade $ apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FCEF32E745F2C3D5 </code> ==== Upgrade aptitude ==== <code bash> $ aptitude update $ aptitude dist-upgrade $ reboot $ aptitude update $ aptitude -f install $ reboot </code> ===== apt-cache policy ===== apt-cache policy mysql-client-8.0 mysql-community-client <code> mysql-client-8.0: Установлен: (отсутствует) Кандидат: (отсутствует) Таблица версий: mysql-community-client: Установлен: (отсутствует) Кандидат: 8.0.28-1ubuntu20.04 Таблица версий: 8.0.28-1ubuntu20.04 500 500 http://repo.mysql.com/apt/ubuntu focal/mysql-8.0 amd64 Packages </code> ===== Q: Downgrade или Как понизить версию пакета ===== * apt-cache showpkg package-name * apt-get install packagename=version * apt-get install firefox=59.0.2+build1-0ubuntu1 * apt-mark hold packagename =====Q: Что такое apt?===== A: apt - это Advanced Packaging Tool, система управления пакетами, то есть набор программ для установки, удаления, поиска бинарных пакетов определенных форматов. =====Q: В каких дистрибутивах используется apt?===== A: apt первоначально был разработан для дистрибутива Debian и формата пакетов deb. Ныне используется во всех клонах Debian (Ubuntu, Kubuntu, Mepis, Xandros), а также в некоторыхх rpm based дистрибутивах (например, в Altlinux). =====Q: Как обновить дистрибутив ===== * apt-get -f dist-upgrade =====Q: Какие утилиты входят в состав пакета apt?===== apt-cache - средство для работы с кэшами пакетов (например, поиса пакетов по ключевым словам), apt-extracttemplates, apt-sortpkgs, apt-cdrom, apt-ftparchive, apt-key, apt-config, apt-get - средство установки и удаления пакетов, apt-setup =====Q: Как обновить список пакетов?===== A: apt-get update пройдет по всему списку указанному у вас в /etc/apt/sources.list и обновит списки пакетов по всем репозиториям. =====Q: Списки я обновил, как теперь обновить сами пакеты?===== A: apt-get upgrade - менее "интеллектуальный" вариант, обновляющий пакеты, которые есть в системе; apt-get dist-upgrade - более "интеллектуальный" вариант, который следит за тем, не сменили ли пакеты имя и пытающийся обновлять более важные пакеты даже ценой удаления менее важных. =====Q: А я не хочу все обновлять, как мне обновить только один пакет?===== A: Точно так же, как и установка пакета: apt-get install <пакет> =====Q: Как удалить пакет?===== A: apt-get remove <пакет> =====Q: Как удалить все пакеты программы?===== A: <text>apt-get remove --purge percona*****</text> =====Q: А после удаления точно ничего от пакета не останется?===== * A: Для того, чтобы точно не осталось, лучше пользоваться apt-get remove --purge<пакет> * A: или apt-get purge <пакет> =====Q: Как мне узнать, как называется пакет для какой-то определенной цели?===== A: Попробуйте поиск по ключевым словам при помощи apt-cache search <слова> =====Q: Мне принесли компакты дистрибутива, которых у меня не было, как мне их добавить?===== A: apt-cdrom add должно помочь =====Q: Мне кажется, что меня взломали и что-то сделали с <пакетом>===== A: apt-get install --reinstall вернет пакет к изначальному состоянию, то есть такому, какой он был на свежеустановленной системе. =====Q: Очень хочется создать локальное зеркало, в какую сторону смотреть?===== A: apt-move скорее всего решит полностью вашу проблему, для него достаточно указать, где лежит архив файлов и куда выложить ваше зеркало. =====Q: А подробнее про apt-move можно?===== А: Можно: apt-move update - переносит из /var/cache/apt/archives пакеты в директорию локального зеркала (указывается в /etc/apt-move.conf как переменная LOCALDIR=path_to). По сути apt-move update является выполнением последовательности команд $ apt-move get $ apt-move move $ apt-move delete $ apt-move packages apt-move get - формирует мастер-файл; apt-move move - переносит пакеты из кэша apt в локальное зеркало; apt-move delete - удаляет устаревшие пакеты; apt-move packages - создает Packages.gz и Sources.gz дерева локального зеркала Q: У меня пакеты все уже удалени из кэша, а друг тоже хочет весь "свежак", который у меня установлен... A: Простой скрипт, выполненный в пустом каталоге, соберет в нем пакеты, которые установлены в системе: <code bash> dpkg --get-selections | \ grep -v "deinstall" | \ awk '{print $1}' | \ xargs dpkg-repack </code> =====Q: Есть подозрение, что из-за моих экспериментов в системе много мусора...===== A: Попробуйте пакет debfoster, он при первом запуске спросит у вас о необходимости пакетов и удалит все лишнее. =====Q: Где по умолчанию лежат пакеты, которые мне скачал apt-get?===== A: в /var/cache/apt/archives =====Q: Как мне поставить один *.deb пакет в систему?===== A: При условии того, что удовлетворены все зависимости, dpkg -i <пакет> приведет к желаемому результату. =====Q: Как заставить apt работать через proxy-сервер?===== A: Либо установив переменную окружения при помощи * export "http://login:password@xxx.xxx.x.xx:yyyy" * либо прописав в файл /etc/apt/apt.conf строку Acquire::http::Proxy "http://xxx.xxx.xx:yyyy" где xxx.xxx.xx - имя вашего прокси, yyyy - порт nano /etc/apt/apt.conf.d/proxy.conf <code bash> Acquire::http::Proxy "http://192.168.10.5:8888/"; </code> =====Q: Я хочу определить в каком пакете необходимый мне файл (например, libodbc.so).===== А: apt-file - утилита поиска по содержимому пакетов. apt-file update - получает файл Contents-<ARCH>.gz, следует учесть, что исходя из того, что проект Debian довольно большой, то и файл получится соответствующий. apt-file search <файл> - поиск пакета с указанным файлом. Пример: <code> apt-file search libodbc.so unixodbc: usr/lib/libodbc.so.1 unixodbc: usr/lib/libodbc.so.1.0.0 unixodbc-dev: usr/lib/libodbc.so </code> =====Q: А как просмотреть полный список содержимого пакета?===== А: apt-file list <пакет> - отображает содержимое указанного пакета =====Q: Я больше не собираюсь использовать apt-file, а Contents-.gz занимает место на диске.===== А: apt-file purge удалить все Contents-<ARCH>.gz. По поводу дополнительных опций - man apt-file =====Q: Как мне найти неиспользуемые (осиротевшие) пакеты?===== А: deborphan без указания ключа осуществляет поиск в разделе библиотек, с указанием ключа -a поиск ведется во всех разделах. Имеется и интерфейс к deborphan - orphaner, поставляются в одном пакете. =====Q: есть локальный репозиторий из дистрибутивных дисков. Packages.gz сделал, а вот как сделать Contents-<ARCH>.gz для того, чтобы apt-file'ом можно было пользоваться?===== A:apt-ftparchive contents . | gzip > Contents-i386.gz также с помощью apt-ftparchive можно создавать Sources.gz и Packages.gz apt-ftparchive sources . | gzip > Sources.gz apt-ftparchive packages .| gzip > Packages.gz =====Q: хочется создать дистрибутив некоторых выбранных пакетов и залить его на болванки. При этом хочется поместить на болванки и пакеты, не установленные в моей системе. Как это объяснить apt-move?===== * A: Вариант номер один - посмотреть в сторону jidgo, возможно, он вас устроит * A: Вариант номер два - получить недостающие пакеты, но не устанавливать их в систему с помощью аpt-get install -d <пакеты>. =====Q: У меня стоит мешанина из stable, testing, unstable и даже кое-что из experimental установил. Как мне сделать, чтобы все в таком виде и обновлялось?===== A: Чтобы этого добиться, поместите следующую строку в /etc/apt/apt.conf: APT::Default-Release "testing"; Затем, при установке пакетов из, например, нестабильного дистрибутива, просто используйте ключ -t: $ apt-get -t unstable install имя_пакета ===== Q: Как узнать расширенное описание пакета? ===== * apt-cache -f search apache2-utils * apt-cache show sysstat ===== Q: Как исправить зависимости в пакетах? ===== * apt-get -f install ===== Q: Как apt-get заставить не обновлять пакет ===== ==== apt-get ==== * sudo apt-mark hold package_name * sudo apt-mark unhold package_name ==== aptitude ==== * sudo aptitude hold package_name * sudo aptitude unhold package_name ==== dpkg ==== * echo “wine hold” | dpkg --set-selections * echo “wine install” | dpkg --set-selections ==== /etc/apt/preferences ==== * A: Внести изменения в /etc/apt/preferences * A: или в /etc/apt/preferences.d/название_пакета_или_сходное_по_спыслу Пример: <code> Package: firefox-3.0 Pin: release n=hardy Pin-Priority: -10 Package: firefox-3.0 Pin: release n=intrepid Pin-Priority: 900 Package: php5-fpm Pin: version 5.4* Pin-Priority: 991 </code> * Пример: [[:php|downgrade php 5.5 to 5.4]] ===== Q: Как узнать, какие пакеты можно обновить? ===== * apt-get install apt-show-versions * apt-show-versions ===== Q: Как узнать какии пакеты заморожены/стоит пометка о запрете обновления? ===== * dpkg --get-selections|grep hold ===== Q: Как обновить из конкретного репозитория? ===== * apt-get install php5/sid * apt-get install php5/unstable * apt-get -t unstable install php5 ===== Q: Как узнать версию пакета? ===== * apt-cache show -t stable php5-common|grep "Version:" * -t stable - указывает на используемый репозиторий (stable, unstable, sid итд) ===== Q: Как обновить только заданный пакет/программу? ===== * apt-get install --only-upgrade bash :!: * apt-get install --only-upgrade postfix ===== Q: Как обновить обновить ключ? ===== * apt-key list | grep "expired:" <code> pub 2048R/7BD9BF62 2011-08-19 [expired: 2016-08-17] </code> <code bash> $ apt-key adv --keyserver keys.gnupg.net --recv-keys F76221572C52609D $ apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F76221572C52609D </code>СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal