スクリプトでパックマンを実行しようとしています。問題は、競合するパッケージをインストールする必要がありますが、現在インストールされているパッケージを置き換えてはいけません。答え通りここ--noconfirmオプションを渡しましたが、pacmanのstdinがttyを指していないため、デフォルトの答えは「no」と仮定します。パックマンがすべての質問に「はい」と答えるようにするにはどうすればよいですか? pacmanに入力を渡すことはできないので(makechrootpkgを介して実行される)、提案されたyes
コマンドまたは同様のコマンドを使用することはできません。ここ。
これはパックマンの出力です:
loading packages...
resolving dependencies...
looking for conflicting packages...
:: libinput-ubuntu and libinput are in conflict. Remove libinput? [y/N]
error: unresolvable package conflicts detected
error: failed to prepare transaction (conflicting dependencies)
答え1
基本的な回答(テストに使用されます)を--ask BITMASK
裏返す文書化されていないオプション()があります。pacman
次のビット列挙(alpm.h
)が定義されます。
typedef enum _alpm_question_type_t {
ALPM_QUESTION_INSTALL_IGNOREPKG = (1 << 0),
ALPM_QUESTION_REPLACE_PKG = (1 << 1),
ALPM_QUESTION_CONFLICT_PKG = (1 << 2),
ALPM_QUESTION_CORRUPTED_PKG = (1 << 3),
ALPM_QUESTION_REMOVE_PKGS = (1 << 4),
ALPM_QUESTION_SELECT_PROVIDER = (1 << 5),
ALPM_QUESTION_IMPORT_KEY = (1 << 6)
} alpm_question_type_t;
パッケージを自動的に交換するには、以下を使用してください。
sudo pacman -S PKGNAME --ask 4
答え2
これを達成するオプションがないようで、パックマンのソースコードを調べて--yes
パックマンにオプションを追加するパッチを作成しました。https://bugs.archlinux.org/task/48835