でパッケージのリストを確認していましたdselect
が、Return誤って を 2 回押してしまい、オプションが確定して終了してしまいました[S]elect
。
オプションに移動すると[I]nstall
、不要な新しいパッケージ(最初に探していたものとはまったく関係のないパッケージ)をいくつかインストールするように提案されます。
インストール自体はまだ進めていないので、リストを 1 つずつ確認して-
各パッケージを押さずに、新しいパッケージを選択する前の状態に選択をリセットする方法はありますか? ( または別の関連コマンドを介して実行されるかどうかは関係ありませんdselect
。)
編集: (例を追加)
がインストールされている別のマシンで試してみましたdselect
。パッケージがインストールされていないと仮定しましょうgnugo
(これは単なる例です)。
- 起動してリストを取得することを
delect
選択します。[S]elect
gnugo
このリストでを検索します(/に慣れていない場合は を使用してくださいdselect
)。- で選択します+。
- を押してReturn提案を確認し、Returnもう一度押してメイン メニューに戻ります (これは私が犯した間違いです)。
に移動します
[I]nstall
。次のように表示されます。Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed gnugo:i386 libgpm2:i386 libncurses5:i386 libreadline6:i386 libtinfo5:i386 0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. Need to get 1,926 kB of archives. After this operation, 9,634 kB of additional disk space will be used. Do you want to continue [Y/n]?
ここでは、続行しないことを選択します(
n
)。- やめる
dselect
。 dpkg --get-selections | grep gnugo
まったく何も生み出しません。- もう一度開始して
dselect
、もう一度直接進むと[I]nstall
、パッケージはインストール用に選択されたままになります。
もちろん、[S]elect
リストに戻って を検索しgnugo
、 を押して_選択を解除することもできますが、より複雑なケースでは、新しいパッケージ リストを 1 つずつ確認する必要があるかもしれません。
[I]nstall
はdselect
明らかに のフロントエンドですapt-get install
が、その選択をどこから取得するのかわかりません。 でdpkg --get-selection
はないようです。 に関する限り、 で作成されたものはすべて以前のままで、現在 のみ でマークされているもの(まだインストールされていないもの) は に戻るdselect
状態にリセットしたいと思います。メニューからの推奨リストを手動で確認する必要はありません。***
**
__
[I]nstall
編集2:
/var/lib/dpkg/status
これは明らかに、次のエントリを含むのコンテンツに関連しています。
Package: gnugo
Status: install ok not-installed
Priority: optional
Section: games
これを手動で に変更するとStatus: deinstall ok not-installed
、 の選択範囲から消えますdselect
(当然のことですが)。
私が欲しいのは、何を言ってStatus: install ok not-installed
もそれを変換する一般的な方法ですStatus: deinstall ok not-installed
(パッケージの言うことはStatus: install ok installed
影響を受けません)。
答え1
--set-selections
* 引数を使用して次の操作を行いますdpkg
。
echo "<package-name> purge" | dpkg --set-selections
その後、 を使用してapt-get dselect-upgrade
パッケージの選択を適用できます。
インストール対象として選択されたがまだインストールされていないパッケージを見つける必要がある場合 (選択を元に戻すことができる場合)、次のコマンドを使用します。
dpkg --get-selections | awk '{ if ($2=="install") print $1}' | grep -vF "$(dpkg -l | awk '/^ii/ {print $2}')"
もう少し工夫して、それを にパイプして戻すと--set-selections
、まだインストールされていないものはすべて自動的に選択解除されます。
dpkg --get-selections | awk '{ if ($2=="install") print $1,"deinstall"}' | grep -vF "$(dpkg -l | awk '/^ii/ {print $2}')" | dpkg --set-selections
* を使用して、明示的に選択した項目をすべて一覧表示することもできますdpkg --get-selections
。これにより、必要な形式も表示されます--set-selections
。
答え2
では、dpkg --get-selections
インストール対象としてマークされていてまだインストールされていないものはリストされませんが、 ではdpkg -l '*'
リストされ、これらの行は で始まりますin
。
その結果、次の行はこれらの選択をリセットします。
dpkg -l '*' | grep '^in ' | awk '{ print $2 " deinstall" }' | dpkg --set-selections