Deb paketi ile dizin nasıl oluşturulur ve sahibi nasıl değiştirilir


11

Günlükler için dizin oluşturacak deb paketi oluşturmak gerekiyor. Dizin oluşturmak /var/logs/my_packageve sahibini değiştirmek istiyorum my_user.

Gelen dokümanlar bilgi yoktur ben dosyası oluşturabilirsiniz o debian/dir. Ama bunun bunu yapmanın en iyi yolu olmadığı bilgisi var. Ve bir orada dizin sahibini değiştirmek nasıl hiçbir bilgi (ı komutu yerleştirerek düşünüyorum orada chown my_user.my_user /var/logs/my_packageo debian/postinstdosyada).

Deb paketiyle dizin oluşturmanın önerilen yolu nedir?


Ask Ubuntu'ya hoş geldiniz. Lütfen, biraz zaman ayırabilir misiniz askubuntu.com/help/someone-answers
Sylvain Pineau

Yanıtlar:


9

Haklıydınız, debian/my_package.postintböyle bir işlemi gerçekleştirmek için bir dosyaya ihtiyacınız var :

#!/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

Not : Komut dosyası, kullanıcının aramadan önce var olup olmadığını kontrol eder chown.


1
Çok üzgünüm, ama bu sorumu cevaplamıyor.
bessarabov

Lütfen bu postinst betiğinin neden orijinal sorunuzu yanıtlamadığını açıklayın. Şimdi biraz şaşkınım.
Sylvain Pineau

Doğru şekilde açıklamadığım için üzgünüm. Çözümünüz iyi çalışıyor ve benim uyguladığım da bu. Ancak dokümanlar,This generally means there is a problem with the Makefile. bu mesajı anlamanın başka bir yolu olduğunu anladığımı söylüyor . Ve bu görevi yapmanın önerilen yolunun ne olduğunu bulmak istiyorum.
bessarabov

1
Debian paketleri için debian/rulesolan dizin oluşturma yapılabilir Makefile. Bilmiyorum debian/rulesçünkü tek bir dosyaya dayalı bir çözüm önermeyi tercih ettim. Ancak chownkomutun bir yükleme sonrası işlemi olması gerekir. debian / dirs'ten kaçınılmalıdır, ancak ilk cevabım gayet iyi. Lütfen oy verin ve kabul edin, teşekkürler.
Sylvain Pineau

3

postinstSenaryo oluşturmanıza gerek yok , ama çözüm hala biraz zor. dhJoker karakter kullanıyorum debian/rules:

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

binary:
        dh $@

gerekli tüm şeyleri yapar. Ama bazı dir sahipliğini geçersiz kılmak gerekiyor (veri diyelim). Bu yüzden bir istisna yapmalıyım, özel direktif kullanıyorum (bu bir örnektir):

    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 

Veri dizininin * .dirs dosyasında olması gerekmez. Ama yine de bir numara var. Debhelper, sahipliği kök haline geri döndüren dh_fixperms komut dosyasını içerir, bu nedenle de geçersiz kılmamız gerekir:

override_dh_fixperms:
    dh_fixperms --exclude data

Bu kadar. Veri dizininin conffile olarak sayılmadığını unutmayın, bu nedenle paket kaldırıldığında kaldırılacaktır. Bir conffile yapmanız gerekiyorsa, bu başka bir hikaye.


Bu, kullanıcının ve grubun paketin oluşturulduğu sistemde bulunmasını gerektirir mi? Ve eğer evet ise, bunu Debian tabanlı bir mekanizma ile sağlamanın bir yolu var mı?
moritz

Bu , paketin kurulu olduğu sistemi değil , debian paketini oluşturmak için kullanılan sistemdeki dizinleri yaratacaktır .
gerardw
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.