最近 Kali Linux をインストールしましたが、ミラー選択が柔軟ではないため、すべての deb パッケージが信頼できないミラーからダウンロードされます。sources.list が新しいミラーを使用するように更新されていると仮定して、apt / dselect にすべてのパッケージを再ダウンロードして再インストールするように指示することは可能ですか?
答え1
アレックスが指摘したように:
sudo apt-get clean
sudo apt-get install --reinstall $(dpkg --get-selections | grep -w 'install$' | cut -f 1)
1 つ目は、apt のキャッシュが空であることを確認します。これにより、apt-get はリポジトリからパッケージをダウンロードする必要があります。2 つ目は、まず、インストールされているすべてのパッケージのリストが必要であり、これが部分で$(...)
実行されていることであり、次に apt-get を使用してそれらを再インストールします。aptitude には別の方法があります。
sudo aptitude --reinstall install '~i'
~i
「インストールされたパッケージ」の検索。
どちらの方法でも、自動的にインストールされたパッケージは存在せずに終了するため、apt-mark showauto > packages
これを行う前に を使用して、sudo apt-mark auto $(cat packages)
リストを再確立する必要があります。
答え2
ここでの回答は問題を解決するのに役立ちました。この解決策はおそらく最も効率的ではありませんが、目的は達成できます。
#!/bin/bash
for package in `dpkg --get-selections | grep -w 'install$' | cut -f 1`; do
apt-get install --reinstall $package;
done
答え3
私はこのスクリプトを使用しており、時々 Y(es) を入力するよう求められ、スクリプトは続行されました。しかし、かなり時間がかかるため、完了するまでの時間がかなり長くなります。スクリプトを変更し、--yes force-yes
自動 def/old config の受け入れを強制することを推奨するを挿入しました。
#!/bin/bash
for package in `dpkg --get-selections | grep -w 'install$' | cut -f 1`; do
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install --reinstall $package
done