%versiondata; %defaultsdata; %messagesdata; %urlsdata; ]]> ]> Release Notes для &debian; 2.1 (Slink) <author> <name>Bob Hilliard</name> <email>hilliard@debian.org</email> <author> <name>Adam Di Carlo</name> <email></email> </author> <version>версия &docversion;, &docdate;</version> </titlepag> <chapt id="whats-new">Что нового в &debian; 2.1 <p> Debian 2.1 (известный также под кодовым название ``slink'') теперь официально доступен на еще двух платформах: Alpha (``alpha'') и SPARC (``sparc''). Ранее поддерживаемые архитектуры Intel x86 (``i386'') и Motorola 680x0 (``m68k''), разумеется, также поддерживаются и в этой версии Debian. Таким образом, общее количество официально поддерживаемых Debian платформ достигло четырех, что больше, чем количество платформ, поддерживаемых другими дистрибутивами GNU/Linux. <![ %alpha [ <p> Это первый официальный выпуск &debian; для платформы &arch-title;. Нам кажется, что он достаточно проработан, чтобы его выпустить. С другой стороны, он не был так же хорошо проверен пользователями и оттестирован, как i386 и m68k версии, и вы можете обнаружить несколько ошибок. Используйте нашу <url id="&url-bts;" name="Систему по отслеживанию ошибок">, чтобы сообщить о любых встреченных проблемах; обяхательно укажите, что эта проблема относит к платформе &architecture; ]]> <![ %sparc [ <p> Это первый официальный выпуск &debian; для платформы &arch-title;. Нам кажется, что он достаточно проработан, чтобы его выпустить. С другой стороны, он не был так же хорошо проверен пользователями и оттестирован, как i386 и m68k версии, и вы можете обнаружить несколько ошибок. Используйте нашу <url id="&url-bts;" name="Систему по отслеживанию ошибок">, чтобы сообщить о любых встреченных проблемах; обяхательно укажите, что эта проблема относит к платформе &architecture; ]]> <p> Для платформы &arch-title; Debian 2.1 поставляется с ядром версии &kernelversion;. <p> Пакеты системы X Window (их версия &x11ver;) были значительно изменены, поэтому вам, наверное, будет полезно прочитать <ref id="x">. <p> Раздел main состоит из около &num-of-distrib-pkgs; пакетов. Как обычно, размер дистрибутива вырос примерно на 50% по сравнению с предыдущим выпуском. <p> Порт Debian для архитектуры sparc основывется на новенькой glibc2.1. Таким образом, это первая основная дистрибуция, основывающаяся на glibc2.1. Внимание программистам: glibc2.1 двоично-совместима, но не совместима на уровне исходных текстов, с glibc2.0. Почти все, скомпилированное для glibc2 будет работать с glibc2.1, но если вы захотите перекомпилировать вашу программу с заголовками glibc2.1, иногда вам может понадобится подправить пару другую конструкций, которые больше не доступны в glibc2.1. <p> В отличие от перехода от 1.3.x (``bo'') к 2.0 (``hamm'') изменения от 2.0 к 2.1 (``slink'') носят поэтапный характер. Добавлены новые версии программ, исправлены различные ошибки и т.п. Пакет <package>apt</package> теперь содержит официально благословленную программу установки пакетов, которая, однако, работает только в связке с программой <package>dpkg</package>. Пакет <package>apt</package> предоставляет метод доступа для программы <prgn>dselect</prgn>, но вы можете также просто пользоваться утилитой командной строки <prgn>apt-get</prgn>. Программы в пакете <package>apt</package> моделируют текущее состояние всех установленных пакетов, что позволяет обеспечить правильное разрешение всех зависимостей пакетов в любой момент времени. <p> Как результат увеличившегося количества пакетов, дистрибутив на CD-ROM теперь состоит из <em>двух</em> дисков, содержащих скомпилированные пакеты. Это повлекло за собой изменение и улучшение инструментов установки, что теперь позволяет работать с наборами дисков. <p> Система установки Debian, которая называется <package>boot-floppies</package> (не смотря на название она позволяет устанвливать Debian не только с дискет), была модернизирована и улучшена для удобства пользователей. Документация была расширена и исправлена; для новых платформ документация была добавлена (но в некоторых местах документация для платформ, отличных от x86, несколько схематична, нам нужна помощь). <chapt id="upgrading">Обновление <![ %i386 [ <p> Если ваша система еще не была обновлена до Debian версии 2.0 (hamm), вы сначала должны проделать это в соответствии с <url id="&disturl;/main/upgrade-older-i386/README-upgrade">. ]]> <p> Независимо от метода обновления, который вы выберете, мы рекомендуем вам сначала проверить состояние всех пакетов. Это можно сделать с помощью команд <tt>dpkg -l | less</tt> или <tt>dpkg --get-selections > filename</tt>, или при помощи программы <prgn>dselect</prgn>. Желательно, чтобы вы удалили все блокировки обновлений перед самим обновлением. Если обновление какого-нибудь важного (essential) пакета было запрещено, процесс обновления может завершиться неудачно. Вы можете разрешить обновление пакета либо воспользовавшись программой <prgn>dselect</prgn>, либо отредактировав файл, получаемые командой <tt>dpkg --get-selections > filename</tt>, изменив слово "hold" на "install". Затем, воспользовавшись правами пользователя root, выполните команду <tt>dpkg --set-selections < filename</tt>. <p> Любое действие по установке пакета должно выполнятся пользователем с правами пользователя root, для этого либо зарегестрируйтесь в системе как пользователь root, либо воспользуйтесь программой <prgn>su</prgn>, либо воспользуйтесь программой <prgn>sudo</prgn> для получение этих привилегий. <p> Мы вам настоятельно рекомендуем использовать программу <prgn>/usr/bin/script</prgn> для регистрации сеанса обновления -- на самом деле, правильной идеей является использование программ <prgn>script</prgn> для записи любого сеанса работы с программой <prgn>dselect</prgn> (и, вообще, всего того, что желательно регистрировать). В последствии, если возникнут какие-нибудь проблемы, вы сможете увидеть, что произошло. Результат работы программы <prgn>script</prgn> будет помещен в файл, указанный параметром при запуске (<tt>script <var>имя-файла</var></tt>) или, при запуске без аргументов, в файл по умолчанию <file>typescript</file>. <p> Существует два метода обновления системы до slink: непосредственно с помощью программы <prgn>apt-get</prgn> или при помощи программы <prgn>dselect</prgn>. <sect id="apt-get">Работа с программой <prgn>apt-get</prgn> <p> Если вы еще не установили пакет <package>apt</package>, мы рекомендуем вам взять и установить его (пакет доступен как <![ %i386 [ <url id="&disturl;/main/upgrade-2.0-i386/apt_0.1.8_i386.deb">]]><![ %not-i386 [ <url id="&disturl;/main/binary-&architecture;/admin/" name="&disturl;/main/binary-&architecture;/admin/apt_*.deb">]]>). В зависимости от навигатора, который вы используете, вам может оказаться необходимым предпринять специальные действия, чтобы получить его без ошибок. Например, если вы используете Netscape, вам необходимо удерживать клавишу <em>Shift</em> при щелчке по ссылке на необходимый файл. Для установки полученного файла, выполните команду <tt>dpkg -i apt*.deb</tt> как пользователь root. <p> Если у вас есть дистрибутив на CD, вы можете установить пакет <package>apt</package> прямо с него. Как пользователь root, выполните <example> <![ %i386 [ dpkg -i <var>cd_mount_point</var>/upgrade-2.0-i386/apt_0.1.8_i386.deb ]]> <![ %not-i386 [ dpkg -i <var>cd_mount_point</var>/debian/dists/slink/main/binary-&architecture;/admin/apt*.deb ]]> </example> <p> Мы рекомендуем вам сначала прочитать страницы Руководства <manref name="apt-get" section="8"> и <manref name="sources.list" section="5">. Перед началом обновления вы должны правильно настроить пакет <package>apt</package>, изменив файл <file>/etc/apt/sources.list</file>. Набор параметров по умолчанию обеспечивает установку и обновление по Internet. <p> Если вы устанавливаете пакеты с CD, первая строчка после комментариев должна быть: <example> deb file:<var>cd_mount_point</var>/debian stable main </example> Если у вас пока нет доступа к Интернет (или вы не хотите установить никакие исправленные пакеты), закомментируйте другие две строчки в этом файле. В противном случае, вы можете указать ближайшее зеркало архива Debian. <p> Как только вы настроили пакет <package>apt</package>, выполните: <example> apt-get update apt-get -f dist-upgrade </example> <p> Если существуют обновления для установленных пакетов, вы можете установить их, выполнив команду <tt>apt-get upgrade</tt>: ни при каких обстоятельствах ни один из установленных пакетов не будет удален, как, впрочем, ни один неустановленный пакет пакет не будет установлен. Те обновления, которые не могут быть произведены без установки дополнительных пакетов или удаления существующих, установлены не будут. Как результат, вым может оказаться необходимым поспользоваться программами <prgn>dpkg</prgn> или <prgn>dselect</prgn> для удаления или установки зависимых пакетов. <p> Вы можете также воспользоваться параметром <tt>-f</tt>; в этом случае программа <prgn>apt-get</prgn> попытается разрешить проблемы с зависимостями пакетов. Программы пакета <package>apt</package> не позволяют существовать пакетам со сломанными (неудовлетворенными) зависимостями. Возможно, что структура зависимостей системы настолько испорчена, что может потребоваться использование программы <prgn>dselect</prgn> или команды <tt>dpkg --remove <var>package</var></tt> для удаления причиняющих неприятности пакетов. <p> Если после использования этих двух команд, программа <prgn>apt-get</prgn> сообщает о нарушенных зависимостях, попробойте поправить систему (возможно, удалением сломанных пакетов, или установкой пакетов для отсутсвующих зависимостей). Если вам не удалось привести систему в состояние, когда программа <prgn>apt-get</prgn> не сообщает ни о каких ошибках, вы <em>должны</em> обновить систему при помощи программы <prgn>dselect</prgn>, указав любой метод доступа отличный от метода apt. <sect id="dselect">Использование программы dselect <p> Этот раздел предполагает, что вы уже обладаете определенным знаниями о программе <prgn>dselect</prgn>. В конце концов, вы же уже установили себе систему и пытаетесь ее обновить, правда? Если вы хотите освежить свои знания, Вы можете прочитать <url id="&url-dselect-beginner;" name="dselect Tutorial">. <p> Первый шаг, который вам нужно сделать, это указать так называемый метод доступа. Подробную информацию о методах доступа и о том, какой метод вы должны использовать, вы можете найти на страничке <url id="&url-dselect-beginner;" name='"dselect -- рукводство для новичка"'>. <p> Метод доступа `apt' -- это самый быстрый метод из имеющихся на данный момент. Он позволяет устанавливать и настраивать пакеты в правильной порядке, что означает, что все зависимости разрешаются на момент распаковки пакета, что делает ненужным второй проход. Учтите, что если какие-нибудь пакеты в вашей системе настолько сломаны, что команда <tt>apt-get upgrade</tt> не позволяет вам ничего сделать, вы не можете использовать метод доступа `apt'. <p> Метод доступа `mounted' сначала устанавливает и настраивает все пакеты, необходимые для разрешения зависимостей типа Pre-Depends, что позволяет уменьшить количетсво необходимых проходов. Такую же стратегию применяет и метод доступа `mountable'. <p> Версия метода доступа `http', который вы поставляется вместе с Debian 2.0 (hamm), не обрабатывает правильно зависимости типа Pre-Depends, поэтому мы не рекомендуем его вам использовать. Если вы используете эту версию пакета dpkg-http, программа будет задавать вам вопрос <tt>Abort automatic installation (Y/n)?</tt> (<tt>Прервать процесс установки (Д/н)?</tt>) каждый раз, когда будет встречаться неразрешенная зависимость типа Pre-Depends. Из-за ошибки, допущенной в этой версии пакета <package>dpkg-http</package>, в этот момент пользователь должен нажать <tt>Ctrl-C</tt> вместо <tt>Y</tt> и вручную (<tt>dpkg -i</tt>) установить необходимый пакет. Вы затем должны заново запустить программу <prgn>dselect</prgn> для того, чтобы найти следующий пакет с неразрешенными зависимостями типа Pre-Depends. Для того, чтобы сэкономить время, вы можете вручную установить следующие пакеты из Debian 2.1 (slink): <package>libc6</package>, <package>libncurses4</package>, <package>libreadlineg2</package>, <package>libstdc++2.9</package>, <package>slang1</package> и <package>libhtml-parser-perl</package>. <p> Мы вам рекомендуем сначала обновить существующие пакеты и только затем устанавливать новые. После запуска программы <prgn>dselect</prgn> выполните шаги ``Access'', ``Update'' и ``Select''. Сразу после того, как вы окажетесь перед основным экраном шага ``Select'', нажмите на &enterkey;. Возможно, это приведет к появлению экрана разрешения конфликтов зависимостей. После разрешения всех конфликтов (обычно, для этого достаточно нажать на &enterkey;) выполните шаг ``Install'', а затем ``Configure''; это позволит вам обновить все установленные пакеты. Только после этого вы можете воспользовать шагом ``Select'' и ``Install'' для установки дополнительных пакетов. <p> Если вы используете программы <prgn>dpkg</prgn> или <prgn>dselect</prgn> для обновления большого количества пакетов, вас, скорее всего, придется повторить шаги установки и настройки несколько раз перед тем, как все установленные пакеты будут полностью настроены. В зависимости от того, какой метод доступа вы выбрали, может оказаться полезным выполнить шаг ``Update'' между проходами установки. Также может оказаться полезным выход из программы <prgn>dselect</prgn> сразу после завершения шага ``Update''. <sect id="cautions">Общие предосторожности <p> Вы не должны запускать процесс обновления из-под сеанса системы X Window, управляемого программой <prgn>xdm</prgn> на машине, на которой вы собираетесь это делать (при обновлении программы <prgn>xdm</prgn> и <prgn>xfs</prgn> останавливаются, что может завершить ваш сеанс работы посередине процесса обновления). Это может оказаться затрудненным, если машина настроена таким образом, что при ее старте автоматически запускаеться система X Window. Если X-сервер, который вы используете, находится на машине, на которой вы собираетесь обновлять сервер шрифтов <prgn>xfs</prgn>, то соединение между X-сервером и программой <prgn>xfs</prgn> будет разорвано в момент остановки последней. Это не критично, но может раздражать. Если вы не уверены, работает ли ваш сеанс системы X Window под управлением программы <prgn>xdm</prgn> или нет, обновляйте вашу системы, работая на виртуальной консоли Linux. <p> Вы также не должны обновлять вашу систему, работая через telnet-соединение. При удалении старой версии пакета <package>netstd</package>, telnet-соединение будет разорвано и вы не сможете снова подсоединиться к вашей системе, пока вы не сумеете как-то установить пакет <package>telnetd</package>. Чтобы этого избежать сначала установить пакеты <package>netstd</package> и <package>telnetd</package> из Debian 2.1 (slink). <chapt id="release-details">Дополнительные сведения о slink <sect id="x">Великая реорганизация системы X Window <p> Этот раздел был подготовлен Branden Robinson <email>branden@debian.org</email>. <p> Великая реорганизация системы X Window произошла с версией 3.3.2.3a-2, поставляемой с Debian 2.1 (slink). <p> Пакет <package>xbase</package> состоял из всевозможных программ, данных и документации для системы X Window. Теперь это не так. Содержимое этого пакеты было перераспределно между другими пакетами и, в большинстве случаев, были просто созданы новые пакеты. <p> Новые пакеты были созданы по разным причинам: <enumlist> <item> В некоторых случаях существовали не объявленные зависимости между другими программами. В частности, программы <prgn>rstart</prgn> и <prgn>rstartd</prgn> зависят от программы <prgn>rsh</prgn>. <item> Другие программы (например, демоны) должны были быть выделены для упрощения управления. Это включает программы <prgn>xdm</prgn> и <prgn>xfs</prgn>. Так как теперь эти программы представлены отдельными пакетами, больше нет необходимости использовать файл <file>/etc/X11/config</file> для указания того, должны они запускаться или нет. <item> Несколько программ, предлагаемых предыдущей версией пакета <package>xbase</package>, такие как <prgn>twm</prgn>, <prgn>xmh</prgn> и <prgn>xterm</prgn>, имеют популярные замены. (Полезно помнить, что все исходные тексты системы X Window, даже библиотеки, исходно предполагались как примеры реализации различных стандартов.) <item> Было также желательно иметь общее основание как для систем, планируемых как X-терминалы (которые исполняют локальных клиентов на с удаленной машины), так и для систем, планируемых как серверы приложени, на которых могут отсутствовать X-серверы или оборудование позволяющее запускать их. Для этого был создан пакет <package>xfree86-common</package>. Это также упрощает задачу по разрешению проблем с обширными изменениями названий каталогов, относящихся к системе X Window, которые могут возникнуть в будущем (например, X11R7 или просто перенос всех файлов относящихся к системе X Window в каталог <file>/usr</file>). </enumlist> <p> Новыми пакетами системы X Window в Debian являются <package>rstart</package>, <package>rstartd</package>, <package>twm</package>, <package>xbase-clients</package>, <package>xdm</package>, <package>xfree86-common</package>, <package>xfs</package>, <package>xmh</package>, <package>xproxy</package>, <package>xserver-common</package>, <package>xsm</package>, и <package>xterm</package>. Некоторые файлы из старого пакета <package>xbase</package> были помещены в пакеты <package>xlib6g</package> (XKB и информация о локали) и <package>xlib6g-dev</package> (инструменты разработчика). <p> Теперь пакет <package>xbase</package> пуст и существует только для того, чтобы система управления пакетами могла автоматически установить все новые пакеты (и последнюю версию библиотек системы X Window). Сразу после обновления, вы можете удалить этот пакет. <p> Более того, пакеты со шрифтами и со статическими библиотеками были переименованы (см. <ref id="renames">). Нам кажется, что новые имена более понятны. Заметьте, однако, что старые пакеты могут и не быть автоматически обновлены. Это связано с тем, что имена изменились, и пока нет простого способа указать системе управления пакетами, что данный пакет изменил имя. Однако, если вы оставите старые пакеты со шрифтам и со статическими библиотеками, это не приведет ни к каким серьезным последствиям: содержимое этих пакетов не изменилось. В частности, пакет сервер шрифтов xfs, находящийся ранее в пакете <package>xbase</package>, а теперь в отдельном пакете, будет правильно работать как с пакетом <package>xfntbase</package> так и с пакетом <package>xfonts-base</package>. <p> Но мы вам таки рекомендуем установить переименованные версии этих пакетов, чтобы вы все работало правильно в случае если содержимое этих пакетов изменится. <p> Резюмируя, хочется выделить четыре момента: <enumlist> <item> После обновления пакет <package>xbase</package> необходимо удалить. Если вы его оставите, вам придется указывать параметр <tt>--force-depends</tt> при запуске программы <prgn>dpkg</prgn> для удаления любого пакета, от которого зависит пакет <package>xbase</package> (например, <package>xdm</package> или <package>xfs</package>). <example> dpkg --remove xbase </example> <item> Программы <prgn>xdm</prgn> и <prgn>xfs</prgn> будут автоматически запущены при старте системы; это может оказаться сюрпризом для людей ранее не использовавших программу <prgn>xdm</prgn>, так как по умолчанию программа <prgn>xdm</prgn> запускает локальный X-сервер. Если вы не хотите, чтобы эти программы запускались, удалите пакеты перед следующей перезагрузкой компьютера. <example> dpkg --remove xdm dpkg --remove xfs </example> <item> Файл <file>/etc/X11/config</file> больше не используется для настройки пакетов и программ системы X Window и может быть удален, если его не использует какая-нибудь ваша программа или конфигурационный файл. Отдельно заметим, что этот файл больше не имеет никакого отношения к управлению запуском программ <prgn>xdm</prgn> и <prgn>xfs</prgn>. Параметры настройки, присутсвовашие в этом фале, теперь перераспределены между другими конфигурационными файлами. После обновления пакетов системы X Window, следующие страницы Руководства помогут вам получить необходимую информацию. <example> man Xsession.options man xdm.options man xfs.options </example> <item> Ниже приведены команды, которые помогут вам перейти к новым пакетам со шрифтами и статическими библиотеками. Заметьте, что большинству людей понадобятся только первые четыре из приведенных пакетов. Для ускорения процесса, вы можете указать несколько имен файлов пакетов после параметра <tt>--install</tt>. Для того, чтобы использовать эти команды без изменений, вы должны находится в каталоге, в котором находятся указанные файлы пакетов. <example> dpkg --install xfonts-base_3.3.2.3a-11.deb dpkg --install xfonts-75dpi_3.3.2.3a-11.deb dpkg --install xfonts-100dpi_3.3.2.3a-11.deb dpkg --install xfonts-scalable_3.3.2.3a-11.deb dpkg --install xfonts-cjk_3.3.2.3a-11.deb dpkg --install xfonts-cyrillic_3.3.2.3a-11.deb dpkg --install xfonts-pex_3.3.2.3a-11.deb dpkg --install xlib6-static_3.3.2.3a-11.deb dpkg --install xlib6g-static_3.3.2.3a-11.deb </example> </enumlist> <sect id="renames">Переименованные пакеты <p> ВНИМАНИЕ: Этот раздел пересекается с <ref id="x">. <p> Следующие пакеты были переименованы. В большинстве, если не во всех, случаях полям Conflicts, Depends и Provides были присвоены значения, которые позволяют автоматически устанавливались новые пакеты, заменяющие старые. <example> libc6-doc -> glibc-doc xfntbase -> xfonts-base xfnt75 -> xfonts-75dpi xfnt100 -> xfonts-100dpi xfntbig -> xfonts-cjk xfntcyr -> xfonts-cyrllic xfntpex -> xfonts-pex xfntscl -> xfonts-scalable xslib -> xlib6-static xslibg -> xlib6g-static </example> <sect id="splits">Разбиение пакетов <p> ВНИМАНИЕ: Этот раздел пересекается с <ref id="x">. <p> При переходе от Debian 2.0 (hamm) к Debian 2.1 (slink) некоторые пакеты были разбиты на два и более новых пакетов. Обычно, причина этого состоит в том, что исходные пакеты предлагали разнообразные программы, из которых только несколько использовалось пользователем. Некоторые пакеты выводят предупреждение о том, что этот пакет был разбит на несколько, некоторые упоминают этот факт в описании пакета, а некоторые просто игнорируют этот факт. <p> Если вы обнаружите, что в знакомом вам пакете нет той или иной функциональности, проверьте в нижеприведенном списке, не нужно ли вам установить еще какие-нибудь пакеты для получения необходимой вам функциональности. Если интересующий вас пакет отсутсвуюет в списке, прочитайте файл <file>/usr/doc/<var>имя пакета</var>/changelog.Debian.gz</file>. <p> Ниже приведен список пакетов, которые были разбиты на несколько новых (этот список может быть неполным): <example> graphics/ivtools-bin_0.6.2-4.deb разбит на 2 пакета: devel/ivtools-dev graphics/ivtools-bin mail/imap_4.2-1.deb разбит на 2 пакета: mail/imap mail/ipopd misc/plan_1.6.1-7.deb разбит на 2 пакета: misc/netplan misc/plan net/netstd_3.07-2.deb разбит на 10 пакетов: mail/vrfy net/bwnfsd net/netstd net/nfs-server net/rexec net/talk net/talkd net/telnet net/telnetd non-free/net/pcnfsd news/slrn_0.9.4.3-4.deb разбит на 2 пакета: news/slrn news/slrnpull utils/nosql_0.9-0.deb разбит на 2 пакета: utils/nosql utils/nosql-fastops web/apache_1.3.0-2.deb разбит на 2 пакета: web/apache web/apache-common web/php3_3.0-2.deb разбит на 2 пакета: web/php3 web/php3-cgi x11/wmaker_0.14.1-7.deb разбит на 2 пакета: x11/asclock x11/wmaker x11/xbase_3.3.2.3-2.deb разбит на 16 пакетов: mail/xmh x11/rstart x11/rstartd x11/twm x11/xbase x11/xbase-clients x11/xdm x11/xext x11/xf86setup x11/xfs x11/xlib6g-dev x11/xmodmap x11/xproxy x11/xserver-common x11/xsm x11/xterm x11/xserver-vga16_3.3.2.3-2.deb разбит на два пакета: x11/xf86setup x11/xserver-vga16 </example> </book> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-namecase-general:t sgml-general-insert-case:lower sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:2 sgml-indent-data:nil sgml-declaration:nil sgml-parent-document:nil sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: --> <!-- vim:tw=79:noet:ts=8 -->