Это хороший способ быть root в make-файле? - PullRequest
2 голосов
/ 20 сентября 2009

Это хороший способ быть пользователем root в make-файле?

SHELL = /bin/sh
INSTDIR = /usr/bin/
OBJS = main.o file.o gen.o stat.o

program1: $(OBJS)
        gcc -o program1 $(OBJS)

main.o: main.c file.h  gen.h stat.h
        gcc -c main.c

file.o: file.c file.h
        gcc -c file.c

gen.o: gen.c gen.h
        gcc -c gen.c

stat.o: stat.c stat.h
        gcc -c stat.c

clean:
        rm -f $(OBJS) program1

install:
        @if [ -f program1 ]; then \
                if [ $$(id -u) -eq 0 ]; then \
                        cp program1 $(INSTDIR) && \
                        echo "Installed in $(INSTDIR)" ; \
                else \
                        (sudo cp program1 $(INSTDIR) 2> /dev/null && \
                        echo "Installed in $(INSTDIR)") || \
                        (echo 'No sudo on this machine, trying su.' \
                        && su -c "cp program1 $(INSTDIR)" && \
                        echo "Installed in $(INSTDIR)") ; \
                fi ; \
        else \
                echo "There was no program to install, run make." ; \
        fi

uninstall:
        @if [ -f $(INSTDIR)program1 ]; then \
                if [ $$(id -u) -eq 0 ]; then \
                        rm $(INSTDIR)program1 && \
                        echo "Uninstalled in $(INSTDIR)" ; \
                else \
                        (sudo rm $(INSTDIR)program1 2> /dev/null && \
                        echo "Uninstalled in $(INSTDIR)") || \
                        (echo 'No sudo on this machine, trying su.' \
                        && su -c "rm $(INSTDIR)program1" && \
                        echo "Uninstalled in $(INSTDIR)") ; \
                fi ; \
        else \
                echo "There was no program to remove." ; \
        fi

1 Ответ

19 голосов
/ 20 сентября 2009

НЕТ!

Во-первых, обычно пользователи делают sudo make install. Во-вторых, вы не задумывались о случаях, когда программа установлена ​​в пользовательский каталог, которому не всегда нужны привилегии root. Инструменты упаковки, например, используют эту функцию и не имеют привилегий root.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...