Debian パッケージの問題: '/' にインストールされるファイル

Debian パッケージの問題: '/' にインストールされるファイル

私は最近PPAを配置するために小さなPythonユーティリティをパッケージ化しようとしましたが、ほとんど動作しましたが、パッケージの/usr/bin代わりにバイナリ(chmod + x Pythonスクリプト)をインストールするのに問題があります。 、にインストールされます/。このディレクトリ構造があります - >http://db.tt/0KhIYQL

私のパッケージMakefileは次のとおりです。

TARGET=usr/bin/txtrevise

make:
      chmod +x $(TARGET)

install:
      cp -r $(TARGET) $(DESTDIR)

$(DESTDIR)私が理解したように、私はdebuildを実行したときにdebianサブディレクトリにファイルを置くためにそれを使用しました。

usr/bin私のパッケージのルートディレクトリにあるフォルダに実行可能ファイルtxtreviseスクリプトがあります。私はMakefileとusr/bin/textrevise私のtarballであるtxtrevise_1.1.original.tar.gzも持っています。

しかし、これをビルドしてDebianパッケージの内部を見てみると、txtreviseは常にusr / binの代わりにパッケージのルートにあり、/ usr / binの代わりに/にインストールされます。

スクリプトをどのようにデビルドして正しい場所に配置しますか?

ベストアンサー1

問題は呼び出しにあります。これにより、cp $(TARGET) $(DESTDIR)ディレクトリの下のファイルがコピーされます。つまり、プレフィックスをスキップします。次のディレクトリ構造を維持する必要があります。textrevise$(DESTDIR)/usr/bin

install:
    # ensure the destination directory exists
    mkdir -p $(DESTDIR)/usr/bin
    # copy the program to its final destination
    cp $(TARGET) $(DESTDIR)/$(TARGET)
    # ensure the program and directories have the correct permissions
    chmod a+rx $(DESTDIR)/$(TARGET)

他の人が使用するパッケージを作成するときは、すべてのディレクトリとバイナリに対する権限が次のものに基づいていることを確認する必要があります。Debian ポリシー;この場合は、スキーマ(およびディレクトリsum)$(DESTDIR)/usr/bin/textreviseに属しようとします。root:root0755$(DESTDIR)/usr$(DESTDIR)/usr/bin

一度見てみたいかもしれません インストールするより簡潔なMakefileセクションを作成するためにインストールされたファイルの所有者、グループ、およびモードをより効果的に制御できるコマンド。

おすすめ記事