APT в ALT Linux/Советы по использованию

Материал из ALT Linux Wiki

< APT в ALT Linux(Различия между версиями)
Перейти к: навигация, поиск
(apt-scripts: «ненужное» и «не в текущем репо»: +{{pkg|apt-scripts}})
м (apt-cache list-extras: [ -> {)
 
(18 промежуточных версий не показаны.)
Строка 1: Строка 1:
 +
== Сводка по обновлению ==
 +
Поставьте пакет {{pkg|apt-printchanges}} и перед обновлением пакета будет выводиться его changelog.
 +
== Использование proxy ==
== Использование proxy ==
Строка 49: Строка 52:
Внимание! Такое обновление может привести к непредсказуемым последствиям, ибо майнтейнеры пакетов не проверяют работу обновления в таких условиях.
Внимание! Такое обновление может привести к непредсказуемым последствиям, ибо майнтейнеры пакетов не проверяют работу обновления в таких условиях.
-
 
+
{{main|Downgrade}}
-
Обновление «вниз» с Sisyphus до Server 4.0:
+
-
 
+
-
<tt>/etc/apt/preferences</tt>:
+
-
Package: *
+
-
Pin: release l=Server
+
-
Pin-Priority: 1001
+
-
 
+
-
И последующий <tt>apt-get update && apt-get dist-upgrade</tt>.  Внимание: обновлённые вручную из недоступных в sources.list источников пакеты при очередном dist-upgrade будут также DOWNGRADED; если переезд свершился, может иметь смысл отодвинуть <tt>/etc/apt/preferences</tt> в сторону (комментированию с использованием <tt>#</tt> либо <tt>/* ... */</tt> не поддаётся).
+
-
 
+
-
Полная информация о предпочтениях (preferences) APT: <tt>apt_preferences(5)</tt>
+
== apt-scripts: «ненужное» и «не в текущем репо» ==
== apt-scripts: «ненужное» и «не в текущем репо» ==
-
Описано по мотивам [http://lists.altlinux.org/pipermail/sisyphus/2006-June/302208.html письма at@]; для начала потребуется установить пакет {{pkg|apt-scripts}}.
+
Описано по мотивам [http://lists.altlinux.org/pipermail/sisyphus/2006-June/302208.html письма at@]; для начала '''потребуется''' установить пакет {{pkg|apt-scripts}}.
=== apt-cache list-extras ===
=== apt-cache list-extras ===
Показывает пакеты, которые отсутствуют в репозитории (совпадение по имени пакета, кроме специальных случаев типа Allow-Duplicated, в которых версия также учитывается).
Показывает пакеты, которые отсутствуют в репозитории (совпадение по имени пакета, кроме специальных случаев типа 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 ===
=== apt-cache list-nodeps ===
Строка 83: Строка 79:
Эти библиотеки, вероятно, стоит снести:
Эти библиотеки, вероятно, стоит снести:
-
  $ apt-cache list-nodeps |grep '^lib[^-]*$' |xargs sudo rpm -e
+
  $ 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 ==
Строка 94: Строка 95:
  }
  }
-
работает в 4.0, в 4.1, начиная с некоторого времени, что-то сломалось и после установки пакетов выдает ошибки типа такого
+
работает в 4.0, в 4.1, начиная с некоторого времени, что-то сломалось (появились файлтриггеры?) и после установки пакетов выдает ошибки типа такого
  Done.
  Done.
Строка 101: Строка 102:
  E: Problem executing scripts RPM::Post-Invoke 'mount -o remount,ro /usr'
  E: Problem executing scripts RPM::Post-Invoke 'mount -o remount,ro /usr'
  E: Sub-process returned an error code
  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}}}}
{{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>`

Обновление системы «вниз»

Внимание! Такое обновление может привести к непредсказуемым последствиям, ибо майнтейнеры пакетов не проверяют работу обновления в таких условиях.

Основная статья: Downgrade


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"`
Внимание! Обычное обновление не обновляет автоматически ядро, потому команда, с высокой степенью вероятности, выдаст в списке установленные ядра с модулями. Их удаление приведёт к невозможности загрузки системы. В примере этот момент учтён посредством "grep -v ...".

Аналогично, удаление apt-conf-*, приведёт к удалению apt, хотя это можно будет исправить доустановкой через rpm. Можно, предварительно, установить нужный apt-conf, например
apt-get install apt-conf-branch
Внимание! Если Вы увидите предупреждение "To continue type in the phrase 'Yes, do as I say!'" вместо обычного (Y/n), то остановитесь и внимательно посмотрите, что именно предлагается к удалению. Эта фраза означает попытку удаления критически важного c точки зрения apt пакета. Как правило, такие пакеты можно только менять на какие-то другие (хотя это же предупреждение будет и при замене).


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-, ...), если не устанавливали что-либо самостоятельно с целью получения дополнительной функциональности.

Внимание! C ^lib могут начинаться не только названия пакетов с библиотеками: пример с libreoffice представлен в команде.
Внимание! Пакет, напоминающий библиотеку по названию и содержимому, может оказаться плагином. Удаление плагинов может привести к отключению каких-то функций у использующих их приложений. Обычно, функциональность можно восстановить, просто установив плагин снова.


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 и почитать эту статью.

 
Личные инструменты