私は走るラズベリーBMC- 以下に基づく分布ラズベリーパイ、これはカスタマイズされた最小Debianです。ラズベリーパイ。
私の記憶が正しい場合、man
このユーティリティはデフォルトでRaspBMCと一緒にインストールされません(間違っている可能性があります)。
問題は、man
実際のユーティリティがインストールされる前にインストールされたパッケージにはマニュアルページがインストールされていないことです。これには、システムにプリインストールされたパッケージが含まれます。
例:udisks-glue(プレインストール)を試してみました。
$ man udisks-glue
No manual entry for udisks-glue
パッケージを再インストールすると、マンページが表示されます。
$ apt-get remove udisks-glue
$ apt-get install udisks-glue
$ man udisks-glue
[Man page gets displayed]
問題は何とかインストールできるかということです。みんなマニュアルページを紛失するのは簡単ですか?
私が知っている限り、マニュアルページをインストールすることはapt-get install
各コマンドを実行するためのステップです。
Unpacking udisks-glue (from .../udisks-glue_1.3.4-1_armhf.deb) ...
Processing triggers for man-db ...
[...]
分割と征服を使用すると、次のように取得できると思います。
- インストールされているすべてのパッケージのリストを取得する(
dpkg -l | grep ??? | cut ??? | ???
) - 設定を台無しにせずにapt-getにパッケージを再インストールするように指示する方法を見つけます(一種の
remove + install
請求書には適していますが、依存関係とうまく機能しないようです)。
編集:これはトリックを行う必要があります:
sudo apt-get install --reinstall packagename
- 1の各項目に対して2を実行します。
これは(最も簡単な)方法ですか?
修正する
これを一度やったことがあるので、再インストールしたときにパッケージが最新バージョンにアップグレードされていないことを確認したいと思いました(apt-get upgrade
基本的にはそうです)。apt-get install --reinstall
答え1
@derobertの答えから始めて、すべてのパッケージの最新バージョンを正確に再インストールしようとしました。
簡潔なバージョン:
sudo dpkg -l | grep '^ii ' | sed 's/ */\t/g' |cut -f 2,3 | sed 's/\t/=/' | xargs apt-get install --reinstall -y --ignore-missing
説明する:
実際に重要なのは、各パッケージに必要なバージョンを指定することです。
一般的なコマンドは次のとおりです。
apt-get install --reinstall <package>=<version>
長いコマンドラインを分割します。
$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===========================================================-==================================-============-========================================================================
ii adduser 3.113+nmu3 all add and remove users and groups
ii apt 0.9.7.8+rpi1 armhf commandline package manager
ii apt-utils 0.9.7.8+rpi1 armhf package managment related utility programs
ii aptitude-common 0.6.8.2-1 all architecture indepedent files for the aptitude package manager
ii atmel-firmware 1.3-4 all Firmware for Atmel at76c50x wireless networking chips.
$ dpkg -l | grep '^ii '
...ヘッダ行とステータスが" hold
"の一部のパッケージを削除します(代わりhi
にマークされていますii
)。
$ dpkg -l | grep '^ii ' | sed 's/ */\t/g'
...複数のスペースを単一のタブ文字に変換しますcut
。シミュレーションするには、「x」が0回以上続く)sed
x+
xx*
出力は次のとおりです。
ii adduser 3.113+nmu3 all add and remove users and groups
ii apt 0.9.7.8+rpi1 armhf commandline package manager
ii apt-utils 0.9.7.8+rpi1 armhf package managment related utility programs
ii aptitude-common 0.6.8.2-1 all architecture indepedent files for the aptitude package manager
ii atmel-firmware 1.3-4 all Firmware for Atmel at76c50x wireless networking chips.
次:
$ dpkg -l | grep '^ii ' | sed 's/ */\t/g' | cut -f 2,3 | sed 's/\t/=/'
...名前を調べるとバージョン各パッケージの(2番目と3番目のフィールド)を区切るタブ文字を「=」に置き換えます。
adduser=3.113+nmu3
apt=0.9.7.8+rpi1
apt-utils=0.9.7.8+rpi1
aptitude-common=0.6.8.2-1
atmel-firmware=1.3-4
最後に、上記の各項目をxargs
。
パラメータに注意してください--ignore-missing
。このコマンドは「ベストエフォート」として実行されます。一部のパッケージを再インストールできないため、アップデートを停止したくありません(これらのパッケージは変更されていません)。
$ dpkg -l | grep '^ii ' | sed 's/ */\t/g' |cut -f 2,3 | sed 's/\t/=/' | xargs apt-get install --reinstall --ignore-missing
テスト中に--dry-run
apt-getにパラメータも追加しました。
答え2
かなり簡単な方法のようです。パッケージのリストとステータスを取得するコマンドはdpkg --get-selections
次のとおりです。
dpkg --get-selections | grep '\<install$' | cut -f1 | xargs apt-get install --reinstall