Процедура, описанная ниже, может быть использована для обновления любой из предшествующих версий до версии 2.2 непосредственно; вам не нужно обновлять систему последовательно до каждой из промежуточных версий. Заметим однако, что обновления с версии 2.0 и более ранних до 2.2 не тестировались тщательно и, таким образом, не поддерживаются.
Обратная бинарная и по текстам совместимость GNU LibC 2.1 означает, что большинство программ предыдущей версии будут работать и в текущей (но не наоборот). Все пакеты Debian GNU/Linux 2.2 собраны для работы в новой среде. Старые программы, в большинстве, можно пересобрать в новом дистрибутиве без изменений. Однако, всегда бывают исключения, и некоторые из ваших программ могут потребовать модификации и/или перекомпиляции с новой версией glibc для корректной работы.
При работе с ядром 2.2 и glibc 2.1, система автоматически смонтирует
дополнительный виртуальный драйвер `devpts' для поддержки Unix98 PTYs, и
некоторые из ваших демонов (Unix-серверов) автоматически переключатся на
использование новых файлов устройств (/dev/pts/*
вместо
/dev/ttyp*
).
При работе с ядром 2.2.x, устройства печати PC именуются от lp0 вместо lp1, как
при работе с 2.0.x, так что вам нужно исправить printcap и другие файлы
настроек (/dev/lp0
вместо /dev/lp1
,
/dev/lp1
вместо /dev/lp2
и т.д.).
Переход к новому ядру весьма прост, так как мы почти все к этому подготовили уже в версии 2.1. Однако, несколько замечаний сохранились, в основном касательно сети:
ipfwadm
заменена
на ipchains
. При обновлении пакета netbase
вам будет
задан вопрос об установке ссылки на скрипт эмуляции, который обеспечит
функционирование вашего firewall; вы можете также прочесть
/usr/share/doc/netbase/ipchains-HOWTO.txt.gz
и адаптировать
установки firewall к ipchains
.
/etc/init.d/network
настроенный прежней программой
установки Debian, выводит сообщения об ошибках при работе с новым ядром; это
может быть исправлено добавлением установкой опций `netmask' and `dev' при
вызове route
в этом файле.
Вам необходимо прочитать Documentation/Changes
из документации
ядра для получения более подробной информации по обновлению программ для работы
с новым ядром.
Использование PAM позволяет приложениям системы стать более цельными и
интегрированными. В большинстве случаев, новая конфигурация не отличается
внешне от старой, без PAM. Однако, не во всех случаях это так. Если изменения
необходимы, то вы можете установить пакет libpam-doc
, содержащий
подробное описание библиотеки PAM, в том числе советы по изменению существующих
не-PAM приложений для поддержки новой модели аутентификации.
Большой частью работ по интеграции PAM было включение пакета
secure-su
в главный пакет поддержки входа в систему. Обычная
программа su
, входившая в пакет shellutils
, теперь
находится в пакете login
и, таким образом, интеграция PAM сделана
более полной и общесистемной. Если вы используете обычную программу
su
, то не должны заметить никаких изменений при переходе на новую
версию. Однако, пользователи устаревшего пакета secure-su
могут
проверить его настройки с тем, чтобы убедиться в их совместимости с новым PAM.
Обратите внимание, что настоящий дистрибутив содержит две версии Perl: 5.004 (в
пакетах perl-5.004*
) и 5.005 (в пакетах perl-5.005*
). Мы настоятельно рекомендуем использовать последнюю, более новую версию, и
удалит старую, которая сохранена только для совместимости и для удобства
программистов. [8] Если вы
используете любой модуль Perl из новых пакетов lib*-perl
в ваших
скриптах, то установите ссылку /usr/bin/perl
(используя
update-alternatives
) на Perl 5.005, иначе возникнут проблемы.
Пожалуйста, заметьте, что архив Debian non-US слегка реорганизован для
отделения свободных программ от несвободных. Если вы уже используете пакет
apt
для доступа к нему, то необходимо изменить строки для non-US в
файле /etc/apt/sources.list
примерно так:
deb http://non-US.debian.org/debian-non-US potato/non-US main contrib non-free
Предыдущая версия inetd
(из пакета netbase
) имела
ошибку. При остановке inetd
, существующие соединения с
некоторыми внутренними сервисами не разрешали inetd
перезапуститься. Эта ошибка исправлена в текущем пакете netbase
,
но старая версия ее имеет. Если вы обнаружите, что inetd
не
перезапускается корректно, посмотрите на процессы inetd
, которые
работают, или такие процессы "-discard" или "-echo". Если
у вас установлен пакет psmisc
, то исполнение:
sed 's/[[:space:]][[:space:]]*/ /g' /etc/inetd.conf | grep '^ *[^#]' | cut -d" " -f1,3 | while read serv type; do fuser -n $type $serv; done
с правами root покажет вам, на какие процессы, использующие порты
inetd
надо обратить внимание.
Сообщаем пользователям почтового сервера smail, что версия 2.2 не содержит
более этого пакета вследствие серьезных ошибок, обнаруженных при нашем
тестировании. Обновленные пакеты smail можно пока найти в нестабильной версии
дистрибутива или на http://www.fs.tum.de/~bunk/smail.html
.
Новый пакет XFree86 и другие пакеты xserver-*
, входящие в
настоящую версию, имеют улучшенную поддержку графического оборудования в
сравнении с предыдущей версией, особенно новых графических карт и акселерации.
Если вы не знаете, какой из пакетов с X-серверами выбрать, то попробуйте
программу xviddetect
(из пакета xviddetect
), которая
выведет имя необходимого вам X-сервера, основываясь на информации, полученной с
шин PCI/AGP.
Пользователи Intel i810 должны иметь в виду, что для корректного
функционирования соответствующего X-сервера необходим модуль ядра, который не
поставляется в исходных текстах ядра. Его исходные тексты и инструкции по
компиляции и использованию можно найти на странице X Strike Force
.
Если используемый вами X server обращается к обновленному хосту за сервисом
шрифтов xfs
, то он потеряет соединение с сервером шрифтов, если
xfs
будет остановлен. Это не критично, но неприятно. Замечание:
подобное может случиться и с другими демонами, будьте к этому готовы.
Следующие пакеты переименованы, как это показано ниже. В большинстве, если не во всех случаях, поля Conflicts:, Replaces: и Provides: (или даже пустые пакеты) обеспечат автоматическую установку и/или безопасные замену/удаление старых.
ada-rm -> gnat-doc [9] alsa-modules -> alsa-base alsalib -> libasound0.4 ax25-utils -> libax25 blt8.0-unoff -> blt8.0 c-client-dev -> libc-client4.7-dev console-tools-data -> console-tools [10] cti-ifhp -> ifhp cwnn -> freewnn-cserver cwnn-dev -> freewnn-cserver-dev data-dumper -> perl-5.005-doc dhcp-beta -> dhcp dhcp-client-beta -> dhcp-client dhcp-relay-beta -> dhcp-relay egcc -> gcc egcs-docs -> gcc-doc emacspeak-bs-tcl, emacspeak-dt, emacspeak-dt-tcl -> emacspeak-ss eterm-backgrounds -> eterm fte-cfgdocs -> fte-docs fvwm -> fvwm1 fvwm2 -> fvwm gltt2 -> libgltt2 gltt2-dev -> libgltt2-dev gmp2 -> libgmp2 gmp2-dev -> libgmp2-dev gnome-gnobots -> gnome-gnobots2 gnome-gnothello -> gnome-iagno gnome-gyahtzee -> gnome-gtali gsl -> libgsl0 gsl-dev -> libgsl0-dev gstep-base -> gstep-base0 gstep-base-dev -> gstep-base0-dev gstep-extensions -> gstep-extensions0 gstep-gui -> gstep-gui0 gstep-gui-dev -> gstep-gui0-dev gstep-guile -> gstep-guile0 gtkicq -> gnomeicu intlfonts-arabic -> xfonts-intl-arabic intlfonts-asian -> xfonts-intl-asian intlfonts-chinese -> xfonts-intl-chinese intlfonts-chinese-big -> xfonts-intl-chinese-big intlfonts-european -> xfonts-intl-european intlfonts-japanese -> xfonts-intl-japanese intlfonts-japanese-big -> xfonts-intl-japanese-big intlfonts-phonetic -> xfonts-intl-phonetic ivtools -> ivtools-unidraw kwnn -> freewnn-kserver kwnn-dev -> freewnn-kserver-dev lam -> lam-runtime lesstifg-dbg -> lesstif-dbg lesstifg-dev -> lesstif-dev libapache-mod-auth-sys -> apache-common libapache-mod-put -> apache-common libatalk1 -> netatalk libatalk1-dev -> netatalk-dev libc6-doc -> glibc-doc libdatecalc-perl -> libdate-calc-perl libg++2.8.2-dev -> libg++2.8.1.3-dev libgg0 -> libgii0 libgg0-dev -> libgii0-dev libggi1 -> libgii0, libggi2 libgnome0 -> libgnomesupport0 libjpegg-dev -> libjpeg62-dev liblockdev0-perl -> liblockdev1-perl liblockdev0g-dbg -> liblockdev1-dbg liblockdev0g-dev -> liblockdev1-dev libmd5-perl -> libdigest-md5-perl libpam0g-util -> libpam-runtime libwcsmbs, wcsmbs-locale-ja -> locale-ja libwine0.0.971116 -> libwine libxml0 -> libxml1 maplay -> maplay3 mysql-base -> mysql-gpl-client, mysql-client mysql-dev -> libmysqlclient6-dev newt0.25-dev -> libnewt-dev open -> console-tools palmpython -> pyrite perl -> perl5 perl-base -> perl5-base popt -> libpopt0, libpopt-dev ppp-pam -> ppp [11] ptx -> textutils python-bsddb, python-curses, python-misc, python-net -> python-base [12] python-mysql -> python-mysqldb python-pil -> python-imaging r-pdl -> pdl sgmlspm -> libsgmls-perl smbfsx -> smbfs sorcerer -> pccts t1lib0-bin -> t1lib-bin t1lib0-dev -> t1lib-dev tcd -> gnome-media timezones -> libc6 [13] tm -> wemi toshiba-fan, toshiba-hotkey -> toshutils v-bin -> libv-bin v-dbg -> libv-dbg v-dev, vm-dev -> libv-dev v1g -> libv1.22 vnc-doc -> xvncviewer, vncserver wcsmbs-locale-ko -> locale-ko wnn -> freewnn-jserver wnn-common -> freewnn-common wnn-dev -> freewnn-jserver-dev www-search -> libwww-search-perl wxxt1 -> libwxxt1 wxxt1-dev -> libwxxt-dev xfntbig5p-cmex24m -> xfonts-cmex-big5p xfntil2 -> xfonts-biznet-iso-8859-2-{base,75dpi,100dpi} xntp3-doc -> ntp-doc xpm-bin -> xpm4g-dev [14]
Несмотря на то, что мы старались сделать этот список исчерпывающим, он может быть не полон.
Между версиями 2.1 (`slink') и 2.2 (`potato'), некоторые пакеты были разделены на два и более пакетов. Основанием для такого деления, в целом, является то обстоятельство, что оригинальный пакет предоставляет большой набор функций, но лишь немногие из них используются большинством пользователей. Некоторые пакеты будут показывать сообщение о разделении во время установки, некоторые содержат предупреждение в описании, а некоторые просто игнорируют это обстоятельство.
Если вы обнаружите, что пакет потерял часть функциональности, посмотрите на
список, приведенный ниже, для восстановления нужной функциональности. Если это
не удастся, проверьте список изменений пакета, который можно найти в
/usr/doc/package/changelog.Debian.gz
.
Это список пакетов, которые были разделены (возможно неполный):
gmc: mc gmc mc-common [15] libpgtcl: libpgtcl pgaccess mozilla: mozilla libnspr3 libnspr3-dev netbase: netbase tcpd libwrap0 libwrap0-dev netstd: bootp bootparamd bootpc finger fingerd fping ftp ftpd icmpinfo pidentd rdate rdist routed rsh-client rsh-server ruptime rusers rusersd rwall rwalld rwho rwhod tftp tftpd traceroute wdsetup [16] perl-base: perl-base perl-5.004-base perl-5.005-base [17] perl: perl-5.004 perl-5.004-doc perl-5.005 perl-5.005-doc [18] postgresql: postgresql postgresql-client postgresql-test vim: vim vim-gtk [19]
перед обновлением системы настоятельно рекомендуется сделать ее полную резервную копию, или, по крайней мере, копию всех данных и файлов настроек, которые нежелательно потерять. Средства обновления весьма надежны, но сбой оборудования в течение этого процесса может разрушить систему.
Главный совет - сохраните содержимое каталогов /etc
,
/var/lib/dpkg
и вывод dpkg --get-selections.
Очень важно сообщать всем пользователям о предстоящих обновлениях, несмотря на
то, что, по крайней мере, пользователи имеющие доступ по ssh ничего не заметят
и смогут продолжать работу. Если вы хотите быть особо осторожным, то сделайте
резервную копию ил размонтируйте разделы пользователей (/home
)
перед обновлением.
Обновление дистрибутива должно производиться локально из текстовой виртуальной
консоли (или подсоединенного напрямую последовательного терминала) или удаленно
через ssh
.
Вы не должны обновлять систему, используя telnet
,
rlogin
, rsh
или из сеанса X, управляемого
xdm
на обновляемой системе. Это объясняется тем, что каждый из
этих сервисов может быть остановлен при обновлении, что приведет к
недоступности наполовину обновленной системы.
Независимо от метода обновления, рекомендуется вначале проверить статус всех пакетов и убедиться, что все они являются обновляемыми. Для этого можно выполнить:
dpkg -l | pager
или
dpkg --get-selections > filename
(и затем исследовать filename
), или проверить статус при помощи
dselect
.
Все операции по установке должны выполняться с привилегиями суперпользователя,
так что войдите в систему как root или используйте su
или
sudo
для получения соответствующих прав.
Настоятельно рекомендуется использовать программу /usr/bin/script
для записи описания сеанса обновления. [20] В этом случае, если случится неприятность, вы будете иметь
полное описание произошедшего и, при необходимости, сможете послать сообщение
об ошибке. Для начала записи, исполните:
script -a /upgrade-2.2.typescript
или что-то вроде этого. Запомните, что нельзя помещать typescript-файл во
временный каталог (такой как /tmp
или /var/tmp
).
Очень важно удалить все задержанные (hold) пакеты перед обновлением. Если
пакет, существенный для обновления, задержан, то обновление не удастся. Если
вы изменили или пересобрали пакет локально, и при этом не переименовали его и
не изменили поле epoch в версии, то, напротив, необходимо присвоить ему статус
задержанного, чтобы предохранить от обновления. Статус задержанного (`hold')
пакета может быть изменен при помощи dselect
(в меню Select,
используйте клавиши `H' и `G' для установки и снятия этого статуса
соответственно) или выполнив
dpkg --get-selections > filename
отредактировав filename
для изменения "hold" на
"install" и затем, с правами root, выполните
dpkg --set-selections < filename
Может быть неплохой идеей присвоить пакету ssh
статус задержанного
(`Hold') (если установлен), так как иначе он будет заменен на OpenSSH (новый
пакет ssh
), который пока имеет немного другой файл настроек, что
может привести к неудачному запуску sshd
после обновления.
Задержкой этого пакета вы обеспечите доступность системы; вы можете разрешить
эту проблему позже, или установить пакет ssh-nonfree
, который
полностью совместим с прежним, но пока не свободен. (Замечание: даже если
обновляться без `Hold', существующие соединения будут сохранены.)
Обратите внимание, что пакет ssh
в этой версии по умолчанию
запрещает вход root. Если вас не устраивает это, то установите опцию
PermitRootLogin в файле /etc/ssh/sshd_config
в
yes после обновления. (Чтобы dpkg не обновила файл, установив
новые умолчания, вы можете просто его изменить. Достаточно добавить пустую
строку.)
Важно, чтобы каталог /etc/rcS.d
существовала до обновления; иначе
установка пакета libc6
не удастся.
Не забудьте смонтировать все необходимые разделы (в частности root и
/usr
) в режиме read-write, с помощью команд типа:
mount -o remount,rw /mountpoint
Каталог /usr/share/doc
(если он уже существует) не должен быть
ссылкой (например, на /usr/doc
), так как это не даст установить
некоторые пакеты. Напротив, ссылка /usr/doc
на
/usr/share/doc
допустима. Заметьте, что при наличии такой ссылки
вы получите несколько сообщений о каталоге /usr/doc
, который не
удается удалить. Это нормально, вы можете спокойно игнорировать эти сообщения.
Рекомендуемый метод обновления - использование apt-get
напрямую,
как описано в следующей главе. APT - это следующее поколение программ
управления пакетами Debian, он позволяет производить обновление и установку
очень просто.
Вы не должны выполнять большие обновления пакетов с помощью
умалчиваемого метода доступа в dselect
, потому что он, в отличие
от метода apt
не выполняет все логические проверки пакетов при
установке и, таким образом, не столь надежен. Кроме того, такой способ
обновления меньше тестировался.
Если вы хотите обновляться с использованием CD-ROM, или если вы обновляетесь с
Debian GNU/Linux версии 2.0 или более ранней, то вам нужны пакеты
apt
и dpkg
, доступные в каталоге http://http.us.debian.org/debian/dists/potato/main/upgrade-i386/
на вашем зеркале Debian или в каталоге upgrade/
на первом CD-ROM
вашего комплекта CD Debian 2.2. Загрузите и установите эти пакеты в указанном
порядке:
dpkg -i dpkg_1.6.13_i386.deb dpkg -i apt_0.3.19_i386.deb
Это специально собранные статические версии, которые, могут быть установлены (и работать) на любой Debian-системе.
Если вы обновляетесь с Debian GNU/Linux версии 2.1 (любого выпуска) с
использованием сети (FTP, HTTP) или локального зеркала (возможно раздела диска
или смонтированного раздела NFS), то используйте пакеты apt
и
dpkg
, которые есть в этой версии. Конечно, если пакет
apt
не установлен (по умолчанию он не устанавливается), то
установите его.
Обратите внимание, что при обновлении с комплекта CD с любой
версии Debian вам необходимы статические версии пакетов apt
и
dpkg
, как описано выше.
Рекомендуем почитать страницы man apt-get(8)
и
sources.list(5)
. Если вы установили статические версии пакетов
apt
и dpkg
, то можете получить доступ к этим
страницам man только командами типа man -l
/usr/share/man/man8/apt-get.8.gz до тех пор, пока пакет
man-db
не обновлен.
Перед началом обновления вы должны создать файл настроек apt
's для
списка пакетов, /etc/apt/sources.list
.
apt
учтет все пакеты, найденные по адресам из строк
"deb" , и установит пакеты с наибольшими номерами,
отдавая приоритет источнику, указанному ранее (таким образом, при наличии
нескольких источников, обычно вначале указывают локальный диск, затем CD-ROM, и
потом зеркала FTP/HTTP).
Умалчиваемая конфигурация предусматривает установку с наших главных
Internet-серверов, но вы можете желать изменить
/etc/apt/sources.list
для использования других зеркал, поблизости
от вас. В этом случае, поставьте знаки комментария (#I в начале
существующих строк файла sources.list
.
Адреса зеркал Debian FTP или HTTP можно найти на http://www.debian.org/distrib/ftplist
(см. раздел "Full list of mirrors").
Например, пусть ваше ближайшее зеркало - ftp://alea.iacta.est/debian/ При проверке этого зеркала web-броузером или ftp-клиентом, вы обнаружили каталоги:
ftp://alea.iacta.est/debian/dists/potato/main/binary-i386/... ftp://alea.iacta.est/debian/dists/potato/contrib/binary-i386/...
Для использования этого зеркала программой apt
, добавьте такую
строку к вашему файлу sources.list
:
deb ftp://alea.iacta.est/debian potato main contrib
Заметьте, что `dists' будет добавлен автоматически, и аргументы, начиная с третьего, используются для указания путей к нескольким каталогам.
Если зеркало содержит также каталог non-US/* в дереве ftp://alea.iacta.est/debian/debian-non-US, то добавьте также строку:
deb ftp://alea.iacta.est/debian/debian-non-US potato/non-US main contrib
Все пакеты, необходимые для установки и загружаемые из сети хранятся в
/var/cache/apt
(и подкаталоге partial/
во время
загрузки), так что убедитесь в наличии достаточного места перед попыткой начала
установки. Для расширенной установки вы должны ожидать не менее 300 MB
загруженных данных.
Замечание: если вы используете статические версии пакетов apt
и
dpkg
, то hostname-lookup не работает (что есть еще один повод
использовать пакет apt
из slink при обновлении по сети). Для
решения этой проблемы указывайте IP-адреса зеркал в строках
"deb". (Используйте nslookup some-server)
Вместо использования зеркал FTP или HTTP, вы при желании можете модифицировать
файл /etc/apt/sources.list
для использования зеркала на локальном
диске (возможно, раздела NFS). В этом случае, поставьте знаки комментария
(#) в первых позициях строк "deb" в файле
sources.list
.
Например, ваше зеркало пакетов находится в /var/ftp/debian/
, и
имеет такие главные каталоги:
/var/ftp/debian/dists/potato/main/binary-i386/... /var/ftp/debian/dists/potato/contrib/binary-i386/...
Для использования их программой apt
, добавьте такие строки к
вашему sources.list
:
deb file:/var/ftp/debian potato main contrib
Заметьте, что `dists' будет добавлен автоматически, и аргументы, начиная с третьего, используются для указания путей к нескольким каталогам.
Если зеркало содержит также каталог non-US/* в дереве
/var/ftp/debian-non-US
, то добавьте также строку:
deb file:/var/ftp/debian-non-US potato/non-US main contrib
Вначале вы должны установить последнюю версию пакетов apt
и
dpkg
, как описано выше.
Если вы хотите использовать только CD, то поставьте знаки комментария
(#) в первых позициях строк "deb" в файле
sources.list
.
Убедитесь, что в вашем файле /etc/fstab
есть строка,
обеспечивающая монтирование CD-ROM на /cdrom
(только точка
монтирования /cdrom
позволит использовать программу
apt-cdrom
). Например, если /dev/hdc
- ваш дисковод
CD-ROM, то файл /etc/fstab
должен содержать строку наподобие:
/dev/hdc /cdrom auto defaults,noauto,ro 0 0
Заметим, что не должно быть пробелов между словами defaults,noauto,ro в четвертом поле.
Для проверки, вставьте CD и попробуйте
mount /cdrom (this will mount the CD to the mount point) ls -alF /cdrom (this should show the CD's root directory) umount /cdrom (this will unmount the CD)
Далее, запустите:
apt-cdrom add
для каждого из Debian Binary CD-ROM, чтобы добавить сведения о каждом CD в базу данных APT.
Если вы создали необходимый для apt
файл
sources.list
, то, с правами root, выполните:
apt-get update
Это позволит синхронизировать описание пакетов с указанными источниками, обновить информацию о новых и обновленных пакетах.
Некоторые люди предпочитают такую команду
apt-get --fix-broken --show-upgraded --simulate dist-upgrade | pager
для того, чтобы посмотреть на происходящее. Это займет некоторое время, но может помочь избежать сюрпризов. Такая команда сообщит вам, что плохо в вашей системе (и как это исправить), или, более вероятно, что произойдет в процессе обновления. Обратите особое внимание на пакеты, которые будут удалены; никаких важных пакетов среди них быть не должно.
После проверки работоспособности apt-get
, запустите:
apt-get --fix-broken --show-upgraded dist-upgrade
Эта команда осуществит полное обновление системы, т.е. установку всех доступных новых версий пакетов и разрешит все возможные зависимости пакетов разных версий. Если необходимо, она установит несколько новых пакетов (обычно новых версий библиотек, или удаленных пакетов) и удалит конфликтующие устаревшие пакеты.
При обновлении с комплекта CD-ROM, программа попросит вас вставлять нужные CD несколько раз в процессе обновления. Возможно, вам придется вставлять один и тот же CD несколько раз; это объясняется перекрестными ссылками пакетов с разных CD.
Новые версии установленных пакетов, которые не могут быть обновлены без
изменения статуса установки другого пакета останутся в своей текущей версии
(будут отображены как "held back"). Несмотря на это, может оказаться
необходимо при помощи dpkg
или dselect
удалить или
переустановить несколько испорченных пакетов или зависимостей. В качестве
альтернативы можно использовать apt-get dselect-upgrade после
apt-get -f dist-upgrade. (См. страницу man
apt-get(8)
.)
Опция --fix-broken (или просто -f) заставляет
apt
попытаться скорректировать систему с нарушенными
зависимостями. apt
делает невозможным существование нарушенных
зависимостей в системе.
Иногда бывает необходимо разрешить опцию APT::Force-LoopBreak в APT для
возможности временно удалить важный пакет с целью разрешения цикла
Conflicts/Pre-Depends. apt-get
сообщит вам об этом и прервет
обновление. Вы можете обойти этот случай, указав опцию -o
APT::Force-LoopBreak=1 в командной строке apt-get
.
Возможно, что структура зависимостей системы настолько испорчена, что
понадобится "ручное" вмешательство. Обычно это означает
использование dselect
или
dpkg --remove packagename
для удаления некоторых пакетов - нарушителей или
apt-get --fix-broken --show-upgraded install dpkg --configure --pending
В крайнем случае вы можете произвести переустановку пакета при помощи команды типа
dpkg --install /path/to/packagename.deb
После этих действий, вам необходимо продолжить обновление, используя описанную выше команду dist-upgrade .
Во время обновления, программа спросит вас о настройке или перенастройке
некоторых пакетов. Когда/если вы получите вопрос об замене файлов в каталогах
/etc/init.d
или /etc/terminfo
или замене файла
/etc/manpath.config
, то как правило, необходимо ответить `yes'
для сохранения согласованности компонентов системы. Вы всегда сможете
вернуться к старым версиям этих файлов, так как они сохраняются с расширением
.dpkg-old extension.
Если вы не уверены в том, что делаете, то запишите имя пакета или файла и отложите анализ ситуации на более позднее время. Вы сможете поискать информацию в журнале, чтобы осмыслить сообщения на экране во время обновления.
Когда apt-get dist-upgrade отработает, то "формально" обновление завершено, но есть еще несколько действий, которые должны быть выполнены из осторожности, перед последующей перезагрузкой.
Очень важно, чтобы пакеты locales
и util-linux
были
установлены. Это можно сделать так:
apt-get install locales util-linux
Если вы обновляетесь с Debian версии 2.0 или более ранней, то при этом будет
удален пакет getty
, так как getty
теперь в пакете
util-linux
.
Возможно есть еще несколько пакетов, которые надо установить, но которые не
замечены apt-get
, потому что apt-get
не выбирает
автоматически пакеты, от которых не зависят другие (например, пакеты в полях
Recommends: и Suggests: ). Нужные пакеты можно легко найти при помощи
dselect
или другой программы с экранным интерфейсом. В
dselect
, выберите метод `apt' в экране [A]ccess и обновите базу
данных информацией о новых пакетах, используя опцию [U]pdate. После этого, на
экране [S]elect нажимайте `o', `o', `v' и Shift-d, и ищите заголовок
--- Obsolete and local packages present on system ---
В этом разделе, все такие пакеты будут показаны. Например, старые пакеты
gimp-smotif
и gimp-dmotif
заменены на
gimp
в Debian GNU/Linux 2.1. Вы можете сразу установить новые
пакеты при помощи dselect
(который покажет вам экран
"dependency conflict resolution"), говорящий о том, что старые пакеты
должны быть удалены, или используя:
apt-get install gimp
который одновременно удалит старые пакеты (вам просто надо подтвердить это).
Другой пример, который часто не показывает даже dselect
, это
telnet, клиент и сервер talk, и сервер NFS, которые были выведены из старого
пакета netstd
. Вы можете установить их с помощью командной
строки:
apt-get install telnet telnetd talk talkd nfs-server
То же относится к пакету manpages-dev
, который выделен из пакета
manpages
.
Посмотрите, пожалуйста, документ Release Notes для Debian GNU/Linux 2.1 для подробной информации о том, какие пакеты были разделены в этой версии.
Если вы обновляетесь с Debian версии 2.0 или более ранней, и у вас установлена X Window System , выполните такие команды:
apt-get remove xbase apt-get install xfonts-base xfonts-75dpi xfonts-100dpi xfonts-scalable
И если вы не хотите запуска xdm
при загрузке ("X
autostart"), то выполните:
apt-get remove xdm
Вы можете почитать /usr/doc/xfree86-common/README.Debian-upgrade
для более подробного описания, но, возможно, больше ничего делать не надо.
Система конфигурации модулей ядра изменилась после Debian GNU/Linux версии 2.0.
Если вы обновляетесь с Debian 2.0 или более ранней, то необходимо
конвертировать вашу систему перед перезагрузкой. Обычно запуска
update-modules force бывает достаточно; несмотря на это чтение
страницы man update-modules(8)
рекомендуется.
В случае, если вы обновляетесь с Debian GNU/Linux версии 1.x (т.е. меньше чем
2.0), - старая система использует библиотеку `libc5', а новая обновляет систему
до `libc6'. Новая библиотека меняет формат файлов utmp
и
wtmp
; вы можете проверит это, попробовав команду
last
. Для решения этой проблемы необходима перезагрузка, но
вначале скопируйте один из старых файлов и очистите оба, при помощи команд:
cd /var/log mv wtmp wtmp.libc5 touch wtmp cd /var/run cp /dev/null utmp
Затем перезагрузите систему (замечание: это не нужно для обновления с
Debian версии 2.0 и выше!). После перезагрузки, программа last
будет снова показывать верные данные.
Обратите внимание, что ядро Linux не было обновлено в ходе описанных
процедур. Вы можете сделать это сами, установив один из пакетов
kernel-image-*
или собрав собственное ядро из исходных текстов.
Наслаждайтесь вашей новой системой Debian GNU/Linux 2.2 system! :-)
debian-doc@lists.debian.org