誤ってパッケージを削除しましたaccept_keywords
ファイル。 〜AMD64から必要なパッケージはわずかしかありませんでしたが、すべてを思い出せません。現在インストールされているすべての不安定なパッケージのリストがあれば、それらを回復できます。それ、どうやったら出来るの?
これを行うには、 equery コマンドを使用します。
equery y "PACKAGE NAME"
は、キーワードデータを含むパッケージに関する情報を出力します。不安定なパッケージは~
としてマークされます。したがって、インストールされているパッケージのリストを繰り返し、安定しているかどうかを出力するスクリプトを作成する必要があります。
シングルequery y "PACKAGE"
の出力は次のようになります。
test@test ~ $ equery y "portage"
Keywords for sys-apps/portage:
| | u |
| a a a p s | n |
| l m r h i m m p s p | u s | r
| p d a m p a 6 i p c 3 a x | s l | e
| h 6 r 6 p 6 8 p p 6 9 s r 8 | e o | p
| a 4 m 4 a 4 k s c 4 0 h c 6 | d t | o
-----------------+-----------------------------+-----+-------
[M]2.1.6.7_p1 | + + + o + + + ~ + + + + + + | # 0 | gentoo
2.1.11.62 | + + + o + + + ~ + + + + + + | # | gentoo
2.1.12.2 | + + + o + + + ~ + + + + + + | # | gentoo
2.2.1 | + + + o + + + ~ + + + + + + | # | gentoo
2.2.6 | ~ ~ ~ o ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | # | gentoo
[I]2.2.7 | + + + + + + + ~ + + + + + + | o | gentoo
2.2.8 | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | # | gentoo
2.2.8-r1 | ~ ~ ~ ~ + ~ ~ ~ ~ ~ ~ ~ ~ ~ | o | gentoo
9999 | o o o o o o o o o o o o o o | o | gentoo
この出力から、パッケージがインストールされていることを意味する[I]
の行を取得する必要があります。次に、アーキテクチャのキーワードを出力する必要があります(たとえば、AMD64-テーブルの2番目の列)。このために、awk
を使用できます(AWKの マニュアルページ 参照用)。単一パッケージの場合、次のようになります。
equery y "portage" | awk '/[I]/{print $4;}'
出力は
+
不安定なパッケージの場合、出力は次のようになります。
~
次に、インストールされているすべてのパッケージでそれを行う必要があります。このスクリプトは私たちを助けます:
#!/bin/bash
ALL_PKG=`equery list "*"`
for PKG in $ALL_PKG
do
echo $PKG
equery y "$PKG" | awk '/[I]/{print $4;}'
done
システムアーキテクチャに基づいて、awkの印刷番号(awk '/[I]/{print $4;}'
)を調整する必要があります。
個別に処理する必要があるいくつかの例外があります。たとえば、パッケージwinetricks
は次の出力を提供します。
test@test ~ $ equery y "winetricks"
Keywords for app-emulation/winetricks:
| | u |
| a a a p s | n |
| l m r h i m m p s p | u s | r
| p d a m p a 6 i p c 3 a x | s l | e
| h 6 r 6 p 6 8 p p 6 9 s r 8 | e o | p
| a 4 m 4 a 4 k s c 4 0 h c 6 | d t | o
---------+-----------------------------+-----+-------
20130629 | o ~ o o o o o o o o o o o ~ | # 0 | gentoo
20130707 | o ~ o o o o o o o o o o o ~ | o | gentoo
99999999 | o o o o o o o o o o o o o o | o | gentoo
ここには[I]
記号がないため、awkは何も出力しません。パッケージの出力が表示されない、または出力がおかしい場合は、手動で調べてください。そのようなパッケージはごく少量であるはずです。
このバージョンでは、不安定なパッケージのリストもunstable.txtに出力されます
#!/bin/bash
ALL_PKG=`equery list "*"`
for PKG in $ALL_PKG
do
echo $PKG
export stb=$(equery y "$PKG" | awk '/[I]/{print $4;}' 2>&1)
echo $stb
if [[ "$stb" == "~" ]]; then echo $PKG >> unstable.txt; fi
done
eix を使用したソリューションですが、はるかに高速で、equeryを使用したソリューションよりもはるかに高速です
eix -c --installed-unstable
パッケージの名前だけが必要な場合は、jsut add --only-names
オプション。