atesting.ru Ошибка Ошибка apt-get command not found

Ошибка apt-get command not found

3.6 Использование APT с dselect

— это программа, которая помогает пользователям выбирать
пакеты Debian для инсталляции. Он выглядит в чем-то громоздким и даже
раздражает, но со временем вы можете привыкнуть к его консольному, основанному
на ncurses интерфейсу.

Одной из особенностью dselect является ее умение работать с
«рекомендуемыми» и «предлагаемыми» пакетами при установке
выбранных пакетов. Чтобы использовать эту программу, запустите
`dselect’ от имени root. Выберите в качестве метода доступа
‘apt’. В действительности в этом нет необходимости, но если вы не используете
CD-ROM и хотите скачивать пакеты из Интернет, то это наилучший способ для
dselect.

Чтобы достичь более глубоких знаний по эксплуатации dselect, прочтите
документацию по dselect на странице Debian .

Когда закончите выбирать в dselect, используйте команду:

     apt-get -u dselect-upgrade

как в нижеприведенном примере:

     @[/] # apt-get -u dselect-upgrade
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following packages will be REMOVED:
       lbxproxy 
     The following NEW packages will be installed:
       bonobo console-tools-libs cpp-3.0 enscript expat fingerd gcc-3.0
       gcc-3.0-base icepref klogd libdigest-md5-perl libfnlib0 libft-perl
       libgc5-dev libgcc300 libhtml-clean-perl libltdl0-dev libsasl-modules
       libstdc++3.0 metamail nethack proftpd-doc psfontmgr python-newt talk tidy
       util-linux-locales vacation xbill xplanet-images 
     The following packages will be upgraded
       debian-policy 
     1 packages upgraded, 30 newly installed, 1 to remove and 0  not upgraded.
     Need to get 7140kB of archives. After unpacking 16.3MB will be used.
     Do you want to continue? [Y/n]

Сравните это с результатом работы команды apt-get dist-upgrade на той же
системе:

     @[/] # apt-get -u dist-upgrade   
     Reading Package Lists... Done
     Building Dependency Tree... Done
     Calculating Upgrade... Done
     The following packages will be upgraded
       debian-policy 
     1 packages upgraded, 0 newly installed, 0 to remove and 0  not upgraded.
     Need to get 421kB of archives. After unpacking 25.6kB will be freed.
     Do you want to continue? [Y/n]

Обратите внимание на то, что многие из вышеуказанных пакетов были установлены
потому, что другие пакеты «предлагали» или «рекомендовали»
их. Другие были установлены или удалены (в случае, например, lbxproxy) в
результате сделанного нами выбора во время работы в dselect

Dselect может
быть мощным инструментом, когда используется вместе с APT.

3.5 Обновление нового выпуска

Эта возможность APT позволяет вам обновлять всю систему Debian за один прием,
или через Internet, или с нового CD (купленного или скачанного в виде образа
ISO).

Это действие также используется при изменении отношений между установленными
пакетами. Команда apt-get upgrade оставит эти пакеты нетронутыми
(kept back).

Например, предположим, что вы используете выпуск 0 стабильной версии Debian и
вы покупаете CD с выпуском 3. Вы можете использовать APT для обновления вашей
системы с этого нового CD. Для этого используйте команду
(см. раздел ) для добавления CD в ваш файл /etc/apt/sources.list и
запустите apt-get dist-upgrade.

Важно иметь в виду, что APT всегда высматривает новейшие версии пакетов.
Поэтому, если в вашем /etc/apt/sources.list были указаны архивы,
которые имеют более новые версии пакетов, чем версия этого CD, то APT должен
скачивать пакеты с них.

В примере из раздела ,
мы видели, что некоторые пакеты были kept back. Сейчас мы решим
эту проблему с помощью действия dist-upgrade:

     @[/] # apt-get -u dist-upgrade
     Reading Package Lists... Done
     Building Dependency Tree... Done
     Calculating Upgrade... Done
     The following NEW packages will be installed:
       cpp-2.95 cron exim gcc-2.95 libident libopenldap-runtime libopenldap1
       libpcre2 logrotate mailx 
     The following packages have been kept back
       lilo 
     The following packages will be upgraded
       adduser ae apt autoconf cpp debhelper dpkg-dev esound esound-common ftp gcc
       indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0
       libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev
       liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit
       procps psmisc 
     31 packages upgraded, 10 newly installed, 0 to remove and 1 not upgraded.
     Need to get 0B/7098kB of archives. After unpacking 3118kB will be used.
     Do you want to continue? [Y/n]

Обратите внимание, что сейчас пакеты были обновлены, а также установлены новые
пакеты (новые зависимости пакетов). Обратите внимание также, что lilo
по-прежнему остается kept back

Вероятно здесь более серьезная
причина, чем новая зависимость. Мы можем ее найти командой:

     @[/] # apt-get -u install lilo
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following extra packages will be installed:
       cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
       logrotate mailx 
     The following packages will be REMOVED:
       debconf-tiny 
     The following NEW packages will be installed:
       cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
       logrotate mailx 
     The following packages will be upgraded
       lilo 
     1 packages upgraded, 9 newly installed, 1 to remove and 31 not upgraded.
     Need to get 225kB/1179kB of archives. After unpacking 2659kB will be used.
     Do you want to continue? [Y/n]

Как было указано выше, lilo имеет новый конфликт с пакетом
, который означает, что он не может быть установлен
(или обновлен) без удаления debconf-tiny.

Чтобы узнать как сохраняется или удаляется пакет, вы можете использовать:

     # apt-get -o Debug::pkgProblemResolver=yes dist-upgrade
     Reading Package Lists... Done
     Building Dependency Tree... Done
     Calculating Upgrade... Starting
     Starting 2
     Investigating python1.5
     Package python1.5 has broken dep on python1.5-base
       Considering python1.5-base 0 as a solution to python1.5 0
       Holding Back python1.5 rather than change python1.5-base
     Investigating python1.5-dev
     Package python1.5-dev has broken dep on python1.5
       Considering python1.5 0 as a solution to python1.5-dev 0
       Holding Back python1.5-dev rather than change python1.5
       Try to Re-Instate python1.5-dev
     Done
     Done
     The following packages have been kept back
       gs python1.5-dev
     0 packages upgraded, 0 newly installed, 0 to remove and 2  not upgraded.

Таким образом легко заметить, что пакет python1.5-dev не может быть установлен
из-за неудовлетворительной зависимости: python1.5.

3.7 Как сохранить смешанную систему

Люди часто используют тестируемый дистрибутив, потому что он более сьабилен,
чем нестабильный и более новый, чем стабильный. Однако пользователи, которые
хотят работать с последними версиями некоторых пакетов, но при этом не доверяют
им из-за боязни дестабилизировать всю систему, имеют возможность работать со
смешанными тестируемыми/стабильными системами. Или по-другому — более
консервативным пользователям возможно нужна смешанная стабильная/тестируемая
система.

Чтобы этого добиться, поместите следующую строку в
:

     APT::Default-Release "testing";

Затем, при установке пакетов из нестабильного дистрибутива, просто используйте
ключ -t:

     # apt-get -t unstable install имя_пакета

Не забывайте, что для того, чтобы использовать пакеты этой версии Debian, нужно
внести дополнения в файл . Применительно к
нашему примеру, нам нужно добавить строки источников для дистрибутива
unstable после аналогичных строк для дистрибутива
testing.

Очистка кэша установочных файлов

При каждом обновлении программ файлы пакетов скачиваются в кэш. После обновления скаченные файлы (можно назвать их установочными) не удаляются, и постепенно кэш разрастается до больших размеров. Это сделано намерено с той идеей, что если после очередного обновления вы обнаружите, что новый пакет имеет проблемы, а старая версия уже недоступна в онлайн репозитории, то вы сможете окатиться до старой версии установив её из файла, сохранённого в кэше.

Для роллинг дистрибутивов кэш разрастается очень быстро. Поэтому время от времени можно выполнять команду:

sudo apt clean -y

clean вычищает локальный репозиторий от полученных файлов пакетов. Она удаляет все, кроме lock файла из /var/cache/apt/archives/ и /var/cache/apt/archives/partial/.

3.9 Как сохранять указанные версии установленных пакетов (сложный способ)

Могло случиться так, что вы изменяете что-то в пакете и не имеете времени или
не хотите портировать эти изменения в новую версию программы. Или, к примеру,
вы может быть просто собиретесь обновить ваш дистрибутив Debian до версии 3.0,
на при этом хотите по-прежнему использовать некоторые пакеты из Debian 2.2. Вы
можете «приколоть» (pin) установленные версии пакетов так, чтобы они
не обновлялись.

Это делается просто. Вам всего лишь надо отредактировать файл
/etc/apt/preferences.

Его формат прост:

     Package: <package>
     Pin: <pin definition>
     Pin-Priority: <pin's priority>

Например, чтобы предотвратить модификацию пакета версии
0.4.99, которую я поправил на предмет «reply-to-list», я ввел
следующее:

     Package: sylpheed
     Pin: version 0.4.99*

Обратите внимание, что я использовал * (звездочка). Это
«маска»; она означает, что я хочу «приколоть» (pin) все
версии, начиная с 0.4.99

Это нужно потому, что в Debian-версиях пакетов в
номере версии присутствует «номер редакции Debian», а я не хочу
отменять установку этих редакций. Так, например, версии 0.4.99-1 и 0.4.99-10
будут установлены, как только станут доступны. Обратите внимание, что если вы
внесли свои изменения в пакет, то такой способ вам не подойдет.

Поле Pin-Priority необязательно; если оно не указано, то по
умолчанию оно равно 989.

Давайте рассмотрим работу приоритетов. Приоритет менее 0 указывает, что пакет
никогда не должен устанавливаться. Приоритет от 0 до 100 означает пакеты,
которые не установлены и которые не имеют доступных версий. Они не входят в
процесс выбора версий. Приоритет 100 назначается установленному пакету — для
замены установленной версии пакета другой версией, заменяющий пакет должен
иметь приоритет выше 100.

Приоритеты выше 100 указывают, что пакет должен быть установлен. Обычно,
установленная версия пакета изменяется только при обновлении до новой версии.
Любые приоритеты от 100 до 1000 (включительно) определяют это типичное
поведение. Пакет с таким приоритетом не будет даунгрейдиться до доступной
версии с меньшим номером версии. Для примера, если у меня установлен sylpheed
0.5.3 и определен pin на sylpheed 0.4.99 с приоритетом 999, то пакет 0.4.99
не будт установлен из-за значения pin. Чтобы можно было установить
пакет меньшей версии, значение pin должно иметь приоритет выше 1000.

pin может быть определен для version, release или
origin пакета.

При указании pin для версий, как мы видели, для указания
нескольких версий за один раз поддерживаются литеральные номера версий, равно
как и маски.

Опция release зависит от файла Release из репозитория APT или с
CD. Эта опция может не использоваться вовсе, если вы используете репозитории
пакетов, которые не обеспечивают этот файл. Вы можете увидеть содержимое
файлов Release, которые вы используете в каталоге
/var/lib/apt/lists/. Параметры для опции release: a
(archive — архив), c (components — компоненты), v
(version — версия), o (origin — источник) и l
(label — метка).

Пример:

     Package: *
     Pin: release v=2.2*,a=stable,c=main,o=Debian,l=Debian
     Pin-Priority: 1001

В этом примере, мы выбираем версию 2.2* Debian (которая может быть 2.2r2, 2.2r3
— это «точечные выпуски», которые обычно включают исправления
безопасности и другие важные обновления), стабильный репозиторий,
раздел main (как противовес contrib или
non-free) и источник и метку Debian. Источник (o=) определяет,
кто создал данный файл Release, метка (l=) определяет имя дистрибутива: Debian
для самого Debian и Progeny для дистрибутива Progeny, например. Пример файла
Release:

     $ cat /var/lib/apt/lists/ftp.debian.org.br_debian_dists_potato_main_binary-i386_Release
     Archive: stable
     Version: 2.2r3
     Component: main
     Origin: Debian
     Label: Debian
     Architecture: i386

APT HOWTO (Obsolete Documentation)

1.8.2 — Ноябрь 2002
Gustavo Noronha Silva

Поиск пакетов только по названию

Предыдущая команда бывает бесполезной из-за слишком большого вывода информации. Вы можете использовать следующую команду для поиска по имени пакета:

apt list ПАКЕТ

Вы также можете указать подстановочные символы, например для поиска по названию, начинающемуся на слово ПАКЕТ:

apt list ПАКЕТ*

Для поиска по названию, оканчивающемуся на слово ПАКЕТ:

apt list *ПАКЕТ

Для поиска по названию, в котором присутствует слово ПАКЕТ:

apt list *ПАКЕТ*

Ещё более удобной, на мой взгляд, командой для поиска пакетов является:

apt-cache search ПАКЕТ

Последняя команда ищет в именах по слову ПАКЕТ и выводит список всех пакетов, где оно встречается. Использовать подстановочные символы не нужно.

Утилита aptitude

Основным же консольным инструментом работы с пакетами является . В некотором смысле это консольный аналог менеджера пакетов Synaptic, хотя на самом деле обладает куда как большим функционалом.

Сразу же вспомните про , поскольку как ни странно, для внесения изменений в установленные компоненты системы требует административных полномочий. Хотя некоторые функции, вроде поиска, работают и от имени обычного пользователя.

Начнём с того, что установить пакеты из репозиториев можно командой

sudo aptitude install имя_пакета1 

Сколько бы вы не указали пакетов, автоматически разрешит все зависимости и предложит вам конечный вариант необходимых действий, вам останется только лишь согласиться, нажав Enter:

Обратите внимание, предлагает вам в квадратных скобочках три возможных варианта ответа на поставленный вопрос:

[Y/n/?]

означает Yes, то есть согласие, — это No, то есть отказ, а — это просьба вывести справку. Вам нужно ввести символ, соответствующий вашему выбору и нажать Enter. Однако часто есть вариант по умолчанию, выделенный в списке большой буквой, и если вам нужен именно он, то вы можете ничего не вводить, просто нажать Enter.

Аналогично установке, удалить пакеты можно одной из двух команд:

sudo aptitude remove имя_пакета1 
sudo aptitude purge имя_пакета1 

Первая удаляет только файлы пакета, оставляя пользовательские настройки нетронутыми, вторая же удаляет пакет полностью.

Посмотреть описание конкретного пакета можно командой

aptitude show имя_пакета

Произвести поиск нужного пакета по доступным источникам приложений можно командой

aptitude search фраза

По умолчанию поиск производится по именам пакетов, для поиска по описаниям надо перед искомой фразой добавить символы :

aptitude search ~dфраза

Ну и наконец имеет мощный графический интерфейс, попасть в него можно набрав в терминале просто . Вот как это выглядит:

Несмотря на неприглядный вид работать с этим очень удобно, но всё-таки обычно пользователю более привычны инструменты вроде Synaptic, поэтому подробно описывать работу с графической оболочкой я не буду.

И напоследок хочется заметить, что обычно в разнообразных инструкциях для установки пакетов предлагается как раз использовать команду

sudo aptitude install имя_пакета

Это ни в коей мере не значит, что кровь из носу надо исполнять эту команду. Вы спокойно можете поставить указанные пакеты через тот же Synaptic. Просто авторы инструкций обычно экономят своё время на объяснении куда и как надо нажимать в Synaptic, давая вместо всего этого одну маленькую команду. Но в конечном итоге и Synaptic выполняют одни и те же действия, так что используйте тот инструмент, который вам удобен.