2012-08-27 3 views
2

현재 Ubuntu 12.04를 실행 중입니다. 현재 성공적으로 설치하고 세 가지 새로운 프로세스를 시작하는 데비안 패키지를 만들었습니다. 또한 /etc/init.d에 내부에 다음과 같은 스크립트를 배치하여 이러한 세 가지 프로세스 실행시에 시작 만든 :프로세스를 중지하기 위해 dpkg remove

# This example is from http://www.debian-administration.org/article/Making_scripts_run_at_boot_time_with_Debian 
# Also used http://wiki.debian.org/LSBInitScripts/ 

### BEGIN INIT INFO 
# Provides:   bleh 
# Required-Start: $remote_fs $syslog $network 
# Required-Stop:  $remote_fs $syslog $network 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: Start daemon at boot time 
# Description:  Enable service provided by daemon. 
### END INIT INFO 


# Carry out specific functions when asked to by the system 
case "$1" in 
    start) 
    cd //opt/bleh 
    attrf=.gatewayattributes 

    if [ ! -z "$1" ] 
    then 
    echo "[gateway]" >> $attrf 
    echo "activationKey = $1" >> $attrf 
fi 

./bleh1 -n & 
./bleh2 & 
python bleh3 & 

    ;; 
    stop) 
cd //opt/bleh 
/usr/bin/pkill -f ./bleh1 -n 
    /usr/bin/pkill -f bleh3 
    kill -9 $(pidof bleh2) 
    rm -rf logs 
    ;; 

이 스크립트는 런타임에 세 개의 프로세스를 시작 않지만, 어떤 이유로 나는 실제로 시작을 사용할 수 없습니다/stop 명령, sudo /etc/init.d bleh.sh stop과 같습니다.

더 큰 문제는 그 명령을 사용하여이 패키지를 제거 : sudo는 때 dpkg -r bleh

실제로 세 가지 프로세스를 중지하지 않습니다, 그것은 단지 내 선택 하 폴더에 설치된 bleh 디렉토리를 제거하려고합니다. 또한 제거되지 않는 내 bleh 디렉토리 내에 폴더가 있습니다. bleh 제거 중 ... dpkg : 경고 : bleh를 제거하는 동안 '/ opt/bleh/logs'디렉토리가 비어 있지 않으므로 제거되지 않았습니다.

SU 권한이 없으면 해당 logs 디렉토리의 파일은 읽기 전용이지만 해당 dpkg -r 명령에서 sudo를 호출 할 때 어떻게 문제가되는지는 알 수 없습니다.

다시 sudo dpkg -r bleh를 실행하면 bleh와 일치하는 설치된 패키지가 없음을 의미합니다. 즉, 해당 로그 디렉토리와 실행중인 세 프로세스가있는 경우에도 설치된 패키지를 성공적으로 제거했다고 생각됩니다.

죄송합니다. 길었지만 실제로 도움이 될 수 있습니다. 미리 감사드립니다!

+2

dpkg 패키지는 어떻게 만들었습니까? tar.gz를 사용 하시겠습니까? 파일을 제거하기 전에 프로세스를 중지하려면 dpkg에서 uninstall 스크립트를 조정해야합니다. – Satish

+0

제거 스크립트는 어디에 있습니까? 나는 이것이 결국 열쇠가 될 것이라고 생각합니다. – user1553248

+0

체크 아웃 http://stackoverflow.com/questions/9311627/dpkg-how-to-ignore-error-in-post-pre-scripts – Satish

답변

2

데비안 새로운 유지 관리자 가이드의 recommended으로 dh_installinit (debhelper로 전체 패키지 빌드하기)를 사용하십시오. 기본적으로 패키지 설치 및 제거시 시작 및 중지 할 스크립트가 추가됩니다.

보조 파일 (예 : 구성)은 일반적으로 purge (예 : dpkg -P) 상태에서 제거됩니다. 이 문제를 직접 처리하려면 deconfigure 스크립트가 필요합니다.

& 대신 start-stop-daemon을 사용하는 것이 매우 바람직하며, 이는 적절한 데몬을 만들기에 충분하지 않습니다.

관련 문제