ディレクトリを作成し、debパッケージでその所有者を変更する方法


11

ログ用のディレクトリを作成するdebパッケージを作成する必要があります。ディレクトリを作成し/var/logs/my_package、その所有者をに変更したいmy_user

ドキュメント情報がある私は、ファイルを作成できることはdebian/dir。しかし、これはそれを行うための最良の方法ではないという情報があります。そして、ディレクトリの所有者をどのように変更するべきかについての情報はありません(コマンドchown my_user.my_user /var/logs/my_packagedebian/postinstファイルに配置することを考えています)。

debパッケージでディレクトリを作成するための推奨される方法は何ですか?


回答:


9

あなたは正しかった、debian/my_package.postintそのような操作を実行するにはファイルが必要です:

#!/bin/sh

#DEBHELPER#

set -e

USER="my_user"

mkdir -p /var/log/my_package/    
if id -u $USER > /dev/null 2>&1; then    
    chown ${USER}:${USER} /var/log/my_package/
fi

:スクリプトは、呼び出す前にユーザーが存在するかどうかを確認しますchown


1
大変申し訳ありませんが、これでは私の質問には答えられません。
bessarabov 14年

このpostinstスクリプトが元の質問に答えない理由を説明してください。今は少し戸惑っています。
シルヴァンピノー2014年

申し訳ありませんが、きちんと説明できていません。あなたの解決策はうまく機能し、これは私が実装したものです。しかし、ドキュメントThis generally means there is a problem with the Makefile.私がこのメッセージを理解する方法が他にもあることを理解していると言います。そして、私はこの仕事をするために推奨される方法は何かを知りたいです。
bessarabov 2014

1
ディレクトリの作成debian/rulesは、Makefiledebianパッケージの場合に行うことができます。私はあなたのdebian/rulesことを知りませんでしたので、単一のファイルに基づいたソリューションを提案することを選びました。ただし、chownコマンドはインストール後のプロセスでなければなりません。debian / dirsは避けるべきですが、私の最初の答えは完全に問題ありません。投票して同意してください、ありがとう。
シルヴァンピノー2014

3

postinstスクリプトを作成する必要はありませんが、解決策はまだ少しトリッキーです。私はdhワイルドカードを使用していdebian/rulesます:

#!/usr/bin/make -f
%:
        dh $@

binary:
        dh $@

必要なすべてのことを行います。しかし、私はいくつかのディレクトリの所有権を上書きする必要があります(それをデータと呼びましょう)。だから私はいくつかの例外を作らなければなりません、私は特別なディレクティブを使用します(これは例です):

    override_dh_install:
        dh_install   #calls default *.install and *.dirs installation
        install -d -o www-data -g www-data $(CURDIR)/debian/<package_name>/var/www/<something>/data 

データディレクトリは* .dirsファイルにある必要はありません。しかし、それでも1つのトリックがあります。Debhelperには、所有権をルートに戻すスクリプトdh_fixpermsが含まれているため、オーバーライドする必要があります。

override_dh_fixperms:
    dh_fixperms --exclude data

それで全部です。データディレクトリはconffileとしてカウントされないため、パッケージの削除時に削除されることに注意してください。conffileにする必要がある場合は、別の話です。


これには、パッケージが構築されているシステムにユーザーとグループが存在する必要がありますか?もしそうなら、Debianベースのメカニズムでそれを確実にする方法はありますか?
moritz

これにより、パッケージがインストールされているシステムではなく、debianパッケージのビルドに使用されるシステムにディレクトリが作成 されます。
gerardw 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.