Глава 5. Что нужно знать о stretch

Содержание

5.1. Конкретные шаги обновления для stretch
5.1.1. Отложенное монтирование /usr более не поддерживается
5.1.2. FTP-доступ к сопровождаемым Debian зеркалам будет прекращён
5.1.3. Заслуживающие внимания устаревшие пакеты
5.1.4. То, что следует сделать после обновления и до перезагрузки
5.1.5. Исполняемые файлы теперь компилируются по умолчанию с опцией позиционной независимости (PIE)
5.1.6. Большинство LSB-совместимых пакетов было удалено
5.2. Ограничения поддержки безопасности
5.2.1. Состояние безопасности веб-браузеров
5.2.2. Отсутствие поддержки безопасности экосистемы libv8 и Node.js
5.3. Проблемы с отдельными пакетами
5.3.1. Старые алгоритмы шифрования и протокол SSH1 по умолчанию отключены в OpenSSH
5.3.2. Изменения APT, которые возможно не поддерживают обратную совместимость
5.3.3. Настольные системы переходят на использование Xorg-драйвера libinput
5.3.4. Upstart удалён
5.3.5. Инструмент debhelper теперь по умолчанию создаёт пакеты dbgsym
5.3.6. Изменения, связанные с OpenSSL
5.3.7. Изменения в Perl могут приводить к поломкам стороннего ПО
5.3.8. Несовместимость PostgreSQL PL/Perl
5.3.9. Пакет net-tools устарел и будет заменён на пакет iproute2
5.3.10. Рекомендуется использовать опцию монтирования _netdev при использовании AoE-устройств (ATA через локальную сеть)
5.3.11. Безвредные предупреждения вида «Unescaped ... in regex is deprecated, ...» во время обновления
5.3.12. Миграция хранилища правил SELinux
5.3.13. iSCSI Enterprise Target no longer supported

Иногда изменения, внесённые в новый выпуск, приводят к побочным эффектам, которых нельзя избежать без появления ошибок где-то ещё. Этот раздел описывает проблемы, которые уже известны нам. Прочитайте также список известных ошибок, соответствующую документацию на пакеты, отчёты об ошибках и другую информацию, указанную в Раздел 6.1, «Что ещё можно прочитать».

5.1. Конкретные шаги обновления для stretch

В данном разделе описываются шаги обновления с jessie до stretch

5.1.1. Отложенное монтирование /usr более не поддерживается

[Примечание]Примечание

Данный раздел касается систем, использующих ядро собственной сборки, на которых каталог /usr находится на отдельной точке монтирования, отличной от /. Если вы используете пакеты ядра, предоставляемые Debian, то данная проблема не актуальна для вашей системы.

Монтирование каталога /usr с использованием только инструментов, расположенных в каталоге /, более не поддерживается. Ранее эта возможность работала только для небольшого количества настроек, теперь она явным образом не поддерживается.

Это означает, что для stretch все системы, в которых каталог /usr расположен на отдельном разделе, следует использовать генератор initramfs, который будет монтировать каталог /usr. Все генераторы initramfs в stretch позволяют это делать.

5.1.2. FTP-доступ к сопровождаемым Debian зеркалам будет прекращён

Сопровождаемые Debian зеркала в скором времени не будут доступны через FTP. Если вы используете протокол ftp: в вашем файле sources.list, то вам следует перейти на использование http:. В качестве примера такого перехода обратите внимание на следующее:

deb http://deb.debian.org/debian          stretch         main
deb http://deb.debian.org/debian-security stretch/updates main

# tor-вариант (требуется пакет apt-transport-tor)
# deb  tor+http://vwakviie2ienjx6t.onion/debian          stretch            main
# deb  tor+http://sgvtcaew4bxjd7ln.onion/debian-security stretch/updates    main

Приведённые выше примеры не включают в себя разделы non-free и contrib. Если вам требуются компоненты из указанных разделов, то не забудьте добавить их в свой файл настройки.

За дополнительной информацией обращайтесь к объявлению: Отключение публичных FTP-служб.

5.1.3. Заслуживающие внимания устаревшие пакеты

Ниже приводится список заслуживающих внимания устаревших пакетов (описание см. в Раздел 4.8, «Устаревшие пакеты»).

В список устаревших пакетов входят следующие пакеты:

  • Большинство пакетов -dbg были удалены из основного архива. Они были заменены на пакеты -dbgsym, которые теперь доступны из архива debian-debug. Смотрите раздел Раздел 2.2.8, «Новый архив для символов отладки».

  • Менеджеры паролей fpm2 и kedpm более не сопровождаются разработчиками основной ветки разработки. Перейдите на использование другого менеджера паролей, например, pass, keepassx или keepass2. Убедитесь, что вы извлекли ваши пароли из fpm2 и kedpm до удаления указанныхпакетов.

  • Пакет net-tools устарел, он заменён на iproute2. Подробную информацию смотрите раздел Раздел 5.3.9, «Пакет net-tools устарел и будет заменён на пакет iproute2», либо Справочное руководство Debian.

  • Инструменты мониторинга nagios3 были удалены из выпуска stretch. Пакет icinga является наиболее близким аналогом. Этот инструмент считывает файлы настройки из другого места (отличного от соответствующего места nagios), но в остальном совместим с последним.

5.1.4. То, что следует сделать после обновления и до перезагрузки

Когда будет завершено выполение команды apt-get dist-upgrade, «формальная» процедура обновления будет завершена. Для обновления до stretch не требуется выполнять каких-либо специальных действий до выполнения перезагрузки.

5.1.5. Исполняемые файлы теперь компилируются по умолчанию с опцией позиционной независимости (PIE)

По умолчанию компилятор GNU GCC 6, предоставляемый Debian stretch, компилирует все исполняемые файлы с опцией позиционной независимости. Это позволяет снизить риск от целого класса уязвимостей.

К сожалению, ядро Linux, поставляемое в Debian 8 (вплоть до версии 8.7), содержит проблему, которая приводит к тому, что некоторые программы, скомпилированные с опцией позиционной независимости, аварийно завершают свою работу с неинформативным сообщением типа ошибки сегментирования. Данная проблема решена в версии Linux, поставляемой в 8.8 (версия 3.16.43 или более поздняя), а также в ядре, поставляемом в Debian 9 (версия 4.9 или более поздняя).

Рекомендуется обновить ядро до исправленной версии, а затем перезапустить систему до начала обновления до выпуска stretch. Если вы используете ядро из Debian 8.8 или более новое, то для вас эта проблема не актуальна.

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

5.1.5.1. Поведенческие изменения PIE для системных администраторов и разработчиков

[Примечание]Примечание

Данный раздел предназначен в первую очередь для разработчиков или системных администраторов. Обычным пользователям данный раздел вряд ли будет актуален.

Описанные выше особенности приводят к некоторым изменениям, о которых полезно знать.

  • Инструмент file (помимо прочих) классифицирует такие двоичные файлы как «разделяемые объекты», а не как «исполняемые файлы». Если у вас используются фильтры на основе двоичных файлов, то может быть их придётся обновить (например, к таковым относятся фильтры спама).

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

    relocation ... against '[SYMBOL]' can not be used when making a shared object; recompile with -fPIC
    

    Заметьте, что даже хотя это сообщение об ошибке и говорит о -fPIC, достаточно заново скомпилировать код с опцией -fPIE (которая по умолчанию включена в пакеты GCC 6, поставляемые в выпуске stretch).

  • На первых порах позиционно независимые исполняемые файлы ассоциировались со снижением производительности на некотором оборудовании. В частности, это касается архитектуры Debian i386 (32-битные машины Intel). Хотя в GCC 5 и GCC 6 была существенно улучшена производительность позиционно независимых исполняемых файлов на 32-битных машинах Intel, данная оптимизация может оказаться неприменимой ко всем архитектурам. Рекомендуется оценить производительность вашего кода в случае, если архитектура целевой машины имеет очень ограниченное число регистров.

5.1.6. Большинство LSB-совместимых пакетов было удалено

В связи с отсутствием интереса и возможностей тестирования разработчики Debian приняли решение об удалении подавляющего большинства совместимых с Linux Standard Base (LSB) пакетов.

Debian всё равно предоставляет несколько избранных ключевых утилит LSB, используемых как внутренне, так и внешне, например, lsb-release и функции инициализации sysvinit в lsb-base. Более того, Debian твёрдо придерживается Стандарта иерархии файловой системы (FHS) версии 2.3 с небольшими изменениями, описываемыми в руководстве по Политике Debian.

5.2. Ограничения поддержки безопасности

Для некоторых пакетов Debian не может гарантировать какой-либо минимальной поддержки исправлений безопасности. О таких пакетах написано в следующих разделах.

Заметьте, что пакет debian-security-support помогает отслеживать статус поддержки безопасности установленных пакетов.

5.2.1. Состояние безопасности веб-браузеров

В Debian 9 включено несколько браузерных движков (browser engines), в которых постоянно находят большое количество уязвимостей. Из-за этого и частичного отсутствия авторской поддержки предыдущих версий возникают большие сложности с переносом исправлений безопасности в старые версии. Также из-за библиотечных зависимостей невозможно произвести обновление до новых версий. В силу этого, браузеры, созданные на основе механизмов webkit, qtwebkit и khtml, включены в Stretch, но не обладают полной поддержкой безопасности. Данные браузеры лучше не использовать для просмотра ненадёжных сайтов.

Для повседневной работы рекомендуется использовать браузеры Firefox или Chromium.

Chromium, хотя он основан на кодовой базе Webkit, является производным пакетом, который будет поддерживаться в актуальном состоянии путём сборки текущих выпусков Chromium для стабильного выпуска. Firefox и Thunderbird также будут поддерживаться в актуальном состоянии путём сборки текущих выпусков версии ESR для стабильного выпуска.

5.2.2. Отсутствие поддержки безопасности экосистемы libv8 и Node.js

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

К сожалению, это означает, что пакеты libv8-3.14, nodejs, а также другие пакеты node-* указанной экосистемы не должны использоваться с недоверенным содержимым, таким как непроверенные данные из сети Интернет.

Кроме того, эти пакеты не будут получать обновлений безопасности в течении жизненного цикла stretch.

5.3. Проблемы с отдельными пакетами

В большинстве случаев обновление пакетов с jessie до stretch должно проходить без особых проблем. В некоторых случаях может потребоваться небольшое вмешательство до или во время процесса обновления; подробности приводятся ниже для каждого отдельного пакета.

5.3.1. Старые алгоритмы шифрования и протокол SSH1 по умолчанию отключены в OpenSSH

В выпуске OpenSSH 7 по умолчанию отключены некоторые устаревшие алгоритмы шифрования и протокол SSH1. Будьте внимательны при выполнении обновления тех машин, к которым у вас имеется доступ только через SSH.

Moreover, the default of the "UseDNS" configuration option has changed from yes to no. This may cause users who use the "from=" functionality in authorized_keys to limit ssh access by host to be locked out, which is especially troublesome if upgrading remotely.

Дополнительную информацию см. в документации по OpenSSH.

5.3.2. Изменения APT, которые возможно не поддерживают обратную совместимость

Данный раздел касается некоторых несовместимых изменений в APT, которые могут повлиять на вашу систему.

5.3.2.1. APT теперь скачивает файлы от лица непривилегированного пользователя (_apt)

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

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

  • у пользователя имеется доступ для чтения к файлам в /var/lib/apt/lists и /var/cache/apt/archives.

  • у пользователя должен быть доступ к доверенному хранилищу APT (/etc/apt/trusted.gpg и /etc/apt/trusted.gpg.d/)

  • пользователь может разрешать DNS-имена и загружать файлы. Например, можно использовать следующие методы проверки:

    # Из пакета dnsutils (если используется tor, то выполните проверку с помощью tor-resolve).
    $ nslookup debian.org >/dev/null || echo "Не удаётся разрешить debian.org"
    $ wget -q https://debian.org/ -O- > /dev/null || echo "Не удаётся скачать главную страницу debian.org"
    

    При решении проблем с DNS убедитесь, что файл /etc/resolv.conf доступен для чтения.

5.3.2.2. Новый движок фиксации пакетов в APT

В APT 1.1 был добавлен новый движок фиксации пакетов, который теперь соответствует описанию, приведённому на странице руководства.

Старый движок фиксации присваивал один приоритет фиксации на пакет; новый движок присваивает приоритеты фиксации на версию. Движок теперь выбирает версию с наибольшим значением фиксации, которая не приводит к снижению номера версии и имеет значение фиксации > 1000.

Данные изменения влияют на некоторые фиксации, в особенности на фиксации с отрицательными значениями. Ранее фиксация версии со значением -1 приводила к тому, что данный пакет не устанавливался (фиксация пакета имела значение -1); теперь же такое значение приводит к тому, что указанная версия этого пакета не будет установлена.

5.3.2.3. Новые требования для репозитория APT

[Примечание]Примечание

Данный раздел актуален только в том случае, если вы используете (или намерены использовать) сторонние репозитории, либо если вы сами сопровождаете репозитории APT.

Для улучшения стабильности выгрузки и гарантирования безопасности загружаемого содержимого APT теперь требует от репозитория APT выполнение следующих требований:

  • Должен быть доступен файл InRelease

  • Все метаданные должны включать в себя контрольные суммы для этих данных по меньшей мере в формате SHA256. Это требование касается также и GPG-подписи файла InRelease.

  • Подписи файла InRelease должны быть созданы с помощью ключ, имеющего размер не менее 2048 бит.

Если вы используете сторонний репозиторий, несовместимый с указанными выше требованиями, то попросите сопровождающего этого репозитория выполнить обновление. Дополнительную информацию о файле InRelease можно найти в вики Debian.

5.3.3. Настольные системы переходят на использование Xorg-драйвера libinput

[Примечание]Примечание

Данный раздел будет актуален только в том случае, если вы уже доработали, или вам необходимо изменить настройки устройств ввода в Xorg по умолчанию.

В jessie в качестве драйвера входных устройств в Xorg использовался драйвер evdev. В stretch этот выбор по умолчанию изменён на libinput. Если в ваших настройках Xorg используется драйвер evdev, то вам следует либо изменить настройки на использование драйвера libinput, либо заново настроить свою систему на использование драйвера evdev.

Ниже приведён пример настроек для драйвера libinput, включающих возможность «Emulate3Buttons».

Section "InputClass"
        Identifier "mouse"
        MatchIsPointer "on"
        Driver "libinput"
        Option "MiddleEmulation" "on"
EndSection

Вставьте данный код в файл /etc/X11/xorg.conf.d/41-middle-emulation.conf, перезапустите систему (либо перезапустите X-сервер), после этого новый драйвер будет включен.

Драйвер evdev всё ещё доступен в пакете xserver-xorg-input-evdev.

5.3.4. Upstart удалён

Из-за недостатка сопровождающих основной ветки разработки система инициализации Upstart была удалена из stretch. Если в вашей системе используется этот пакет, то вам следует помнить, что в течение жизненного цикла Debian 9 этот пакет не будет получать обновления, а начиная с Debian 10 (buster) задачи upstart могут быть удалены из пакетов.

Подумайте над переходом на поддерживаемую систему инициализации, systemd или OpenRC.

5.3.5. Инструмент debhelper теперь по умолчанию создаёт пакеты dbgsym

[Примечание]Примечание

Данный раздел актуален в первую очередь для разработчиков или организаций, собирающих собственные пакеты Debian.

Набор инструментов debhelper теперь по умолчанию создаёт пакеты dbgsym для двоичных файлов в формате ELF. Если вы разрабатываете и создаёте пакеты с двоичными файлами, убедитесь, что используемый вами набор инструментов поддерживает указанные дополнительные автоматически создаваемые пакеты.

Если вы используете пакет reprepro, то вам следует обновить его до версии не меньше 4.17.0. При использовании aptly вам потребуется версия не меньше 1.0.0, но она, к сожалению, не доступна в Debian stretch.

Если же ваш набор инструментов не может достойно справиться с этим, то вы можете отключить в debhelper указанную возможность, добавив «noautodbgsym» в переменную DEB_BUILD_OPTIONS вашей службы сборки. За дополнительной информацией обратитесь к странице руководства dh_strip.

5.3.6. Изменения, связанные с OpenSSL

Приложение openssl ожидает появление опциональных аргументов после обязательных. Например, следующая команда более не будет работать:

openssl dsaparam 2048 -out file

а это будет:

openssl dsaparam -out file 2048

В команде openssl enc хэш-сумма (используемая для создания ключа из парольной фразы) по умолчанию изменена с MD5 на SHA256. В том случае, если требуется расшифровать старые файлы с помощью новой версии OpenSSL (или нужно сделать что-то другое), используемую ранее хэш-сумму можно указать явным образом с помощью опции -md.

Шифры 3DES и RC4 более не доступны для взаимодействия через TLS/SSL. Серверы, скомпанованные с OpenSSL не могут предлагать их своим клиентам, а клиенты не могут соединяться с серверами, предлагающими только указанные шифры. Это означает, что у OpenSSL и Windows XP нет общих шифров.

Пакет libssl-dev предоставляет заголовочные файлы для компиляции с поддержкой OpenSSL 1.1.0. API сильно изменился, возможно, ваше ПО больше не будет компилироваться. Доступен обзор изменений. Если вы не можете обновить ваше ПО, имеется пакет libssl1.0-dev, предоставляющий заголовки OpenSSL 1.0.2.

5.3.7. Изменения в Perl могут приводить к поломкам стороннего ПО

[Примечание]Примечание

Данный раздел касается кода, сопровождаемого за пределами Debian - локально или третьими сторонами, а также устаревших сценариев Perl и модулей.

  • Из базовой поставки Perl было удалено несколько модулей, которые теперь поставляются в отдельных пакетах. Наиболее значительными примерами являются CGI, доступный теперь в пакете libcgi-pm-perl, и Module::Build, доступный в пакете libmodule-build-perl.

  • Текущий рабочий каталог (.) был удалён из списка включённых по умолчанию каталогов, @INC. Это может влиять на использование функций require(), do() и других функций, чьими аргументами являются файлы из текущего каталога.

    Все программы и модули Perl, поставляемые в составе Debian, должны быть уже исправлены в плане указанного выше изменения; если вы обнаружите, что это не так, то отправьте нам сообщение об ошибке. Поскольку это изменение было сделано в Perl 5.26.0, ПО третьих сторон также должно быть уже исправлено. Информация для разработчиков о том, как исправить эту проблему, имеется в Информации о выпуске Perl 5.26 (см. раздел SECURITY).

    Если вам требуется временно восстановить . в @INC так, чтобы это изменение действовало глобально, то закомментируйте соответствующую строку в /etc/perl/sitecustomize.pl, но вам следует делать это только в том случае, если вы полнимаете потенциальный риск. Возможность данного временного решения будет удалена в Debian 10. Также вы можете установить переменную окружения PERL_USE_UNSAFE_INC в определённый контекст, что будет иметь тот же эффект.

  • Полный список изменений в Perl по сравнению с версией в Debian 8 доступен в perl522delta и perl524delta.

5.3.8. Несовместимость PostgreSQL PL/Perl

Пакет с реализацией процедурного языка PostgreSQL PL/Perl в jessie несовместим с версией Perl в stretch. Пакет postgresql-plperl-9.4 будет удалён в ходе выполнения обновления, что сделать процедуры Perl на стороне сервера неработоспособными. Эта проблема не должна повлиять на обновление до PostgreSQL 9.6; процедуры будут работать в новом кластере PostgreSQL в том случае, если установлен пакет postgresql-plperl-9.6. Если вы не уверены в том, что произойдёт, то сделайте резервную копию ваших кластеров PostgreSQL 9.4 перед обновлением до выпуска stretch.

5.3.9. Пакет net-tools устарел и будет заменён на пакет iproute2

Пакет net-tools по умолчанию более не является частью новых установок, поскольку его приоритет был снижен с важного от опционального. Пользователям рекомендуется использовать современный набор инструментов iproute2 (который уже входит в новые установки нескольких выпусков). Если всё ещё предпочитаете использовать программы net-tools, то вы можете установить этот пакет с помощью следующей команды:

apt install net-tools

[Предупреждение]Предупреждение

Помните, что пакет net-tools может быть удалён в ходе обновления в том случае, если ранее он был установлен для удовлетворения зависимостей. Если вы используете пакет net-tools, то пометьте его как установленный вручную до запуска обновления. Это можно сделать с помощью следующей команды:

apt-mark manual net-tools

Ниже приведён обзор команд net-tools и их эквивалентов из iproute2:

устаревшие команды net-toolsаналогичные команды iproute2
arpip n (ip neighbor)
ifconfigip a (ip addr), ip link, ip -s (ip -stats)
iptunnelip tunnel
nameifip link
netstatss, ip route (for netstat -r), ip -s link (for netstat -i), ip maddr (for netstat -g)
routeip r (ip route)

5.3.10. Рекомендуется использовать опцию монтирования _netdev при использовании AoE-устройств (ATA через локальную сеть)

[Примечание]Примечание

Это касается только тех систем, в которых смонтированы устройства ATA через локальную сеть (AoE). Если в вашей системе не монтируются какие-либо общие сетевые каталоги, то вы можете пропустить данный раздел.

В связи с проведение чистки в коде обработки сброса настроек сети, используемые AoE-устройства более обрабатываются при выключении не так, как это может ожидаться, что может приводить к зависанию и/или потере данных. Для того, чтобы избежать этой ситуации, предлагается монтировать такие устройства с помощью опции монтирования _netdev. Также эта опция доступна при использовании подкачки через AoE.

5.3.11. Безвредные предупреждения вида «Unescaped ... in regex is deprecated, ...» во время обновления

В ходе обновления вы можете заметить предупреждения следующего вида:

Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^(.*?)(\\)?\${ <-- HERE ([^{}]+)}(.*)$/ at /usr/share/perl5/Debconf/Question.pm line 72.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ([^}]+)}/ at /usr/share/perl5/Debconf/Config.pm line 30.

Эти предупреждения безвредны и появляются в том случае, если пакет perl-base был обновлён до пакета debconf.

5.3.12. Миграция хранилища правил SELinux

[Примечание]Примечание

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

В stretch хранилище правил SELinux перемещено из /etc/selinux/<имя_правила> в /var/lib/selinux/<имя_правила>. Кроме того, был изменён формат, используемый внутри хранилища.

Правила, поставляемые Debian (например, из пакета selinux-policy-default) будут автоматически перемещены. Тем не менее, правила, специфичные для вашей системы, следует переместить вручную.

Пакет semanage-utils содержит сценарий /usr/lib/selinux/semanage_migrate_store, с помощью которого это можно сделать.

5.3.13. iSCSI Enterprise Target no longer supported

The iSCSI Enterprise Target (IET), packaged in the iscsitarget package in previous releases, is no longer in Debian, as it will not work with recent kernel versions, and the project has seen no development activity in recent years.

Users of IET are encouraged to switch to the LIO stack, which is fully supported in Debian stretch. The package targetcli-fb provides the configuration utility for the LIO iSCSI target.

As the LIO stack was developed independently of the IET, the configuration has to be migrated manually.