su13@pochta.ru

| Первый | Второй | Третий | Четвёртый | Пятый | Шестой | Седьмой |



[ назад ] [ Аннотация ] [ Заметка об авторских правах ] [ Содержание ] [ вперед ]

Debian GNU/Linux 2.2 для Intel x86 Руководство пользователя
Глава 12 Обновление с предыдущих версий


Процедура, описанная ниже, может быть использована для обновления любой из предшествующих версий до версии 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. Однако, несколько замечаний сохранились, в основном касательно сети:

Вам необходимо прочитать 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 будет остановлен. Это не критично, но неприятно. Замечание: подобное может случиться и с другими демонами, будьте к этому готовы.


12.1 Переименованные пакеты

Следующие пакеты переименованы, как это показано ниже. В большинстве, если не во всех случаях, поля 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]

Несмотря на то, что мы старались сделать этот список исчерпывающим, он может быть не полон.


12.2 Разделенные пакеты

Между версиями 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]


12.3 Необходимые действия до обновления

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

Главный совет - сохраните содержимое каталогов /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 не выполняет все логические проверки пакетов при установке и, таким образом, не столь надежен. Кроме того, такой способ обновления меньше тестировался.


12.4 Процесс обновления

Если вы хотите обновляться с использованием 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).


12.4.1 Настройка обновления через Internet

Умалчиваемая конфигурация предусматривает установку с наших главных 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)


12.4.2 Настройка для обновления с локального зеркала

Вместо использования зеркал 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


12.4.3 Настройка для обновления с дисков CD-ROM

Вначале вы должны установить последнюю версию пакетов 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.


12.4.4 Обновление

Если вы создали необходимый для 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 делает невозможным существование нарушенных зависимостей в системе.


12.4.5 Возможные проблемы во время или после обновления

Иногда бывает необходимо разрешить опцию 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 GNU/Linux 2.2 для Intel x86 Руководство пользователя
Bruce Perens, Sven Rudolph, Igor Grobman, James Treacy, Adam Di Carlo, Josip Rodin, Bob Hilliard, Anne Bezemer, Jason Gunthorpe, Stéphane Bortzmeyer, Петр Новодворский debian-doc@lists.debian.org
GNU OCXE GNU LINUX
Hosted by uCoz