「Pacman」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(文字列「https://mailman.archlinux.org/mailman/listinfo/」を「https://lists.archlinux.org/listinfo/」に置換)
137行目: 137行目:
 
}}
 
}}
   
アップグレードするまえに、[https://www.archlinux.jp/ Arch Linux ホームページ] の最新ニュースをチェックしておくとよいでしょう (もしくは [https://www.archlinux.jp/feeds/ RSS フィード], [https://mailman.archlinux.org/mailman/listinfo/arch-announce/ arch-announce メーリングリスト]を講読したり Twitter の [https://twitter.com/archlinux_jp @archlinux_jp] をフォローする): アップデートの際にいつもとは違うユーザーの操作が必要になった時 (pacman から与えられる指示だけでは不十分な場合など)、それに関してニュースが作られているはずです。
+
アップグレードするまえに、[https://www.archlinux.jp/ Arch Linux ホームページ] の最新ニュースをチェックしておくとよいでしょう (もしくは [https://www.archlinux.jp/feeds/ RSS フィード], [https://lists.archlinux.org/listinfo/arch-announce/ arch-announce メーリングリスト]を講読したり Twitter の [https://twitter.com/archlinux_jp @archlinux_jp] をフォローする): アップデートの際にいつもとは違うユーザーの操作が必要になった時 (pacman から与えられる指示だけでは不十分な場合など)、それに関してニュースが作られているはずです。
   
 
もし解決できない問題にあたったときは、フォーラムを検索してみましょう。他の人も同じ問題にぶつかり、解決法が投稿されているかもしれません。
 
もし解決できない問題にあたったときは、フォーラムを検索してみましょう。他の人も同じ問題にぶつかり、解決法が投稿されているかもしれません。
341行目: 341行目:
 
{{ic|/etc/pacman.conf}} に書かれているように、Repositories セクションではどの[[公式リポジトリ|リポジトリ]]を使うか定義します。リポジトリはここで直接設定することもできますし、他のファイル ({{ic|/etc/pacman.d/mirrorlist}}) から読み込ませることもできます。ただしどれかひとつのファイルを使うようにしてください。ミラーの設定は[[ミラー|ここ]]を見て下さい。
 
{{ic|/etc/pacman.conf}} に書かれているように、Repositories セクションではどの[[公式リポジトリ|リポジトリ]]を使うか定義します。リポジトリはここで直接設定することもできますし、他のファイル ({{ic|/etc/pacman.d/mirrorlist}}) から読み込ませることもできます。ただしどれかひとつのファイルを使うようにしてください。ミラーの設定は[[ミラー|ここ]]を見て下さい。
   
{{Warning|[testing] リポジトリを使う場合には注意が必要です。このリポジトリにあるパッケージは活発に開発が進んでいるため、更新したら動かなくなるものもあります。testing リポジトリを使う場合は、最新情報が流れている [https://mailman.archlinux.org/mailman/listinfo/arch-dev-public arch-dev-public メーリングリスト] を購読するのをお薦めします。}}
+
{{Warning|[testing] リポジトリを使う場合には注意が必要です。このリポジトリにあるパッケージは活発に開発が進んでいるため、更新したら動かなくなるものもあります。testing リポジトリを使う場合は、最新情報が流れている [https://lists.archlinux.org/listinfo/arch-dev-public arch-dev-public メーリングリスト] を購読するのをお薦めします。}}
   
 
=== パッケージのセキュリティ ===
 
=== パッケージのセキュリティ ===

2017年12月14日 (木) 23:22時点における版

関連記事

pacman パッケージマネージャは Arch Linux の主要な機能のひとつです。pacman はシンプルなバイナリのパッケージ形式と簡単に利用できるビルドシステムから成っています。pacman のゴールはパッケージ管理を楽にすることであり、公式 Arch リポジトリにあるパッケージや、ユーザー自身が作成したパッケージを容易に管理することができます。

Pacman はマスターサーバーと同期してシステムを最新に保ちます。このサーバー・クライアントモデルによって、シンプルなコマンドだけで必要な依存性を解決してパッケージのダウンロード・インストールをすることができます。

Pacman は C 言語で書かれており .pkg.tar.xz パッケージフォーマットを使います。

ヒント: 公式の pacman パッケージには他にも有用なツールが含まれています。makepkg, pactree, vercmp, checkupdates など。ツールの一覧を見るには pacman -Ql pacman | grep bin を実行してください。

目次

使い方

pacman で何ができるかをちゃんと学びたい場合、man pacman を参照してください。以下にあるのは pacman でできることのほんの一例です。

ヒント: 他の Linux ディストリビューションを使ったことがある場合、Pacman 比較表の記事が役に立つでしょう。

パッケージのインストール

ノート: パッケージには optdepends が設定されていることがあります。必ずインストールする必要はありませんが、インストールすることで機能が追加されます。パッケージ・データベースに問い合わせることで情報を参照することができます。
警告: パッケージのインストールをする際に、アップグレードをせずにパッケージリストを更新しないでください (つまり pacman -Sy パッケージ名 をしてはいけない)。これを実行すると依存関係に問題がおこる可能性があります。#部分的なアップグレードはサポートされていませんhttps://bbs.archlinux.org/viewtopic.php?id=89328 を参照。

特定のパッケージのインストール

ひとつ、あるいは複数の(依存を含む)パッケージをインストールするときは:

# pacman -S パッケージ名1 パッケージ名2 ...

異なるリポジトリにそれぞれ同じ名前のパッケージが存在することがあります (例: [extra] リポジトリと [testing] リポジトリ)。このような場合、どちらをインストールするかを明示してください:

# pacman -S extra/パッケージ名

パッケージグループのインストール

パッケージグループに属しているパッケージを同時にインストールすることができます。例えば:

# pacman -S gnome

を実行すると gnome グループからインストールしたいパッケージを選択するように表示されます。

パッケージグループには大量のパッケージが含まれており、しばしばインストールしたいパッケージはそのうちの少しだけということがあるかもしれません。インストールするパッケージの番号を全て入力するという方法でもよいですが、以下のようにすることで簡単にパッケージを選択することが可能です:

Enter a selection (default=all): 1-10 15

以上で1番から10番までと15番のパッケージがインストールされます。

Enter a selection (default=all): ^5-8 ^2

以上で5番から8番までと2番のパッケージ以外の全てのパッケージをインストールします。

どのパッケージが gnome グループに属しているか見るには:

# pacman -Sg gnome

どのようなパッケージグループがあるかは https://www.archlinux.jp/groups/ を見て下さい。

ノート: グループの中にインストール済みのパッケージがある場合でも、グループにあわせて再インストールされます。--needed オプションを使うことで無視できます。

パッケージの削除

あるパッケージを、そのパッケージが必要としていたものを残したまま削除するには:

# pacman -R パッケージ名

削除したいパッケージと、そのパッケージだけが必要としている他のパッケージを一緒に削除するには:

# pacman -Rs パッケージ名

削除したいパッケージと、そのパッケージが必要としている他のパッケージ、さらに削除したいパッケージに依存しているパッケージを削除するには:

警告: この操作は再帰的です。必要なパッケージを削除してしまうこともあるので、気をつけて使って下さい。
# pacman -Rsc パッケージ名

他のパッケージから依存されているパッケージを、依存しているパッケージを削除しないで削除するには:

# pacman -Rdd パッケージ名

デフォルトでは、pacman は削除されたパッケージの設定ファイルを *.pacsave という拡張子をつけてバックアップします。もしこれらのファイルも一緒に削除したい場合:

# pacman -Rn パッケージ名
ノート: Pacman はパッケージがインストールされた後に作成された設定ファイルを削除しません。$HOME ディレクトリ下の設定ファイルなどは手動で削除してください。

パッケージのアップグレード

Pacman は以下のコマンドひとつでシステムの全てのパッケージのアップデートができます。システムがどれだけ新しいかによってかかる時間が変わります。このコマンドはリポジトリデータベースと同期してそれからシステムのパッケージをアップデートします(リポジトリにない'ローカル'パッケージは別です):

# pacman -Syu
警告: アップデートがきたらすぐにアップデートしようとする前に、Arch のローリングリリースのことを再確認してください、アップデートが思いがけない結果になることもあります。つまり、重要なプレゼンをやらなくちゃいけないからといってアップデートするのは賢いとは言えません。手の空いた時間に、何が起こっても対処できるように準備をしてからアップデートしましょう。

Pacman は強力なパッケージ管理ツールですが、全ての問題を解決できるわけではありません。混乱したのなら The Arch Way を読んで下さい。ユーザーは用心深くなって、システムのメンテナンスの責任を自分でとらなくてはなりません。システムアップデートをしたときは、pacman からの表示を全て読み常識を働かせることが肝要です。もし(ユーザーによって作られた)設定ファイルを新しいパッケージのバージョンにあわせて変更する必要があるときは、ユーザーの設定を上書きするのを回避するために .pacnew ファイルが作られます。Pacman はユーザーにそれらをマージするよう表示します。これらのファイルはユーザーが手動で修正しなくてはなりません。パッケージのアップグレードや削除のあとチェックするのが良いでしょう。詳しくは Pacnew と Pacsave ファイルを見て下さい。

ヒント:
  • Pacman からの出力は /var/log/pacman.log に記録されています。
  • wat-gitAUR などのログビューアを使うことで pacman のログを検索できます。

アップグレードするまえに、Arch Linux ホームページ の最新ニュースをチェックしておくとよいでしょう (もしくは RSS フィード, arch-announce メーリングリストを講読したり Twitter の @archlinux_jp をフォローする): アップデートの際にいつもとは違うユーザーの操作が必要になった時 (pacman から与えられる指示だけでは不十分な場合など)、それに関してニュースが作られているはずです。

もし解決できない問題にあたったときは、フォーラムを検索してみましょう。他の人も同じ問題にぶつかり、解決法が投稿されているかもしれません。

部分的なアップグレードはサポートされていません

Arch Linux はローリングリリースであり、常に新しいバージョンのライブラリがリポジトリにプッシュされます。開発者や Trusted User はライブラリにあわせてリポジトリの全てのパッケージをリビルドします。ローカルでパッケージをインストールした場合 (AUR のパッケージなど)、ユーザーは必要に応じて共有ライブラリにあわせてリビルドしなくてはなりません。

つまり部分的なアップグレードはサポートされていませんpacman -Sy package や、それと同等の pacman -Sy からの pacman -S package などをしないでください。どんなときでも、パッケージをインストールする前に (pacman -Syu で) アップグレードしてください。IgnorePkgIgnoreGroup を使用する場合は気をつけて扱って下さい。pacman -Sy は基本的に使ってはいけないコマンドで、代わりに pacman -Syu を使って下さい。

一度、部分的なアップグレードがなされると、リンクしていたライブラリが見つからなくなってバイナリが壊れてしまいます。シンボリックリンクを張ることでこの問題を"解決"しようとしてはいけません。ライブラリは後方互換性がないときには soname のバージョンアップに対応します。pacman -Syu を実行しさえすれば、ミラーと同期して pacman が壊れていないかぎり問題が修正されます。

インストールされているパッケージのアップグレードを確認したいときは pacman パッケージに含まれている bash スクリプト checkupdates を使うことで、システムアップデートを行わずに安全に確認が行えます。

パッケージ・データベースに問い合わせる

-Q フラグを使って Pacman からローカルデータベースを問い合わせます:

$ pacman -Q --help

同期しているデータベースに問い合わせるには -S フラグを使います:

$ pacman -S --help

Pacman を使ってパッケージ名と説明の両方をデータベースの検索にかけるには:

$ pacman -Ss 検索ワード1 検索ワード2 ...

既にインストールしたパッケージ内を検索するには:

$ pacman -Qs 検索ワード1 検索ワード2 ...

パッケージ名が分かっていれば、より詳しい情報を得ることができます:

$ pacman -Si パッケージ名

既にインストールしたパッケージの情報を得るには:

$ pacman -Qi パッケージ名

-i フラグをふたつ付けることでバックアップファイルの一覧と状態を表示できます:

$ pacman -Qii パッケージ名

あるパッケージによってインストールされたファイルの一覧を得るには:

$ pacman -Ql パッケージ名

インストールされていないパッケージには pkgfile を使って下さい。

あるファイルがどのパッケージによってインストールされたかを調べるには:

$ pacman -Qo /パス/ファイル名

孤立した、他のパッケージに必要とされていないパッケージの一覧を得るには:

$ pacman -Qdt

明示的にインストールしたパッケージで、依存関係で必要とされていないパッケージを全て表示するには:

$ pacman -Qet

パッケージの依存のツリーを見るには:

$ pactree パッケージ名

あるパッケージを必要としている全てのパッケージを見るには pkgtoolswhoneeds を使います:

$ whoneeds パッケージ名

もしくは pactree のリバースフラグを使って:

$ pactree -r package_name

pacman ヒントには他の例も載っています。

データベースの構造

通常 pacman のデータベースは /var/lib/pacman/sync に配置され、/etc/pacman.conf で指定したリポジトリのデータベースファイルがそこに作成されます。データベースファイルは gzip で圧縮された tar アーカイブになっており、パッケージごとにディレクトリが含まれています。例えば which パッケージの場合:

% tree which-2.20-6 
which-2.20-6
|-- depends
`-- desc

depends ファイルにはパッケージが依存するパッケージのリストが記載されており、desc にはファイルサイズや MD5 ハッシュなどのパッケージの情報が入っています。

パッケージキャッシュの削除

pacman はダウンロードしたパッケージを /var/cache/pacman/pkg/ に保存し、古いバージョンやアンインストールされたパッケージを自動では削除しません。従ってこのフォルダのサイズをあまりにも大きくしすぎないために定期的・計画的にこのフォルダを掃除する必要があります。

現在インストールされていないパッケージキャッシュを全て削除するオプションは:

# pacman -Sc
警告:
  • インストールしたパッケージが安定していて、ダウングレードが必要ないときだけ行なって下さい。この操作をするとキャッシュフォルダから全ての古いバージョンを削除するため、現在インストールされているバージョンのパッケージだけが残ります。将来のアップグレードでパッケージが破損したときに古いパッケージが必要になることがあり、バージョンを戻したいと思ったときに、キャッシュに古いパッケージがないと Arch Linux Archive などから古いパッケージを取得するしか方法がなくなってしまいます。
  • pacman -Scc でキャッシュフォルダを完全に削除することも可能ですが、これはあまり推奨されてはいません。上の欠点に加えて、必要なときにキャッシュフォルダから直接パッケージを再インストールすることができなくなってしまい、再ダウンロードが強いられるためです。よっぽどディスク容量を欲しているとき以外は使うべきではありません。

上記の欠点のため、-Sc-Scc スイッチを使う代わりに、キャッシュから削除するパッケージの数をもっと細かく制御できるスクリプトを使うのが推奨されます:

  • pacman パッケージに入っている paccache コマンドは、デフォルトでそれぞれのパッケージのキャッシュで一番新しい3つのバージョンを残して後を全て削除します:
    $ paccache -r
    ただし、この方法では paccache はパッケージがインストールされているかどうかを確認しないため、既にアンインストールしたパッケージも保持されます。アンインストールしたパッケージのキャッシュを全て削除するには、次のコマンドを実行する必要があります:
    $ paccache -ruk0
    他のオプションは paccache -h を見て下さい。

追加コマンド

システムのアップグレードとパッケージのインストール (ワンライナー):

# pacman -Syu パッケージ名1 パッケージ名2 ...

インストールをしないで、パッケージをダウンロードする:

# pacman -Sw パッケージ名

リポジトリに存在しない'ローカル'のパッケージ (例: AUR のパッケージ) をインストール:

# pacman -U /パス/パッケージ名-version.pkg.tar.xz

リポジトリにない、リモートのパッケージを URI を入力してインストール:

# pacman -U http://www.example.com/repo/example.pkg.tar.xz
ヒント: pacman のキャッシュにローカルパッケージのコピーを残したいときは、次を使って下さい:
# pacman -U file://path/to/package/package_name-version.pkg.tar.xz

ノート

警告: --force スイッチを使う時は細心の注意を払って下さい、誤って使用すると大きな問題が起こる場合があります。Arch ニュースでこのスイッチを使うように指示があってときだけ使用することを強く推奨します。

pacman で何か操作を行うときは、必ず、インストールしたり削除したりするパッケージのリストが表示され、権限が要求されます。-p を使うことで -S, -U, -R などの操作を阻止することができます。

pacman にはシステムの操作を簡単にする多数のユーティリティが入っています。それぞれのユーティリティは --help スイッチを付けて呼び出すことでコマンドオプションを表示できます。

設定

pacman の設定は /etc/pacman.conf に記述されています。ここで pacman がどのように動作するかを決めることができます。より詳しい情報は man pacman.conf にあります。

全般設定

全般的な設定は [options] セクションにあります。ここで設定されている項目については man かデフォルトの pacman.conf を参照してください。

カラー出力

Pacman にはカラーオプションが存在します。/etc/pacman.conf の "Color" という行をアンコメントしてください。

アップデートする前にバージョンを比較

利用可能なパッケージの新旧バージョンを確認したい場合、/etc/pacman.conf の "VerbosePkgLists" 行をアンコメントしてください。pacman -Syu の出力が以下のようになります:

Package (6)             Old Version  New Version  Net Change  Download Size

extra/libmariadbclient  10.1.9-4     10.1.10-1      0.03 MiB       4.35 MiB
extra/libpng            1.6.19-1     1.6.20-1       0.00 MiB       0.23 MiB
extra/mariadb           10.1.9-4     10.1.10-1      0.26 MiB      13.80 MiB

アップグレードさせないパッケージを設定

ある特定のパッケージをアップデートさせないようにするには:

IgnorePkg=linux

複数のパッケージを記述するときはスペースで区切るか、IgnorePkg 行を追加してください。

アップグレードさせないグループを設定

パッケージの場合と同様に、アップグレードさせないグループを指定することができます:

IgnoreGroup=gnome

インストールさせないファイルを設定

特定のディレクトリのインストールをさせないようにするには NoExtract リストにディレクトリを加えます。例えば、systemd ユニットのインストールを避けるには:

NoExtract=usr/lib/systemd/system/*

もしくは localepurgeAUR と同じように、英語以外のローカライゼーションのインストールを止めるには:

NoExtract = usr/share/help/* !usr/share/help/en*
NoExtract = usr/share/locale/* !usr/share/locale/en* !usr/share/locale/locale.alias
NoExtract = usr/share/man/* !usr/share/man/man*
NoExtract = usr/share/vim/vim74/lang/*

後ろのルールは前のルールを上書きします。また、! でルールを打ち消すことで、必要なロケールだけを維持できます。

ヒント: pacman 5 から、localepurgebleachbit で消去したロケールがあるパッケージをアップデートする際に、pacman はロケールが存在しないという警告メッセージを表示します。警告を表示しないようにするには pacman.confCheckSpace オプションをコメントアウトしてください。ただし容量チェック機能は全てのパッケージで無効になります。

複数の設定ファイルを使用

設定ファイルが複数あって (メインの設定と testing リポジトリを有効にした設定がある場合など)、設定ファイルのオプションを共有したい場合、設定ファイルで Include オプションを宣言することができます。例:

Include = /path/to/common/settings

/path/to/common/settings は共有したいオプションが存在するファイルに置き換えてください。

リポジトリ

/etc/pacman.conf に書かれているように、Repositories セクションではどのリポジトリを使うか定義します。リポジトリはここで直接設定することもできますし、他のファイル (/etc/pacman.d/mirrorlist) から読み込ませることもできます。ただしどれかひとつのファイルを使うようにしてください。ミラーの設定はここを見て下さい。

警告: [testing] リポジトリを使う場合には注意が必要です。このリポジトリにあるパッケージは活発に開発が進んでいるため、更新したら動かなくなるものもあります。testing リポジトリを使う場合は、最新情報が流れている arch-dev-public メーリングリスト を購読するのをお薦めします。

パッケージのセキュリティ

Pacman 4 は署名済みのパッケージをサポートしていて、パッケージにセキュリティレイヤーを加えています。SigLevel を使うことでリポジトリ毎に(もしくは全体的に)セキュリティレベルを設定することが可能です。デフォルトの設定では

/etc/pacman.conf
SigLevel = Required DatabaseOptional

によって全てのリポジトリで全てのパッケージの署名検証が有効にされています。上述したようにリポジトリ毎に SigLevel を使うことでこの設定を上書きすることができます。パッケージに署名する方法や署名の検証について詳しくは、ここを見て下さい。

フック

pacman/usr/share/libalpm/hooks/ ディレクトリのフックを処理の前後に実行することができます。pacman.confHookDir オプションでフックディレクトリを追加できます。

alpm のフックに関する詳細は alpm-hooks(5) の man ページを参照。

トラブルシューティング

パッケージ XYZ にアップデートしたらシステムが壊れました

Arch Linux はローリングリリースで最前線のディストリビューションです。一般的な使用については安定していると判断されるとすぐにパッケージがアップデートされます。しかしながら、アップデートにユーザーの介入が必要になるときが時々あります: 設定ファイルをアップデートしたり、追加の依存パッケージを変更したりなど。

一番重要なことは"やみくもに" Arch のシステムをアップデートしないということです。常時、アップデートされるパッケージの一覧を読みましょう。"重要な"パッケージ (linux, xorg-server など) がアップデートされるのか確認しましょう。もしそうであれば、https://www.archlinux.jp/ でニュースをチェックしたり最近のフォーラムの投稿を見て同じ問題が発生している人がいないか確認したりするのが大抵の場合役に立ちます。

パッケージをアップデートすると問題が発生することを予期される・知られている場合は、パッケージ作成者はパッケージがアップデートされた時、pacman が正しいメッセージを表示しているか確認します。アップデート後に問題がおこった時は、pacman の出力をログ (/var/log/pacman.log) を見て再チェックしてください。

この段階で pacman から何も有用な情報が得られなく、https://www.archlinux.jp/ に関連するニュースもなく、フォーラムにもそのアップデートに関連する投稿がされていない時は、助けを求めるのにフォーラムや IRC を使ったり問題のあるパッケージをダウングレードしてください。

パッケージ ABC のアップデートが公開されているはずなのに、pacman はシステムは最新だと言っています

Pacman のミラーはすぐに同期されるわけではありません。あなたのアップデートが有効になるまで 24 時間以上かかることもあります。おとなしく待つか他のミラーを使ってください。MirrorStatus にミラーの更新状況がのっています。

アップデートでこんなエラーが出ました: "file exists in filesystem"

関連: Taken from https://bbs.archlinux.org/viewtopic.php?id=56373 by Misfit138.

error: could not prepare transaction
error: failed to commit transaction (conflicting files)
package: /path/to/file exists in filesystem
Errors occurred, no packages were upgraded.

なぜこれが起こるというと: pacman がファイル衝突を検知して、あなたのために、故意に、ファイルを上書きしないようにしているからです。これは仕様であり、欠陥ではありません。

この問題は簡単に解決できます。安全な方法は初めに他のパッケージがファイルを使っていないか確認する (pacman -Qo /path/to/file) ことです。ファイルが他のパッケージによって使われている場合、バグレポートをしてください。他のパッケージによって使われていない場合、'ファイルシステムに存在している'ファイルの名前を変えてもう一度アップデートしてください。うまくいったならば、そのファイルは削除してかまいません。

pacman やフロントエンドを使わずに手動でプログラムをインストールしたときは、プログラムとファイルを削除して pacman を使って正しく再インストールしなくてはなりません。

全てのパッケージはインストールされるとパッケージのメタデータを含んだ /var/lib/pacman/local/$package-$version/files ファイルを作ります。このファイルが壊れている(または空だったり見つからない)と、パッケージをアップデートしようしたときに "file exists in filesystem" エラーが出ます。このようなエラーは大抵一つのパッケージだけが関わっていて、手動で名前を変更してその後削除する代わりに、pacman -S --force パッケージ名 で pacman にファイルを上書きさせることができます。

絶対に pacman -Syu --force はしないでください。

パッケージのインストール時にこんなエラーが出ました: "not found in sync db"

まず、パッケージが本当に存在しているか確認しましょう(打ち間違いも見逃さずに!)。パッケージが存在しているのなら、あなたのパッケージリストが古くなっているかリポジトリが正しく設定されていない可能性があります。pacman -Syy で全てのパッケージリストを更新してください。

パッケージをインストールする時にエラーが表示されます: "target not found"

まず、パッケージが本当に存在するか確認してください (typo がないかよく見てください)。確かにパッケージが存在する場合、パッケージリストが古くなっていたりあなたの使っているリポジトリが正しく設定されていない可能性があります。pacman -Syy を実行して強制的に全てのパッケージリストを更新してみましょう。
また、パッケージが含まれているリポジトリがあなたのシステムで有効になっていないのかもしれません。例えば、パッケージは multilib リポジトリにあるが、multilibpacman.conf で有効になっていないということが考えられます。

Pacman が何度も同じパッケージをアップグレードします

ノート: Pacman バージョン 3.4 からエントリが重複している場合はエラーを表示するため、この質問と回答はすでに不要になっているはずです。

それは /var/lib/pacman/local/ に二重のエントリがあるためです。pacman -Qi は正しいバージョンを示しますが、pacman -Qu は古いバージョンだと認識してアップグレードしようとします。

解決法: /var/lib/pacman/local/ の問題のあるエントリを削除してください。

アップグレード中に Pacman がクラッシュしました

パッケージの削除・再インストール・アップグレード中に "database write" エラーを残して pacman がクラッシュする場合:

  1. Arch インストールメディアを使って起動してください
  2. root ファイルシステムをマウントします
  3. pacman -Syy を使って pacman のデータベースを更新します
  4. pacman -r /path/to/root -S package で壊れたパッケージを再インストールしてください

"make install" を使ってソフトウェアをインストールしましたが、ファイルがどのパッケージにも属していません

"conflicting files" エラーが出る場合、--force スイッチをつけると pacman が手動でインストールしたソフトウェアを上書きします (pacman -S --force)。ファイルシステム中の所有されていないファイルを検索するスクリプトについては Pacman ヒント#ファイルがどのパッケージにも所有されていないことを確認 を見て下さい。

警告: --force スイッチを使う時は気をつけてください。間違った使用で重大な問題が発生することがあります。Arch ニュースで使うように指示が出ている時にだけ使うことを推奨します。

特定のファイルをもったパッケージが必要です。どのパッケージがそのファイルを持っているかわかりますか

全てのファイルと関連パッケージの分割データベースを使う pkgfile をインストールしてください。

Pacman が完全に壊れました!どうやったら再インストールできますか?

修復できないほど pacman が壊れてしまった場合、手動で必要なパッケージ (openssl, libarchive, pacman) をダウンロードして root に展開してください。pacman バイナリはデフォルト設定ファイルと一緒に復帰します。その後、pacman によってパッケージを再インストールしてパッケージデータベースを完全に整備してください。詳しい情報や自動で行うためのサンプルスクリプトが ここ にあります。

システムをアップグレードした後、再起動すると "unable to find root device" エラーが出て起動できません

おそらく initramfs がカーネルアップデート中に破損しています(不正に --force オプションを使うと起こりえます)。2つの解決方法があります:

1. Fallback エントリを試す:

ヒント: いずれの理由でエントリを削除した場合でも、ブートローダのメニューが表示された時に Tab キー (Syslinux の場合) や e (GRUB や gummiboot の場合) を押して、initramfs-linux-fallback.img に名前を変更して Enterb を押して(ブートローダによる)新しいパラメータを使って起動できます。
システムが起動したら、コンソールかターミナルから次のコマンド (持ち合わせの linux カーネル用)を入力して initramfs イメージを再生成します:
# mkinitcpio -p linux

2. 動かない場合、最新の Arch リリース (CD/DVD または USB スティック) から起動する:

ノート: 最新のリリースを持っていなかったり他の "live" Linux ディストリビューションしかないときは、代わりに古い方法である chroot が使えます。arch-chroot スクリプトを入らせるよりは多くのタイピングが必要です。
# mount /dev/sdxY /mnt         #あなたの root パーティション。
# mount /dev/sdxZ /mnt/boot    #/boot パーティションを分割している場合。
# arch-chroot /mnt
# pacman -Syu mkinitcpio systemd linux
カーネル (linux パッケージ) の再インストールは自動的に initramfs イメージを mkinitcpio -p linux で再生成します。別個にやる必要はありません。
その後 exit, umount /mnt/{boot,} , reboot を実行してください。

pacman によって公式のインストールメディアがクラッシュする

公式のインストールメディア (ISO) は起動時にアップデートするようには設定されていません。インストールメディアから pacman -Syu を実行すると、メモリが枯渇して、予期しないクラッシュが発生することがあります。実際に利用できる空きメモリとは関係なく、インストールメディアが任意の値 (32GB) を pacman に報告しているのが原因です [1]。2015年7月現在、この問題を回避する唯一の方法は、32GB 以上のスワップか zram 領域を作成するしかありません。

インストールメディアを使って、インストール済みの環境をアップデートする場合、--root= オプションと --cachedir= パスを使って pacman に実際のストレージを指定してください。#アップグレード中に Pacman がクラッシュしましたを参照。

signature from "User <email@gmail.com>" is unknown trust

pacman-key#全ての鍵のリセットに従って下さい。または手動で archlinux-keyring パッケージをアップグレードしてください: pacman -S archlinux-keyring

signature from "User <email@archlinux.org>" is invalid

システム時刻が間違っていると、署名鍵が期限切れとして扱われたりパッケージの署名チェックが失敗して、以下のようなエラーが表示されます:

error: package: signature from "User <email@archlinux.org>" is invalid
error: failed to commit transaction (invalid or corrupted package (PGP signature))
Errors occured, no packages were upgraded.

パッケージをインストール・アップグレードする前に ntpd -qghwclock -w を root で実行して下さい。

"failed to commit transaction (invalid or corrupted package)" エラー

/var/cache/pacman/pkg にある *.part ファイル (部分ダウンロードファイル) を探して、ファイルを削除して下さい (pacman.confXferCommand を設定しているとこのエラーがよく起こります)。

# find /var/cache/pacman/pkg/ -iname "*.part" -exec rm {} \;

pacman を使うたびにエラーが表示されます: 'warning: current locale is invalid; using default "C" locale'

そのエラーは、あなたの locale が正しく設定されていないと言っています。ロケールを見て下さい。

pacman でプロキシ設定を使うにはどうすればいいですか?

環境変数 ($http_proxy, $ftp_proxy など) を使って下さい。sudo と一緒に Pacman を使う時は、環境変数を pacman に渡すように sudo を設定してください。

明示的にインストールしたか依存でインストールしたかの情報を保ちながら、全てのパッケージを再インストールするにはどうすればいいですか

ネイティブのパッケージを全て再インストールするには: pacman -Qnq | pacman -S - (-S オプションはデフォルトでインストールの理由を維持します)。

次に自分で作成したパッケージを全て再インストールしてください、pacman -Qmq でパッケージを確認できます。

パッケージのダウンロード時にフリーズする

pacman がリポジトリのアップデートや同期をできないというネットワークの問題がいくつか報告されています [2] [3]。Arch Linux のインストール時にこの問題が発生する場合、pacman のデフォルトのファイルダウンローダを置き換えることで解決します (詳しくは pacman のパフォーマンスの向上を参照)。VirtualBox で Arch Linux をゲスト OS としてインストールする時にこの問題が起こる場合、マシンのプロパティで NAT の代わりに Host interface を使うことで解決します。

Failed retrieving file 'core.db' from mirror

ミラーを正しく設定しているのにこのエラーメッセージが表示される場合、ネームサーバを設定してみてください。

参照