
私は最近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:root
0755
$(DESTDIR)/usr
$(DESTDIR)/usr/bin
一度見てみたいかもしれません インストールするより簡潔なMakefileセクションを作成するためにインストールされたファイルの所有者、グループ、およびモードをより効果的に制御できるコマンド。