プライベートストア用のパッケージを構築するために使用していますequivs-build
。ファイルはうまくインストールされますが、apt-get install
ファイルを削除すると、そのファイルがインストールされているフォルダ構造全体を削除しようとします。
Equivs ファイルには次の行があります。
Files: <file to copy> /usr/local/sbin/
実行すると、apt-get remove
次のようなメッセージが表示されます。
" ../usr/local ディレクトリが空でないため、削除されませんでした。"
フォルダ/usr/local/sbin
が削除されます。
これを防ぐ方法はありますか?
答え1
これに関する参考資料がありますスタックオーバーフローdpkg
その背後に基本的なツールを使用する文脈でapt-get
:1、2一つサム。毎回同じ考慮事項が表示されます。
- これは警告する要求に応じてパッケージとそのディレクトリが実際に削除された場合にのみ
- ~によるとベストプラクティス、/usr/localはパッケージには使用しないでください。Debian ポリシー(何ですか?リンティアンパッケージについて話しますか? )と尊敬ファイルシステム階層標準
- 一部の人々は次のような経験をしています。その他の行動ターゲットが別の場所にある場合(例:/ bin VS)、まったく同じ削除操作が実行されます。 /usr/local/bin または /opt
- preinst、prerm、postinst、postrmスクリプト技術的には、インストール/削除中に動作を変更する項目を含めることができます。しかし、やはり、/usr/localのdpkgの動作は例外または規則です(空のトップレベルディレクトリの削除、1つのレベルに限定されません)。デザインはパッケージとフォルダの所有権の影響を受けますか、/usr/localのパッケージにのみ影響しますか?
最後に、代替時間が経つにつれて、これには面倒な作業をよりよく整理することが含まれます。パッケージリポジトリ。最後に同等の建築別の方法でやる紛争パッケージ管理システムの設計。
答え2
行が入力したのと同じように見えますか、または単語の後にコロン()がFiles
ありませんか?:
Files
この例に示すように、Equivs 制御ファイルは次のようになります。
### Commented entries have reasonable defaults.
### Uncomment to edit them.
Section: misc
Priority: optional
Standards-Version: 3.6.2
Package: main-package
Version: 0.0.1
Maintainer: Your Name <[email protected]>
# Pre-Depends: <comma-separated list of packages>
# Depends: <comma-separated list of packages>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
Architecture: all
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
Files: /home/myuser/main-package.conf /etc/main-package.conf
Description: <short description; defaults to some wise words>
long description and info