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

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

< APT в ALT Linux(Различия между версиями)
Перейти к: навигация, поиск
м (apt-cache list-extras: [ -> {)
 
(30 промежуточных версий не показаны.)
Строка 1: Строка 1:
 +
== Сводка по обновлению ==
 +
Поставьте пакет {{pkg|apt-printchanges}} и перед обновлением пакета будет выводиться его changelog.
 +
== Использование proxy ==
== Использование proxy ==
Строка 14: Строка 17:
либо выставить переменную окружения <tt>ftp_proxy</tt>.
либо выставить переменную окружения <tt>ftp_proxy</tt>.
 +
 +
=== RSYNC-прокси ===
 +
 +
<tt>/etc/apt/apt.conf</tt>:
 +
Acquire::rsync::proxy="[user[:pass]@]host[:port]";
 +
Acquire::rsync::proxy::hostname="none";
 +
 +
либо выставить переменную окружения <tt>RSYNC_PROXY</tt>.
 +
 +
* При использовании репозиториев на разных хостах возможно задание 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-запросов ===
=== HTTP-прокси для проксирования FTP-запросов ===
Строка 27: Строка 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}}
-
Обновление "вниз" с Sisyphus до Server 4.0:
+
== apt-scripts: «ненужное» и «не в текущем репо» ==
 +
Описано по мотивам [http://lists.altlinux.org/pipermail/sisyphus/2006-June/302208.html письма at@]; для начала '''потребуется''' установить пакет {{pkg|apt-scripts}}.
-
<tt>/etc/apt/preferences</tt>:
+
=== apt-cache list-extras ===
-
Package: *
+
Показывает пакеты, которые отсутствуют в репозитории (совпадение по имени пакета, кроме специальных случаев типа Allow-Duplicated, в которых версия также учитывается).
-
Pin: release l=Server
+
-
Pin-Priority: 1001
+
-
И последующий <tt>apt-get dist-upgrade</tt>.
+
Непустой вывод означает, что перечисленных пакетов больше нет в репозитории. Следовательно, эти пакеты, скорее всего, устарели или перестали собираться (и поэтому, быть может, стоит их снести). Предварительно следует обновиться до текущего состояния репозитория, так как не исключено, что их заменили какие-то новые пакеты.
-
Полная информация о предпочтениях (preferences) APT: <tt>apt_preferences(5)</tt>
+
apt-get remove `apt-cache list-extras | grep -v "^kernel-\(image\|modules\)\|^apt-conf\|^branding-altlinux"`
-
== APT совместно с /usr, смонтированным в режиме read only ==
+
{{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}}.
-
/etc/apt/apt.conf:
+
Среди этого списка можно обнаружить неиспользуемые библиотеки, примерно так:
 +
 
 +
$ 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 ==
 +
 
 +
{{path|/etc/apt/apt.conf}}:
  RPM
  RPM
  {
  {
Строка 52: Строка 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>`

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

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

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

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