Enhancing Arch Linux Stability (日本語)

From ArchWiki
Jump to: navigation, search

この記事の目的は Arch Linux を可能な限り安定にするヒントを提供することです。Arch の開発者と Trusted User は高品質なパッケージを作成するために日夜励んでいますが、Arch のローリングリリースシステムと、パッケージがコロコロと変わるのが理由で、ミッションクリティカルな・商業用の本番環境には Arch が適さないと考えられても詮無きことかもしれません。

ただし、設定のシンプリシティ、素早いバグレポート・バグフィックスサイクル、そしてアップストリームのソースコードにパッチをあてないで利用することを約束している Arch は本質的に安定しているものなのです。従って、Arch の設定やメンテナンスで以下のアドバイスに従えば、ユーザーは非常に安定したシステムに恵まれるでしょう。さらに、問題が起こった時にシステムを修復するのを楽にするアドバイスもあります。

実際のところ Arch はどれくらい安定していると言えるのでしょうか?Arch を本番サーバーに問題なく使えているという、熟練したシステム管理者による報告が Arch フォーラムにはごろごろあります。Archlinux.org はその一例と言えます。デスクトップでも、正しく設定されメンテナンスされている Arch は素晴らしいスタビリティを発揮します。

Contents

Arch のセッティング

Arch Linux を始めてインストール・設定するとき、ユーザーは設定・ソフトウェア・ドライバについて多くの選択肢を持っています。これらの選択はシステム全体の安定性に大きな影響を与えます。

Arch 特有のヒント

/var パーティションを大きくとって古いパッケージをキープする

インストール中にパーティションを設定する時はいつでも、/var パーティションに十分に大きい容量を割り当てるようにしましょう。/var パーティションにたっぷり6から8GBのスペースを持たせるべきです - サーバーとして使うならもっと容量を与えましょう。Pacman は前にインストールしたパッケージを全て /var/cache/pacman/pkg に保管しています。そのために容量をかなり喰うのです。これらのパッケージを維持しておけば、パッケージアップグレードで不安定になった時に保存しておいた古いパッケージにダウングレードできます。下のセクションを見て下さい。

推奨設定を使う

Arch Linux のインストールと設定のドキュメントでは、システムの特定の部分を設定するのに複数の方法を提示していることがよくあります。システムを設定する時はいつでも、推奨の・デフォルト設定を選ぶようにしてください。推奨・デフォルト設定はシステムの安定や修理に最適な、ベストプラクティスを反映しています。

非公式のパッケージ・テストされていないパッケージに気をつける

testing リポジトリや testing 内のパッケージの使用を止めましょう。testing のパッケージは開発やテストのためにあり、安定なシステムには適しません。

AUR からパッケージをインストールするときは用心してください。AUR のパッケージのほとんどはユーザーによって供給されており公式リポジトリのパッケージのようなパッケージング標準は持っていません。AUR のパッケージをビルド・インストールする前に、PKGBUILD に悪意のあるコードや間違いがないか毎回確認しましょう。

AUR パッケージのインストールを簡単にする AUR Helpers (日本語) にも気をつけましょう、悪意のある PKGBUILD を含むパッケージをビルド・インストールしてしまう恐れがあります。パッケージをビルド・インストールする前には必ずサニティチェックをするべきです。

最後に、AUR Helpers (日本語)makepkg コマンドを root ユーザーとして実行するのは全く持って愚かな行為だと言っておきます。

サードパーティのリポジトリについては、どうしても必要な時だけ、もしくはそれが何かよくわかってるときだけ使うようにしてください。サードパーティのリポジトリは信用のおけるソースから使って下さい。

最新のミラーを使う

メインの Arch FTP サーバーと最新のパッケージを頻繁にアップデートしているミラーを使って下さい。Mirror Status webpage を使えばミラーが最新かどうか確認できます。素早く rsync されてるミラーを使うことで、日々のメンテナンスでフレッシュなパッケージとパッケージデータベースを使うことができるようになります。

また、/etc/pacman.d 内のミラーリストを編集してあなたの国や地域に位置するミラーをリストの一番上に置いてください。特定のミラーを有効にするを参照してください、また rankmirrors スクリプトを使うことで最速のミラーを有効にできます。

アップデートに使用するミラーサーバーを変えた後は、pacman -Syu を実行してシステムを最新の状態にするようにしましょう。

開発中のパッケージを使わない

システムに深刻なダメージを与えるのを防ぐために、開発中のパッケージをインストールしてはいけません。こうしたパッケージは通常 AUR にあり、時には community にも存在します。アップストリームの開発ブランチから直接作られるパッケージには次のような単語がパッケージ名に付けられます: dev, devel, svn, cvs, git, hg, bzr, darcs。

特に、カーネルや glibc などの重要なシステムパッケージの開発バージョンをインストールするのは止めましょう。

makepkg を使ってカスタムパッケージをビルドするときは、PKGBUILD の provides 行などが Arch Packaging Standards に従っているか確認してください。生成された .tar.gz や PKGBUILD ファイルをチェックするには namcap を使います。

linux-lts パッケージをインストール

linux-lts パッケージは Linux カーネル 3.0 をベースにした Arch カーネルパッケージで [core] リポジトリで利用できます。このカーネルバージョンはアップストリームの、セキュリティフィックスや機能のバックポートなど長期間サポート (LTS) を受けられます。Arch をサーバーとして使っていたり、新しいカーネルバージョンで問題がおこるときなどに有用です。

ブートオプションとして使えるようにするには、ブートローダの設定ファイルを更新する必要があります。例えば、Syslinux の場合は、/boot/syslinux/syslinux.cfg を編集して現在のエントリを vmlinuz-linux-ltsinitramfs-linux-lts.img にします。GRUB の場合、.cfg を自動で再生成するのが推奨される方法です。

標準の linux パッケージに加えて linux-lts パッケージをインストールして Fallback エントリを LTS カーネルにすることもできます。

一般的なベストプラクティス

パッケージマネージャを使ってソフトウェアをインストールする

パッケージマネージャ (Arch では: pacman (日本語)) はファイルを管理することについてあなたよりも良い仕事をします。手動でソフトウェアをインストールすると、遅かれ早かれ何を何処にインストールしたのか忘れて、ソフトウェアを衝突させたり誤った場所にインストールしたりするでしょう。

安定性の観点からは、サポートされていないパッケージやカスタムソフトウェアを使うのはやめるべきですが、どうしてもそうしたパッケージが必要なときは、パッケージを作成したほうが手動でコンパイル・インストールするよりマシです。

/root/.bashrc で make install コマンド(たいてい全ての問題の根源になります)を無効にしたほうがいいかもしれません

 make() {
   [ "$1" == 'install' ] &&
     echo -e "WARNING:\nDON'T INSTALL SOFTWARE MANUALLY\nDON'T USE unset make TO OVERRIDE" &&
     echo "Tip: It's easy to make own custom package see: man PKGBUILD makepkg" &&
     return 1;
   /usr/bin/make $@;
 }

メインストリームのソフトウェアパッケージを使う

成熟したメインストリームのソフトウェアをインストールして、最先端 (cutting edge) のバグまみれ (buggy) のソフトウェアを使うのを避けましょう。"ポイントオー"、つまり x.y.0 のように最後に0がつくバージョンのソフトウェアリリースをインストールしないよう心がけて下さい。例えば、Foobar 2.5.0 をインストールするかわりに Foobar 2.5.1 がリリースされるのを待ちましょう。新しく開発されたソフトウェアは信頼性が証明されるまで利用してはいけません。例えば、PulseAudio の初期のバージョンは信頼性がないことがあります。スタビリティを出来る限り高めたいユーザーは代わりに ALSA サウンドシステムを使うのがいいでしょう。最後に、開発コミュニティが強固で活発なソフトウェアを使いましょう。

オープンソースドライバを選ぶ

出来る限り、オープンソースドライバを選んで下さい。プロプライエタリドライバは避けましょう。大抵、オープンソースドライバはプロプライエタリドライバよりも安定していて信頼性があります。オープンソースドライバのバグは素早く修正されます。プロプライエタリドライバはより多くの機能があるかもしれませんが、それには安定性のコストがつきまといます。このジレンマに陥らないために、成熟したオープンソースドライバがフルにサポートしているハードウェアコンポーネントを選ぶようにしてください。オープンソースの Linux ドライバとハードウェアの情報は linux-drivers.org にあります。

Arch のメンテナンス

Arch を安定に設定するのに加えて、ここではメンテナンスの際にスタビリティを高める方法を記述します。システムの信頼性を高めるのに役立つシスアドの細部に注意してください。

Arch 特有のヒント

適度な頻度でシステムをアップグレード

多くの Arch ユーザーは頻繁にアップデートをします、毎日 pacman -Syu を使ってシステムをアップデートする人さえいます。そんなに頻繁にアップデートする必要はないですが、最新のバグフィックスやセキュリティアップデートを得るために適切な頻度でアップグレードするべきでしょう。一週間ごと、もしくは隔週ごとのアップデートがグッドです。

AUR パッケージがある場合は、注意して全ての AUR パッケージをアップグレードしてください。

システムをアップグレードする前に読むもの

Arch をアップグレードする前に、必ず最新の Arch News を読んで最新のパッケージで主要なソフトウェアや設定の変更がないか知っておくべきです。カーネルや xorg、glibc などの重要なソフトウェアを新しいバージョンにアップグレードする前には、適切な webforum を見てなにか問題が報告されていないか調べましょう。

アップグレード中の警告に対処する

システムをアップグレードする時、pacman によって表示された警告を注意して見て下さい。ユーザーによる追加の行動が必要な場合は、正しくそれに対処してください。pacman の警告の意味がわからない時は、フォーラムや最近の news から具体的な指示を検索してください。

迅速に .pacnew, .pacsave, .pacorig ファイルを処理する

設定ファイルを持っているパッケージを pacman によって削除すると、普通は設定ファイルのバックアップコピーが作られファイル名の最後に .pacsave が付けられます。同じく、現在インストールされているファイルとは異なる(メンテナによって作られた)新しいファイルを含むパッケージにアップグレードされると、pacman は .pacnew 設定ファイルを書き込みます。特別の事情があるときは、.pacorig ファイルが作成されます。Pacman はこうしたファイルが作られたことを知らせます。

pacman がこれらファイルを作成したときは、システムの安定を保つために、ユーザーは素早くファイルを処理しなければなりません。詳しい解説は Pacnew and Pacsave Files ページを参照してください。

.pacnew や .pacsave ファイルを処理するのに役立つツールはさまざまです。ファイルを比較するには標準の diff ユーティリティ (もしくは、colordiff) が楽な方法でしょう。pacman-contrib パッケージはこうしたファイルを調節するのに役立つ pacdiff が含まれています。最後に、pacnews bash script は同じような機能を提供します。pacdiff と pacnews はどちらも vimdiff を使って .pacnew や .pacsave ファイルを比較・編集します。

pacmatic の使用

Pacmatic はアップグレードに先立つ Arch News の確認プロセスを自動化する pacman ラッパーです。Pacmatic はローカルの pacman データベースがオンラインミラーと正しく同期されているか確認することも行うので、下手な pacman -Sy によるデータベースアップデートの潜在的な問題を回避できます。最後に、pacmatic はアップデートされたり使われなくなった設定ファイルについて厳格な警告を発します。pacmatic を pacman のエイリアスとして使うことが可能で、様々な AUR Helpers (日本語) で pacman の代わりに pacmatic を使うよう設定できます。

特定の pacman コマンドを使わない

Arch being a rolling release distribution, it can be dangerous to refresh pacman databases without doing a full system upgrade immediately after. Avoid using pacman -Sy package to install a package, but always use pacman -S package instead. And upgrade your system regularly with pacman -Syu.

Avoid using the -f option with pacman, especially in commands such as pacman -Syuf involving more than one package. The --force option ignores file conflicts and can even cause file loss when files are relocated between different packages! In a properly maintained system, it should never need to be used.

Do not use pacman -Rdd package. Using the -d flag skips dependency checks during package removal. As a result, a package providing a critical dependency could be removed, resulting in a broken system.

Never run pacman -Scc unless there is a desperate need for the disk space, and little or no need for archived package files. It is safer to keep older packages available in the cache archives in the event a package upgrade causes problems, requiring a package reversion. Instead, just use pacman -Sc to clean out the archived packages in the pacman cache, of packages previously removed from the pacman database.

Make sure to only use this command if there is no intention of re-installing recently removed packages. If such packages are re-installed after this command has been executed, there will be no older, archived versions of the packages in the pacman cache.

In the event that /var disk space becomes scarce, move all archived packages to the home directory using the fduparch.sh script. Use the fduppkg script to move all but the last previously installed package versions in the pacman cache archives, to the home directory.

不安定になるパッケージアップグレードを戻す

In the event that a particular package upgrade results in system instability, install the last known stable version of the package from the local pacman cache using the following command:

pacman -U /var/cache/pacman/pkg/Package-Name.pkg.tar.gz

For more detailed information on reverting to older packages, consult the Arch wikipage, Downgrading Packages.

Once the package is reverted, temporarily add it to the IgnorePkg section of pacman.conf, until the difficulty with the updated package is resolved. Consult the Arch wiki and/or webforums for advice, and file a bug report if necessary.

インストールしたパッケージのリストの定期バックアップ

At regular intervals, create a list of installed packages and store a copy on one or more offline media, such as a USB stick, external hard drive, or CD-R. Use the following command to create a pkglist:

pacman -Qqe | grep -vx "$(pacman -Qqm)" > /path/to/chosen/directory/pkg.list

In the event of a catastrophic system failure requiring a complete re-installation, these packages can be quickly reinstalled using the command:

xargs -a /path/to/chosen/directory/pkg.list pacman -S --needed

pacman データベースの定期バックアップ

以下のコマンドを使ってローカルの pacman データベースをバックアップできます、クローンジョブとして実行することもできます:

tar -cjf /path/to/chosen/directory/pacman-database.tar.bz2 /var/lib/pacman/local

バックアップした pacman データベースファイルは USB スティックや外部ハードドライブ、CD-R などに保存してください。

pacman-database.tar.bz2 ファイルを / ディレクトリに移動して以下のコマンドを実行することで pacman データベースをリストアできます:

tar -xjvf pacman-database.tar.bz2

pacman のデータベースファイルが壊れていたり、バックアップファイルを作っていなかったときでも、pacman データベースを復旧する望みはまだあります。How To Restore Pacman's Local Database を参照してください。

Systemd による自動化

Systemd (日本語) の設定によって、新しいパッケージがインストール・アップデートされるたびに pacman データベースをバックアップすることができます。ここを見て下さい。

一般的なベストプラクティス

NVD/CVE を購読してセキュリティアラートが出たらアップグレードする

Subscribe to the Common Vulnerabilities and Exposure Security Alert updates, made available by National Vulnerability Database, and found on the NVD Download webpage. Only update the Arch system when a security alert is issued for a package installed on that particular system.

This is the alternative to upgrading the entire system frequently. It ensures that security problems in various packages are resolved promptly, while keeping all the rest of the packages frozen in a known, stable configuration. However, reviewing the frequent CVE Alerts to see if any apply to installed Arch packages can be tedious and time consuming.

本番環境で行う前にアップデートをテストする

可能であれば、設定ファイルの変更だけでなく、ソフトウェアパッケージのアップデートも、まず本番環境でない複製したシステムでテストしてください。それから、問題が起こらなかったら、本番環境に変更をロールアウトしてください。

設定ファイルは編集する前にバックアップする

Before editing any configuration file, always back up a known working version of that config file. In the event that changes in the config file cause problems, one can revert to the previous stable config file. Do this from a text editor by first saving the file to a backup copy before making any alterations; or execute the following command:

cp config config.bak

Using .bak will ensure there is a readily distinguishable human-made backup conf file if pacman creates a .pacnew, .pacsave, or .pacorig file using the active config file.

/etc, /home, /srv, /var ディレクトリの定期バックアップ

Since /etc, /home, /srv and /var directories contain important system files and configs, it is advisable to keep backup of these folders on a regular interval. The following is a simple guide line on how to go about it.

  • /etc: Backup the /etc directory by executing the following command as root or as a cronjob:
tar -cjf /path/to/chosen/directory/etc-backup.tar.bz2 /etc

Store the /etc backup file on one or more offline media, such as a USB stick, external hard drive, or CD-R. Occasionally verify the integrity of the backup process by comparing original files and directories with their backups.

Restore corrupted /etc files by extracting the etc-backup.tar.bz2 file in a temporary working directory, and copying over individual files and directories as needed. To restore the entire /etc directory with all its contents, move the etc-backup.tar.bz2 files into the / directory. As root, execute the following command:

tar -xvjf etc-backup.tar.bz2
  • /home: At regular intervals, backup the /home directory Regularly backup the to an external hard drive, Network Attached Server, or online backup service. Occasionally verify the integrity of the backup process by comparing original files and directories with their backups.
  • /srv: Server installations should have the /srv directory regularly backed up.
  • /var: Additional directories in /var, such a /var/spool/mail or /var/lib, which also require backup and occasional verification.

If you want to backup much faster (using parallel compression, SMP), you should use pbzip2 (Parallel bzip2). The steps are slightly different, but not by much.

First we will backup the files to a plain tarball with no compression:

tar -cvf /path/to/chosen/directory/etc-backup.tar /etc

Then we will use pbzip2 to compress it in parallel (Make sure you install it with pacman -S pbzip2)

pbzip2 /path/to/chosen/directory/etc-backup.tar.bz2

and that's it. Your files should be backing up using all of your cores.