APT в ALT Linux/Советы по использованию
Материал из ALT Linux Wiki
(→APT совместно с /usr, смонтированным в режиме read only) |
Asy (обсуждение | вклад) м (→apt-cache list-extras: [ -> {) |
||
(27 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
+ | == Сводка по обновлению == | ||
+ | Поставьте пакет {{pkg|apt-printchanges}} и перед обновлением пакета будет выводиться его changelog. | ||
+ | |||
== Использование proxy == | == Использование proxy == | ||
Строка 23: | Строка 26: | ||
либо выставить переменную окружения <tt>RSYNC_PROXY</tt>. | либо выставить переменную окружения <tt>RSYNC_PROXY</tt>. | ||
- | * При использовании | + | * При использовании репозиториев на разных хостах возможно задание proxy для всех хостов и для каждого в отдельности. |
* Значение для конкретного хоста перекрывает глобальное значение. | * Значение для конкретного хоста перекрывает глобальное значение. | ||
* Значение "none" указывает, что необходимо использовать прямое соединение. | * Значение "none" указывает, что необходимо использовать прямое соединение. | ||
Строка 46: | Строка 49: | ||
apt-get install `apt-cache search <package name>|grep <package name>` | apt-get install `apt-cache search <package name>|grep <package name>` | ||
- | == Обновление системы | + | == Обновление системы «вниз» == |
- | Внимание! Такое обновление может привести к непредсказуемым последствиям, ибо | + | Внимание! Такое обновление может привести к непредсказуемым последствиям, ибо майнтейнеры пакетов не проверяют работу обновления в таких условиях. |
+ | {{main|Downgrade}} | ||
- | + | == apt-scripts: «ненужное» и «не в текущем репо» == | |
+ | Описано по мотивам [http://lists.altlinux.org/pipermail/sisyphus/2006-June/302208.html письма at@]; для начала '''потребуется''' установить пакет {{pkg|apt-scripts}}. | ||
- | + | === apt-cache list-extras === | |
- | + | Показывает пакеты, которые отсутствуют в репозитории (совпадение по имени пакета, кроме специальных случаев типа Allow-Duplicated, в которых версия также учитывается). | |
- | + | ||
- | + | ||
- | + | Непустой вывод означает, что перечисленных пакетов больше нет в репозитории. Следовательно, эти пакеты, скорее всего, устарели или перестали собираться (и поэтому, быть может, стоит их снести). Предварительно следует обновиться до текущего состояния репозитория, так как не исключено, что их заменили какие-то новые пакеты. | |
- | + | apt-get remove `apt-cache list-extras | grep -v "^kernel-\(image\|modules\)\|^apt-conf\|^branding-altlinux"` | |
+ | |||
+ | {{Attention|Обычное обновление не обновляет автоматически ядро, потому команда, с высокой степенью вероятности, выдаст в списке установленные ядра с модулями. Их удаление приведёт к невозможности загрузки системы. В примере этот момент учтён посредством "grep -v ...".<br><br>Аналогично, удаление apt-conf-*, приведёт к удалению apt, хотя это можно будет исправить доустановкой через rpm. Можно, предварительно, установить нужный apt-conf, например <source lang="Bash">apt-get install apt-conf-branch</source>}} | ||
+ | {{Attention|Если Вы увидите предупреждение "To continue type in the phrase 'Yes, do as I say!'" вместо обычного (Y/n), то остановитесь и внимательно посмотрите, что именно предлагается к удалению. Эта фраза означает попытку удаления критически важного c точки зрения {{pkg|apt}} пакета. Как правило, такие пакеты можно только менять на какие-то другие (хотя это же предупреждение будет и при замене).}} | ||
+ | |||
+ | === apt-cache list-nodeps === | ||
+ | Показывает пакеты, от которых не зависят какие-либо другие пакеты, установленные в системе. То есть эти пакеты «никому не нужны» и их можно удалить с помощью {{cmd|rpm -e}}. | ||
+ | |||
+ | Среди этого списка можно обнаружить неиспользуемые библиотеки, примерно так: | ||
+ | |||
+ | $ apt-cache list-nodeps |grep '^lib[^-]*$' | ||
+ | libgtk+mdk | ||
+ | libmysqlclient10 | ||
+ | [...] | ||
+ | |||
+ | Эти библиотеки, вероятно, стоит снести: | ||
+ | |||
+ | $ apt-cache list-nodeps |grep '^lib[^-]*$' |grep -v libreoffice |xargs sudo rpm -e | ||
+ | |||
+ | Аналогично можно поступить с неиспользуемыми модулями (<tt>^python-</tt>, <tt>^perl-</tt>, ...), если не устанавливали что-либо самостоятельно с целью получения дополнительной функциональности. | ||
+ | |||
+ | {{Attention|C <tt>^lib</tt> могут начинаться не только названия пакетов с библиотеками: пример с libreoffice представлен в команде.}} | ||
+ | {{Attention|Пакет, напоминающий библиотеку по названию и содержимому, может оказаться плагином. Удаление плагинов может привести к отключению каких-то функций у использующих их приложений. Обычно, функциональность можно восстановить, просто установив плагин снова.}} | ||
== APT совместно с /usr, смонтированным в режиме read only == | == APT совместно с /usr, смонтированным в режиме read only == | ||
- | /etc/apt/apt.conf: | + | {{path|/etc/apt/apt.conf}}: |
RPM | RPM | ||
{ | { | ||
Строка 69: | Строка 94: | ||
Post-Invoke {"mount -o remount,ro /usr";}; | Post-Invoke {"mount -o remount,ro /usr";}; | ||
} | } | ||
+ | |||
+ | работает в 4.0, в 4.1, начиная с некоторого времени, что-то сломалось (появились файлтриггеры?) и после установки пакетов выдает ошибки типа такого | ||
+ | |||
+ | Done. | ||
+ | mount: /usr is busy | ||
+ | E: Sub-process mount -o remount,ro /usr returned an error code (32) | ||
+ | E: Problem executing scripts RPM::Post-Invoke 'mount -o remount,ro /usr' | ||
+ | E: Sub-process returned an error code | ||
+ | |||
+ | == Hold пакета (Заблокировать версию пакета) == | ||
+ | |||
+ | Иногда требуется предотвратить обновление какого-то пакета, например, {{pkg|nxclient}}. Это можно сделать при помощи {{pkg|synaptic}} (<tt>Пакет - Заблокировать версию</tt>) и {{pkg|aptitude}} ({{cmd|aptitude hold nxclient}}). Но это не остановит апдейт в случае использования традиционного {{cmd|apt-get upgrade}} (dist-upgrade). Чтобы решить эту проблему, создаём файл типа {{path|90-apt-hold}} в каталоге {{path|/etc/apt/apt.conf.d/}} (или просто редактируем {{path|apt.conf}}) cо следующим содержимым: | ||
+ | |||
+ | # cat /etc/apt/apt.conf.d/90-apt-hold.conf | ||
+ | RPM::Hold { nxclient; }; | ||
+ | |||
+ | Холд установлен. Также можно посмотреть подобный вариант в {{path|/etc/apt/apt.conf.d/apt.eter.conf}} и почитать [http://apt-rpm.org/tricks.shtml эту статью]. | ||
+ | |||
+ | {{Category navigation|title=APT|category=APT|sortkey={{SUBPAGENAME}}}} |
Текущая версия на 10:46, 1 ноября 2016
Сводка по обновлению
Поставьте пакет apt-printchanges и перед обновлением пакета будет выводиться его changelog.
Использование proxy
HTTP-прокси
/etc/apt/apt.conf:
Acquire::http::Proxy "http://[user[:pass]@]host[:port]/";
либо выставить переменную окружения http_proxy.
FTP-прокси
/etc/apt/apt.conf:
Acquire::ftp::Proxy "ftp://[user[:pass]@]host[:port]/";
либо выставить переменную окружения ftp_proxy.
RSYNC-прокси
/etc/apt/apt.conf:
Acquire::rsync::proxy="[user[:pass]@]host[:port]"; Acquire::rsync::proxy::hostname="none";
либо выставить переменную окружения RSYNC_PROXY.
- При использовании репозиториев на разных хостах возможно задание proxy для всех хостов и для каждого в отдельности.
- Значение для конкретного хоста перекрывает глобальное значение.
- Значение "none" указывает, что необходимо использовать прямое соединение.
Пример:
Acquire::rsync::proxy="192.168.1.1:3128"; Acquire::rsync::proxy::mirror.localdomain="none";
Будет использоваться http-proxy "192.168.1.1:3128" для всех хостов, кроме mirror.localdomain, для которого будет использоваться прямое соединение.
HTTP-прокси для проксирования FTP-запросов
Не рекомендуется из-за низкой эффективности и не поддерживается настройками в конфигурационном файле. В случае крайней необходимости - определите переменную окружения ftp_proxy в HTTP URL.
Поиск пакетов, использующих данную библиотеку
apt-cache showpkg libuuid.so.1
Установка всех пакетов, найденных через apt-cache
apt-get install `apt-cache search <package name>|grep <package name>`
Обновление системы «вниз»
Внимание! Такое обновление может привести к непредсказуемым последствиям, ибо майнтейнеры пакетов не проверяют работу обновления в таких условиях.
apt-scripts: «ненужное» и «не в текущем репо»
Описано по мотивам письма at@; для начала потребуется установить пакет apt-scripts.
apt-cache list-extras
Показывает пакеты, которые отсутствуют в репозитории (совпадение по имени пакета, кроме специальных случаев типа Allow-Duplicated, в которых версия также учитывается).
Непустой вывод означает, что перечисленных пакетов больше нет в репозитории. Следовательно, эти пакеты, скорее всего, устарели или перестали собираться (и поэтому, быть может, стоит их снести). Предварительно следует обновиться до текущего состояния репозитория, так как не исключено, что их заменили какие-то новые пакеты.
apt-get remove `apt-cache list-extras | grep -v "^kernel-\(image\|modules\)\|^apt-conf\|^branding-altlinux"`
Аналогично, удаление apt-conf-*, приведёт к удалению apt, хотя это можно будет исправить доустановкой через rpm. Можно, предварительно, установить нужный apt-conf, например
apt-get install apt-conf-branch
apt-cache list-nodeps
Показывает пакеты, от которых не зависят какие-либо другие пакеты, установленные в системе. То есть эти пакеты «никому не нужны» и их можно удалить с помощью rpm -e.
Среди этого списка можно обнаружить неиспользуемые библиотеки, примерно так:
$ apt-cache list-nodeps |grep '^lib[^-]*$' libgtk+mdk libmysqlclient10 [...]
Эти библиотеки, вероятно, стоит снести:
$ apt-cache list-nodeps |grep '^lib[^-]*$' |grep -v libreoffice |xargs sudo rpm -e
Аналогично можно поступить с неиспользуемыми модулями (^python-, ^perl-, ...), если не устанавливали что-либо самостоятельно с целью получения дополнительной функциональности.
APT совместно с /usr, смонтированным в режиме read only
/etc/apt/apt.conf:
RPM { Pre-Invoke {"mount -o remount,rw /usr";}; Post-Invoke {"mount -o remount,ro /usr";}; }
работает в 4.0, в 4.1, начиная с некоторого времени, что-то сломалось (появились файлтриггеры?) и после установки пакетов выдает ошибки типа такого
Done. mount: /usr is busy E: Sub-process mount -o remount,ro /usr returned an error code (32) E: Problem executing scripts RPM::Post-Invoke 'mount -o remount,ro /usr' E: Sub-process returned an error code
Hold пакета (Заблокировать версию пакета)
Иногда требуется предотвратить обновление какого-то пакета, например, nxclient. Это можно сделать при помощи synaptic (Пакет - Заблокировать версию) и aptitude (aptitude hold nxclient). Но это не остановит апдейт в случае использования традиционного apt-get upgrade (dist-upgrade). Чтобы решить эту проблему, создаём файл типа 90-apt-hold в каталоге /etc/apt/apt.conf.d/ (или просто редактируем apt.conf) cо следующим содержимым:
# cat /etc/apt/apt.conf.d/90-apt-hold.conf RPM::Hold { nxclient; };
Холд установлен. Также можно посмотреть подобный вариант в /etc/apt/apt.conf.d/apt.eter.conf и почитать эту статью.