目次
libinput
Xorg ドライバへ移行しますdbgsym
パッケージを生成するようになりましたnet-tools
は iproute2
が選ばれたため非推奨となりました_netdev
マウントオプションが推奨されます新しいリリースに導入された変化には当然のように副作用がつきもので、どこか他の場所でバグを出してしまうこともあります。この章では、現時点で私たちが知っている問題点を記載しています。正誤表・関連パッケージの付属文書・バグ報告や、「もっと読みたい」で触れられているその他の情報も読んでください。
この項では jessie から stretch へのアップグレードに関連した項目を取り扱います。
![]() | 注記 |
---|---|
この項は、カスタムカーネルを利用していて |
/
で見つかったツールのみを使った /usr
のマウントはサポートされなくなりました。これは過去にはいくつか特定の設定下でのみ動作しており、現在では明示的に非サポートとなりました。
これは stretch では /usr
が分割されたパーティションとなっているシステムは全て、initramfs の生成ツールを使って /usr
をマウントする必要があることを意味します。stretch の initramfs 生成ツールは全てこの様に動作します。
Debian が提供するミラーは FTP 接続の提供を停止します。sources.list で ftp:
プロトコルを使っている場合は、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
を含んでいません。これらのコンポーネントを有効にする必要がある場合は、忘れずに含めて下さい。
詳細については、Shutting down public FTP services のアナウンスを参照して下さい。
以下は、よく知られていて特に時代遅れとなってしまったパッケージの一覧です (説明については 「利用されなくなったパッケージ」 参照)。
時代遅れとなったパッケージの一覧には以下が含まれます:
main アーカイブからほとんどの -dbg
パッケージが削除されました。これらは
debian-debug
アーカイブから入手できる -dbgsym
パッケージで置き換えられています。「デバッグシンボル向けの新しいアーカイブ」 を参照して下さい。
パスワードマネージャー fpm2
と kedpm
は upstream でメンテナンスされなくなりました。pass
, keepassx
, keepass2
のような他のパスワードマネージャーを使って下さい。fpm2
および kedpm
パッケージを削除する前にパスワードを取り出すようにしてください。
net-tools
パッケージは iproute2
が優先されることで非推奨となっています。詳細な情報は 「net-tools
は iproute2
が選ばれたため非推奨となりました」 の項目か、または
Debian リファレンスマニュアル を参照して下さい。
nagios3
モニタリングツールは stretch
から削除されました。icinga
パッケージが最も近い代替です。これは設定ファイルを nagios とは異なったパスから読み込みますが、それ以外は互換性があります。
apt-get dist-upgrade
が完了した時点で、「正規」のアップグレードは完了しています。stretch
へのアップグレードについては、再起動の実行前に必要となる特別な作業はありません。
Debian stretch で提供される GNU GCC 6 コンパイラは、デフォルトですべての実行ファイルを position independent なものとしてコンパイルします。これはあらゆる種類の脆弱性に対する緩和を提供します。
残念なことに、(8.7 までの) Debian 8 での Linux カーネルは、position independent
な実行ファイルとしてコンパイルされたプログラムのうちの幾つかがセグメンテーションフォルト
のような、よくある問題を起こしてクラッシュする可能性がある問題がありました。この問題は
8.8 で提供される linux バージョン (3.16.43 以降) および Debian 9 でのカーネル (4.9 以降) で解決されています。
We recommend that you upgrade your kernel to a fixed version and then reboot before starting the upgrade to stretch. If you are running the kernel from Debian 8.8 or newer, you are not affected by this issue.
アップグレード中、影響を受けるバージョンのカーネルで稼働している場合、アップグレード直後にこの問題が直撃するのを避けるため、再起動を実行して stretch のカーネルにするのを強くお勧めします。
![]() | 注記 |
---|---|
この章は主に開発者またはシステム管理者向けのものです。デスクトップユーザーはこの章の影響を受けないでしょう。 |
上記は、注意を払ったほうが良い変更ももたらします。
file ツール (やその他) は、このようなバイナリを 「executable」 (実行ファイル) ではなく 「shared object」 (共有オブジェクト) として認識します。バイナリファイルに依存したフィルタ (例: スパムフィルタ) を使っている場合は、フィルタを更新する必要があるかもしれません。
実行ファイルにコンパイルされている静的ライブラリも、position independent コードとしてコンパイルする必要があります。リンカによる以下のエラーメッセージはこの兆候です:
relocation ... against '[SYMBOL]' can not be used when making a shared object; recompile with -fPIC
エラーメッセージが -fPIC だと言っていたとしても、-fPIE でリコンパイルすれば十分である点に注意して下さい (これは stretch の一部である GCC 6 パッケージでのデフォルトです)。
歴史的に、PIE (position independent executables)
は幾つかのハードウェア上ではパフォーマンスの低下と切り離せないものでした。とりわけ Debian の i386
アーキテクチャ (32-bit インテルマシン) ではそうでした。とはいえ、GCC 5 および GCC 6 では、32
ビット Intel 上での PIE (position independent executables)
のパフォーマンスが大幅に改善されたとしても、この最適化は全アーキテクチャには当てはまらないかもしれません。非常に限られた数のレジスタをもつマシンアーキテクチャをターゲットとしている場合は、コードのパフォーマンスを評価することを検討してみて下さい
関心と試験可能性の欠落により、Debian は Linux Standard Base (LSB) 互換パッケージの大半を削除しました。
Debian は、lsb-release
および lsb-base
内の sysvinit init
関数のような、内部でも外部でも使われている選りすぐりのキーとなる 2, 3 の LSB ユーティリティを提供し続けます。さらに、Debian は
Filesystem
Hierarchy Standard (FHS) バージョン 2.3 に Debian
ポリシーマニュアルに記述されている小さな変更を加えたもの をしっかりと守り続けています。
Debian がセキュリティ問題に対する最小限のバックポートを約束できないパッケージがいくつか存在しています。これらについては以下の章で触れられています。
debian-security-support
パッケージが、インストールされたパッケージのセキュリティサポート状況を確認するのに役立ちます。
Debian 9 は複数のブラウザエンジンを含んでおり、これらは一定の割合でセキュリティ脆弱性の影響を受けます。高い脆弱性率と一部開発元での長期間サポートブランチの欠落によって、セキュリティ修正をバックポートしてこれらのブラウザをサポートする事が難しくなっています。さらに、ライブラリへの内部依存性のため、開発元の新しいリリースバージョンへの更新を不可能にしています。そのようなものとしては、stretch に含まれている webkit・qtwebkit・khtml エンジンを使ったブラウザがありますが、これらは完全なセキュリティサポートはされません。一般的にこれらのブラウザを信用できないウェブサイトを閲覧するのに使うべきではありません。
通常、ウェブブラウザを利用するには、Firefox および Chromium をお勧めします。
Chromium は Webkit のコードベース上に構築されていますが、リーフパッケージ (他から依存されていないパッケージ) であり、安定版向けに最新の Chromium のリリースを再ビルドして更新し続けられる予定です。Firefox および Thunderbird についても、安定版向けに最新の ESR (延長サポート版) を再ビルドすることで更新を行う予定です。
Node.js プラットフォームは、大量のセキュリティ問題が発生した libv8-3.14
上に構成されていますが、現状ではプロジェクト内およびセキュリティチーム内には、これから発生するであろう問題に対処するのに必要な大量の時間を費やすのに十分な興味と意思を持った作業者が存在していません。
残念なことに、これは libv8-3.14
, nodejs
, そして node-*
関連パッケージのエコシステムは、インターネットから取得した無毒化していないデータのような信頼できないコンテンツと共には現状利用しないようにすべきだということです。
追記しておくと、これらのパッケージは stretch リリース期間中に一切のセキュリティ更新を受けることはありません。
大抵の場合、jessie から stretch へのアップグレードは淀み無く進むべきです。しかし、アップグレードの前後に介入が必要となる場合がある例が少数ですが存在します。これらについて、パッケージごとに詳細を説明します。
OpenSSH 7 のリリースでは、標準で旧式の暗号と SSH1 プロトコルが無効にされました。マシンをアップグレードする際、SSH アクセスしか無い場合には注意を払って下さい。
さらに "UseDNS" 設定オプションのデフォルトが yes から no に変更されています。これは ssh アクセスをホストで制限するために authorized_keys で "from=" 機能を使っているユーザーが締め出されることになるかもしれず、アップグレードをリモートから行っている場合には特に面倒なことになります。
詳細については、OpenSSH のドキュメントを参照して下さい。
この章ではシステムに影響を与えるかもしれない、APTに加えられた互換性が無い変更について扱います。
APT は、ミラーからファイルの取得前に root 特権を全て破棄しようとするようになりました。APT は、この動作が失敗する幾つかの一般的な場面を検知し、警告と共に root でファイルを取得するようにフォールバックします。しかしながら、幾つかの風変わりな設定については、検知が失敗することもあります (例: uid 毎のファイアウォールルール)。
この機能で問題に遭遇した場合、_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
が読み取り可能であることを確認して下さい。
APT 1.1 は、マニュアルページでの記述どおりに動作する新しい pinning エンジンを導入しました。
以前のエンジンはパッケージごとに pin の優先度を割り当ててましたが、新しいエンジンはバージョンごとに pin の優先度を割り当てます。そして、ダウングレードではないか、1000 より大きい (> 1000) もので最も高い pin のバージョンを取り上げます。
これは、いくつかの pin‐特にネガティブな pin の効果を変更します。以前はバージョンを -1 に pin するの (パッケージ pin が -1) はパッケージがインストールされるのをうまく防ぎました。現在はこのパッケージのそのバージョンがインストールされるのを防ぐだけです。
![]() | 注記 |
---|---|
この章は、サードパーティのリポジトリを有効にしている (あるいはしようとしている) か、APT リポジトリをメンテナンスする場合にのみに適用されます。 |
ダウンロードの安定性を改善し、ダウンロードされたコンテンツの安全性を担保するため、APT はリポジトリから以下の取得を必要とします:
InRelease ファイルが取得可能になっている必要があります。
全てのメタデータは全項目について少なくとも SHA256 チェックサムを含んでいなければいけません。これは、InRelease ファイルの GPG 署名を含みます。
InRelease ファイルの署名は、2048 ビット以上のサイズのキーで実施されている必要があります。
あなたが上記の事柄に対応していないサードパーティのリポジトリに依存している場合は、リポジトリをアップグレードするように彼らを急かして下さい。InRelease ファイルの詳細については Debian Wiki で参照できます。
![]() | 注記 |
---|---|
この項はあなたが Xorg の input 設定をいじっている、あるいは変更する必要がある場合のみに関連します。 |
jessie では、Xorg のデフォルト input ドライバはevdev
ドライバでした。stretch
では、デフォルトが libinput
に変わっています。evdev
ドライバに依存した Xorg の設定をしている場合、libinput
ドライバに変更する、またはシステムを
evdev
ドライバを使うように再設定する必要があります。
以下は 「Emulate3Buttons」 機能を有効にする libinput
での設定例です。
Section "InputClass" Identifier "mouse" MatchIsPointer "on" Driver "libinput" Option "MiddleEmulation" "on" EndSection
これを /etc/X11/xorg.conf.d/41-middle-emulation.conf
に挿入し、再起動 (または Xserver を再起動) すると、有効になっているはずです。
upstream のメンテナが不在のため、Upstart init システムは stretch から削除されました。システムがこのパッケージに依存している場合、Debian 9 の稼働期間内では更新されないことにご注意下さい。そして、Debian 10 (buster) からは upstart job はパッケージから削除されます。
systemd や OpenRC のような、サポートされている init システムへの移行を検討して下さい。
![]() | 注記 |
---|---|
この項は主に開発者、あるいは自家製 debian パッケージをビルドしている組織に向けたものです。 |
debhelper ツール群は ELF バイナリに対して dbgsym
パッケージを標準で生成するようになりました。バイナリを開発・パッケージングする場合は、自分のツール環境がこれらの追加で自動生成されるパッケージをサポートしてるかをチェックして下さい。
reprepro
を使っている場合、少なくともバージョン 4.17.0
へアップグレードするのが良いでしょう。aptly
は、少なくともバージョン 1.0.0 が必要になりますが、残念ながらこれは Debian stretch では利用できません。
あなたのツール環境がこれに対してうまく対処できない場合、ビルドサービスの DEB_BUILD_OPTIONS に
「noautodbgsym
」 を付け加えることで debhelper
にこの機能を無効にするように指定できます。詳細は、dh_strip
の man ページを参照して下さい。
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
が多数変更されており、これによってソフトウェアがコンパイルできなくなっている可能性があります。変更の概要
はこちらです。ソフトウェアを更新できない場合には、openssl 1.0.2 のヘッダを提供する libssl1.0-dev
もあります。
![]() | 注記 |
---|---|
この項は Debian の外部でメンテナンスされているコードについて適用されます - ローカルな、サードーパーティ製、あるいはレガシーな Perl スクリプトあるいはモジュールなどです。 |
いくつかのモジュールは、Perl
コアから削除されて別のパッケージとしてリリースされています。有名どころの例を挙げると、CGI
は
libcgi-pm-perl
パッケージとして、Module::Build
は libmodule-build-perl
パッケージとして利用できます。
カレントワーキングディレクトリ (.
) は、デフォルトで含めるディレクトリの一覧
(@INC
) から削除されました。これは、require()
や
do()
など、カレントディレクトリにあるファイルを引数とする関数の利用に影響する可能性があります。
Debian によって提供されるすべての perl プログラムとモジュールは、上記によって起こる非互換性に対して対処することで修正されているはずです; そうでない場合はバグ登録をお願いします。この変更が perl 5.26.0 で行われたので、サードパーティー製のソフトウェアも修正を開始する必要があります。開発者向けの、どのようにこの問題を修正するのかという情報は perl 5.26 リリースノート で提供されています (SECURITY の項目を参照)。
必要であれば、/etc/perl/sitecustomize.pl にある行をコメントアウトして一時的にグローバルに
@INC
について .
を復活させることは可能ですが、潜在的なリスクを理解している場合にのみ行うべきです。このワークアラウンドは Debian 10
で削除されます。特定のコンテキスト内で PERL_USE_UNSAFE_INC
環境変数を設定するのも可能で、同じ効果が得られます。
Debian 8 でのバージョンからの Perl の変更点の完全な一覧は、perl522delta および perl524delta で参照できます。
Jessie の PostgreSQL PL/Perl 手続型言語パッケージは、Stretch での Perl
バージョンと互換性がありません。postgresql-plperl-9.4
パッケージはアップデートの最中に削除され、サーバーサイド Perl プロシージャを機能不全にします。PostgreSQL 9.6
へのアップグレードは影響を受けることはなく、postgresql-plperl-9.6
パッケージがインストールされている場合には新しい
PostgreSQL クラスタでプロシージャが動作します。確証が持てない場合は、Stretch にアップグレードする前に PostgreSQL 9.4
クラスタのバックアップを取得して下さい。
net-tools
パッケージは、重要度 (priority) が重要
(important) から任意 (optional) に下げられたため、デフォルトでは新規インストールに含められなくなりました。ユーザーは、モダンな
iproute2
ツールセットを代わりに使うのが推奨されます
(これは既に過去何回かのリリースでの新規インストールの一部となっています)。まだ net-tools
のプログラムの方を好んで使い続けたい場合は、次の様にして簡単にインストールできます
apt install net-tools
以下は net-tools と iproute2 での同等コマンドの一覧です:
レガシーな net-toolsでのコマンド | iproute2 での代替コマンド |
---|---|
arp | ip n (ip neighbor) |
ifconfig | ip a (ip addr), ip link, ip -s (ip -stats) |
iptunnel | ip tunnel |
nameif | ip link |
netstat | ss, ip route (netstat-r), ip -s link (netstat -i), ip maddr (netstat -g) |
route | ip r (ip route) |
![]() | 注記 |
---|---|
これは ATA over ethernet (AoE) デバイスをマウントしているシステムにのみ適用されます。システムがネットワーク共有をマウントしていない場合、この項は読み飛ばしても大丈夫です。 |
ネットワーク削除設定が実施された際に整理が行われた為、利用されている AoE
デバイスがシャットダウン中に期待通りにハンドルされなくなり、おそらくハングアップやデータの損失が起こります。この状況を緩和するには、そのようなデバイスを
_netdev
マウントオプションを使ってマウントすることが推奨されています。このオプションは AoE
越しにスワップが使えるようになった時点で利用可能になっています。
アップグレードの最中、以下のような警告を目にするかもしれません:
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.
![]() | 注記 |
---|---|
この項は、SELinux を使用しているシステムにのみ適用されます。SELinux はデフォルトでは有効になっていません。 |
stretch では、SELinux ポリシーの保存場所は
/etc/selinux/
から
<policy_name>
/var/lib/selinux/
に移動されました。さらに、ポリシー格納の内部形式が変更されました。
<policy_name>
Debian によって提供されているポリシー (例: selinux-policy-default
パッケージから)
は自動的に移行されます。しかし、システム固有のポリシーは手動で移行する必要があります。
semanage-utils
パッケージが、この移行を行うスクリプト
/usr/lib/selinux/semanage_migrate_store
を提供しています。
以前のリリースで iscsitarget
パッケージにパッケージングされていた iSCSI Enterprise Target (IET)
は、最近のバージョンのカーネルでは動作しなくなっているのに加え、ここ数年プロジェクトでは開発の動きが無くなっているため、Debian
では利用できなくなっています。
IET のユーザーは、Debian stretch で完全にサポートされている LIO スタック (LinuxIO)
への移行が推奨されています。targetcli-fb
パッケージが
LIO iSCSI ターゲットの設定ユーティリティを提供しています。
LIO スタックは IET とは独立して開発されているため、設定は手動で移行が必要となります。