Вы могли использовать su
[YourUserName]-c /usr/bin/vncserver
выполнять vncserver как пользователя, не как корень.
Другая точка: В Вашем сценарии нет никакого различия между запуском и остановкой сервера VNC. Обычно, init сценарий использовал бы различные случаи для запущения/останавливания сервиса:
case "$1" in
start)
# code to start the application
;;
stop)
# code to stop the application
;;
restart)
$0 stop
$0 start
;;
esac
Вот разработанный пример, как запустить vnc сервер с помощью init сценария.
Я не думаю, что существует особенно хороший способ полностью проигнорировать его (это возможно с gcc nostdinc
переключатель, но затем необходимо будет добавить-I для всех необходимых путей).
Однако существует простой способ вынудить компилятор выбрать тот, который Вы хотите. Согласно http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html, нормальный порядок включает пути:
/usr/local/include
libdir/gcc/target/version/include
/usr/target/include
/usr/include
По-видимому, это должно позволить, Вы для легкого переопределения системы включаете с локальным пользователем один. Но что превосходит все, что это-I, поэтому если Вы компилируете:
gcc -I/usr/include/sys
Затем это выберет cdefs.h оттуда. Это не устранит/usr/local/include из пути tho, поэтому если будут другие файлы, которые попадают в эту категорию, Вам, возможно, понадобится больше-I's. Они не являются рекурсивными, так например:
gcc -I/usr/include
Не расположит по приоритетам/usr/include/sys, так же, как другая версия не расположит по приоритетам/usr/include. Таким образом, Вам, возможно, понадобилось бы:
gcc -I/usr/include -I/usr/include/sys
Используя make-файл делает эти виды вещей значительно легче, btw. В конечном счете Вы захотите изучить, как сделать это.
Могут быть некоторые другие проблемы, с которыми Вы столкнетесь связанный с тем, что причина того, чтобы копировать этот заголовок, но необходимо будет объяснить это. Эта Ваша система?
Я попытался фиксировать перманент, но я не могу разобраться в нем. Существует ли способ проигнорировать cdefs.h от/usr/local и использовать тот это/usr/include/?
Да, не устанавливайте их в /usr/local/
. Debian ничего никогда не будет устанавливать в /usr/local
, таким образом, если существуют файлы здесь, это - потому что Вы, другие локальные администраторы или плохо серийное программное обеспечение установили эти вещи здесь. Установите их где-либо еще. Но установка заголовков другого libc в/usr/local напрашивается на неприятности.
/usr/local
. Причина Debian (или любой другой дистрибутив) не устанавливает материал, состоит в том, потому что это не то, для чего это - это для стороннего программного обеспечения. Это - лучшая практика для использования /usr/local
для стороннего материала, чем использовать /usr
постараться не перезаписывать материал пакета дистрибутива. Конечно, это может привести к дублированиям, но это лучше, чем то, что заменило системный файл одним от третьей стороны.
– goldilocks
08.12.2012, 16:39
/usr
и /usr/local
не о дублировании, это о конфликтах. Установка libc в /usr/local
ЯВЛЯЕТСЯ Неправильным. Помещенный, что (и все третье лицо) в /opt
.
– BatchyX
08.12.2012, 16:51
/usr/local
, необходимо пребывать к тому, что программное обеспечение должно быть совместимо с существующим программным обеспечением в системе/распределении и любым более поздним обновлением, которое можно установить. Если Вы не можете гарантировать, что (и большую часть времени, не делаете, или Вы не заботитесь), то установка в /usr/local
является неправильным. /usr/local
может быть стандартным, но так /opt
. Установка любого программного обеспечения (включая libcs) в /opt
может быть сделан волей-неволей и может управляться более легко.
– BatchyX
08.12.2012, 20:21
/usr
и /usr/local
является историческим: /usr
часто используемый, чтобы быть сетью смонтировал файловую систему (обычно только для чтения), и /usr/local
место состояло в том, чтобы поместить файлы в масштабе всей системы, которые присутствовали на локальном устройстве хранения данных. /opt
был предназначен для коротковолнового от других поставщиков. Следовательно одни из основных отличий между /usr/local
и /opt
что первое обычно находится в $PATH
и /opt
должен иметь поддеревья на приложение (сегодня, например. /opt/kde3
).
– peterph
09.12.2012, 01:00