ファイルのパッケージバージョンをインポートする

ファイルのパッケージバージョンをインポートする

/etcパッケージが提供するファイルを削除しましたpackageA。そのファイルがどこにあり、どのパッケージがそれを提供しているかを知っている限り、そのファイルのみを再インストールする方法はありますか?

私のサーバーでUbuntu 12.04と14.04を実行しています。

ベストアンサー1

まず、どのパッケージがファイルを提供しているかを確認できます。

dpkg -S /path/to/file

その後、パッケージの現在のバージョンをダウンロードできます。

apt-get download package-name

/var/log/apt/何らかの理由で元々インストールされているパッケージのバージョンが必要な場合は、APTログインでそのバージョンを見つける必要があります/var/log/dpkg.log*(まだ最新のバージョンではない場合)。バージョン番号または日付を確認したら、次のことができます。snapshot.debian.org(Debian) または発射台(Ubuntu)。

パッケージをダウンロードしたら、.deb次のコマンドを使用して一時ディレクトリに解凍できます。

dpkg-deb -x package_name-1.42.deb

ファイルの内容だけを印刷したい場合は、次のものを使用できます。

dpkg-deb --fsys-tarfile package_name-1.42.deb | tar xO ./path/to/file

コンテンツを所定の場所にコピーできますが、一部のファイルには特定の権限が必要であることに注意してください。正しい権限でファイルを抽出するには、ルートとして抽出する必要があります。dpkg-deb -xその後、次のようにファイルをコピーできます。

# as root
dpkg-deb -x package_name-1.42.deb
cp -p path/to/file /path/to/file

あるいは、tarballを抽出することもできます(ルートを取得するために使用する方法sudoに置き換えます)。su

dpkg-deb --fsys-tarfile package_name-1.42.deb | sudo tar x -C / ./path/to/file

あるいは、パッケージ全体を再インストールすることもできます。ファイルがconffileの場合(つまり、アップグレード全体に保存する構成ファイルとしてマークされている場合)、変更または欠落しているファイルを復元するようにdpkgに指示する必要があります。他の構成ファイルに対する変更を保存しようとする可能性があるため、欠落している構成ファイルを処理する方が簡単です。したがって、ファイルが変更されたconfファイルで元の状態に戻したい場合は、最初にconfファイルが存在しないようにバージョン名を変更してください。その後実行

dpkg -i --force-confmiss package_name-1.42.deb

apt-getワンタイムダウンロードを使用してパッケージを再インストールできます。設定ファイルを復元するには、追加apt-getオプションをに渡すように指定しますdpkg

apt-get --reinstall -o 'DPkg::options="--force-confmiss"' install package_name

将来この問題と他の問題を回避するには、以下をインストールします。マネージャーをお待ちくださいapt-get install etckeeper)で編集して、/etc/etckeeper/etckeeper.confお好みのサポートバージョン管理システムを選択してから実行しますetckeeper init。の修正は/etcバージョン管理に保存されます。etckeeper commit構成ファイルを変更するときは、意味のあるログメッセージで実行してください。その後、修正を取り消すには、/etc影響を受けたファイルの以前のバージョンを復元します。

おすすめ記事