簡単に言えば、私は/var
それを破棄し、バックアップから復元しました。ただし、バックアップには正しい権限が設定されておらず、すべてが/var
ルート所有です。これはいくつかのプログラムを不幸にするようです。
/var/cache/man
提案されているようにfopenが失敗する問題を修正しました。ここ/var/lib/apache2
apache2は起動しません(〜に所有権を与えてwww-data
)。ただし、すべての問題を解決する唯一の方法は、問題が発生したときに権限を手動で変更するようです。プログラムに問題が発生するのを待つ必要があり、一部のファイルに対する権限の問題を特定してから、/var
自分で設定します。
この問題を解決する簡単な方法はありますか?aptitude reinstall x
(一般)に記載されているすべてのパッケージを再インストールしてみましたが、dpkg -S /var
機能しません。
ベストアンサー1
少なくともドキュメントでは実際に動作するapt-get --reinstall install package
必要があります。
➜ ~ ls -l /usr/share/lintian/checks/version-substvars.desc
-rw-r--r-- 1 root root 2441 Jun 22 14:19 /usr/share/lintian/checks/version-substvars.desc
➜ ~ sudo chmod +x /usr/share/lintian/checks/version-substvars.desc
➜ ~ ls -l /usr/share/lintian/checks/version-substvars.desc
-rwxr-xr-x 1 root root 2441 Jun 22 14:19 /usr/share/lintian/checks/version-substvars.desc
➜ ~ sudo apt-get --reinstall install lintian
(Reading database ... 291736 files and directories currently installed.)
Preparing to unpack .../lintian_2.5.27_all.deb ...
Unpacking lintian (2.5.27) over (2.5.27) ...
Processing triggers for man-db (2.6.7.1-1) ...
Setting up lintian (2.5.27) ...
➜ ~ ls -l /usr/share/lintian/checks/version-substvars.desc
-rw-r--r-- 1 root root 2441 Jun 22 14:19 /usr/share/lintian/checks/version-substvars.desc
/var
ディレクトリにファイルを含むすべてのパッケージをインポートできない可能性があるため、次のことをお勧めします。みんな探してみてください:
➜ ~ find /var -exec dpkg -S {} + 2> /dev/null | grep -v "no path found" | wc -l
460
私の場合、パッケージを含む460のパスを占めました。同じパッケージが複数のパスを持つことができることを考慮すると、実際には少なくなります。一部の後処理により、約122の経路があることがわかります。
➜ ~ find /var -exec dpkg -S {} + 2> /dev/null | grep -v "no path found" | cut -d : -f 1 | sort | uniq | wc -l
122
もちろん、これは同じパスを持つ複数のパッケージを計算しますwamerican, aspell-en, ispanish, wspanish, aspell-es, myspell-es
。たとえば、次のように変更するのは簡単です。
➜ ~ find /var -exec dpkg -S {} + 2> /dev/null | grep -v "no path found" | cut -d : -f 1 | sed 's/, /\n/g' | sort | uniq | wc -l
107
/var
したがって、あらゆる種類のファイルまたはサブディレクトリを含む107のパッケージがあります。以下を使用して再インストールできます。
sudo apt-get --reinstall install $(find /var -exec dpkg -S {} + 2> /dev/null | grep -v "no path found" | cut -d : -f 1 | sed 's/, /\n/g')
これにより権限が変更されます。
今、別のオプションがあります。正しいインストールを見つけ、インストールファイルの権限をコピーすることです。
chmod --recursive --reference good/var bad/var