Что касается сломанных пакетов, попробуйте установить тот же пакет с aptitude. он будет сдаваться менее легко и попытается найти решения, которые могут включать изменение других пакетов. Вы также можете получить список удерживаемых пакетов с dpkg --get-selections | grep hold, что может показать вам проблему.
В противном случае, возможно, попробуйте установить openjdk и jre:
Выполнение функции apt-cache search jdk или apt-cache search jre перечисляет множество пакетов, которые могут вас заинтересовать. Для установки открытых JDK и JRE вы должны использовать sudo apt-get install openjdk-7-jdk openjdk-7-jre-headless, вы можете заменить 7 на 6 или 8, если вы предпочитаете openjdk 6 или 8
EDIT: Исправлена команда apt-get, спасибо @lesslazy
Вы можете выполнить это, используя команду whoami, которая возвращает текущего пользователя:
#!/bin/bash
if [ `whoami` != 'root' ]
then
echo "You must be root to do this."
exit
fi
...
Запуск выше будет печатать You must be root to do this., если текущий пользователь не root. [ ! d1]
Примечание: альтернативой в некоторых случаях является просто проверка переменной $USER:
if [ $USER != 'root' ]
Этот фрагмент будет:
Проверять разные сеансы, предлагая использовать sudo !! и возвращать ошибку if [ "$(whoami &2>/dev/null)" != "root" ] && [ "$(id -un &2>/dev/null)" != "root" ] then echo "You must be root to run this script!" echo "use 'sudo !!'" exit 1 fi Один простой способ заставить скрипт запускать только root: запустить скрипт с помощью строки: #! / bin / su root
Этот фрагмент будет:
sudo !!
, если ["$ (whoami & 2> / dev / null)"! = "root"] && ["$ (id -un & 2> / dev / null)"! = "root"] then echo "Вы должны быть root для запуска этого скрипта!" echo "use 'sudo !!'" exit 1 fi
Принимая во внимание эффективность, вы можете сначала проверить переменную среды EUID
, а затем, если она не существует, вызовите стандартную команду id
:
if (($ {EUID: -0} || "$ (id -u)")); затем эхо Вы не root. else echo Hello, root. fi
Таким образом, из-за OR shortcut вы избегаете вызова системной команды, предварительно задавая запрос переменной в памяти.
Повторное использование кода:
функция amIRoot () {! (($ {EUID: -0} || "$ (id -u)"))}
Вы можете выполнить это, используя команду whoami
, которая возвращает текущего пользователя:
#! / bin / bash, если [`whoami`! = ' root '] then echo «Вы должны быть root, чтобы сделать это». exit fi ...
Выполнение вышеуказанного будет напечатано Для этого вы должны быть root.
, если текущий пользователь не является root
.
Примечание: альтернативой в некоторых случаях является просто проверить переменную $ USER
:
, если [$ USER! = 'root']
Пользователь root не должен называться «root». whoami
возвращает первое имя пользователя с идентификатором пользователя 0
. $ USER
содержит имя зарегистрированного пользователя, который может иметь идентификатор пользователя 0
, но имеет другое имя.
Единственная надежная программа для проверьте, зарегистрирована ли учетная запись как root, или нет:
id -u
Я использую -u
для эффективный идентификатор пользователя, а не -r
для идентификатора пользователя real . Разрешения определены эффективным [ пользователем , а не real .
/ etc / passwd
содержит следующие имена пользователей с идентификатором пользователя 0
в данном порядке:
rootx root2
Записан как root2
, дает следующие результаты:
whoami
: rootx
echo $ USER
: root2
(это возвращает пустую строку, если программа была запущена в пустой среде, например env -i sh -c 'echo $ USER'
) id -u
: 0
Как вы можете видеть, другие программы не смогли выполнить эту проверку, только id -u
. Обновленный скрипт будет выглядеть так:
#! / bin / bash if! [$ (id -u) = 0]; затем эхо «Я не корень!» выход 1 fi
#! / bin / bash uid = `id -u` if [" $ uid "==" 0 "] then echo 1 else echo 0 fi
Этот ответ - просто сохранить идею, которая может быть полезна для некоторых из вас. Если вам нужен скрипт, который запускается из графического интерфейса рабочего стола и требует прав root, попробуйте этот способ:
#! / Bin / bash if! [$ (id -u) = 0]; затем gksudo -w $ 0 $ @ exit fi #here идут команды суперпользователя, например. (переключить процессор Intel в режим энергосбережения): echo 1 & gt; / sys / devices / system / cpu / intel_pstate / no_turbo cpupower frequency-set -g powersave
Таким образом вы получите красивое диалоговое окно с запросом пароля пользователя root.
gksudo
может быть недоступен в вашей системе, а затем установить его с помощью sudo apt-get install gksu
. [ ! d5]
Этот фрагмент будет:
sudo !!
, если ["$ (whoami & 2> / dev / null)"! = "root"] && ["$ (id -un & 2> / dev / null)"! = "root"] then echo "Вы должны быть root для запуска этого скрипта!" echo "use 'sudo !!'" exit 1 fi
Принимая во внимание эффективность, вы можете сначала проверить переменную среды EUID
, а затем, если она не существует, вызовите стандартную команду id
:
if (($ {EUID: -0} || "$ (id -u)")); затем эхо Вы не root. else echo Hello, root. fi
Таким образом, из-за OR shortcut вы избегаете вызова системной команды, предварительно задавая запрос переменной в памяти.
Повторное использование кода:
функция amIRoot () {! (($ {EUID: -0} || "$ (id -u)"))}
Вы можете выполнить это, используя команду whoami
, которая возвращает текущего пользователя:
#! / bin / bash, если [`whoami`! = ' root '] then echo «Вы должны быть root, чтобы сделать это». exit fi ...
Выполнение вышеуказанного будет напечатано Для этого вы должны быть root.
, если текущий пользователь не является root
.
Примечание: альтернативой в некоторых случаях является просто проверить переменную $ USER
:
, если [$ USER! = 'root']
Пользователь root не должен называться «root». whoami
возвращает первое имя пользователя с идентификатором пользователя 0
. $ USER
содержит имя зарегистрированного пользователя, который может иметь идентификатор пользователя 0
, но имеет другое имя.
Единственная надежная программа для проверьте, зарегистрирована ли учетная запись как root, или нет:
id -u
Я использую -u
для эффективный идентификатор пользователя, а не -r
для идентификатора пользователя real . Разрешения определены эффективным [ пользователем , а не real .
/ etc / passwd
содержит следующие имена пользователей с идентификатором пользователя 0
в данном порядке:
rootx root2
Записан как root2
, дает следующие результаты:
whoami
: rootx
echo $ USER
: root2
(это возвращает пустую строку, если программа была запущена в пустой среде, например env -i sh -c 'echo $ USER'
) id -u
: 0
Как вы можете видеть, другие программы не смогли выполнить эту проверку, только id -u
. Обновленный скрипт будет выглядеть так:
#! / bin / bash if! [$ (id -u) = 0]; затем эхо «Я не корень!» выход 1 fi
Один простой способ заставить скрипт запускать только root: запустить скрипт с помощью строки: #! / bin / su root
#! / bin / bash uid = `id -u` if [" $ uid "==" 0 "] then echo 1 else echo 0 fi
Этот ответ - просто сохранить идею, которая может быть полезна для некоторых из вас. Если вам нужен скрипт, который запускается из графического интерфейса рабочего стола и требует прав root, попробуйте этот способ:
#! / Bin / bash if! [$ (id -u) = 0]; затем gksudo -w $ 0 $ @ exit fi #here идут команды суперпользователя, например. (переключить процессор Intel в режим энергосбережения): echo 1 & gt; / sys / devices / system / cpu / intel_pstate / no_turbo cpupower frequency-set -g powersave
Таким образом вы получите красивое диалоговое окно с запросом пароля пользователя root.
gksudo
может быть недоступен в вашей системе, а затем установить его с помощью sudo apt-get install gksu
. [ ! d5]
Принимая во внимание эффективность, вы можете сначала проверить переменную среды EUID
, а затем, если она не существует, вызовите стандартную команду id
:
if (($ {EUID: -0} || "$ (id -u)")); затем эхо Вы не root. else echo Hello, root. fi
Таким образом, из-за OR shortcut вы избегаете вызова системной команды, предварительно задавая запрос переменной в памяти.
Повторное использование кода:
функция amIRoot () {! (($ {EUID: -0} || "$ (id -u)"))}
Вы можете выполнить это, используя команду whoami
, которая возвращает текущего пользователя:
#! / bin / bash, если [`whoami`! = ' root '] then echo «Вы должны быть root, чтобы сделать это». exit fi ...
Выполнение вышеуказанного будет напечатано Для этого вы должны быть root.
, если текущий пользователь не является root
.
Примечание: альтернативой в некоторых случаях является просто проверить переменную $ USER
:
, если [$ USER! = 'root']
Этот фрагмент будет:
sudo !!
, если ["$ (whoami & 2> / dev / null)"! = "root"] && ["$ (id -un & 2> / dev / null)"! = "root"] then echo "Вы должны быть root для запуска этого скрипта!" echo "use 'sudo !!'" exit 1 fi
Пользователь root не должен называться «root». whoami
возвращает первое имя пользователя с идентификатором пользователя 0
. $ USER
содержит имя зарегистрированного пользователя, который может иметь идентификатор пользователя 0
, но имеет другое имя.
Единственная надежная программа для проверьте, зарегистрирована ли учетная запись как root, или нет:
id -u
Я использую -u
для эффективный идентификатор пользователя, а не -r
для идентификатора пользователя real . Разрешения определены эффективным [ пользователем , а не real .
/ etc / passwd
содержит следующие имена пользователей с идентификатором пользователя 0
в данном порядке:
rootx root2
Записан как root2
, дает следующие результаты:
whoami
: rootx
echo $ USER
: root2
(это возвращает пустую строку, если программа была запущена в пустой среде, например env -i sh -c 'echo $ USER'
) id -u
: 0
Как вы можете видеть, другие программы не смогли выполнить эту проверку, только id -u
. Обновленный скрипт будет выглядеть так:
#! / bin / bash if! [$ (id -u) = 0]; затем эхо «Я не корень!» выход 1 fi
Один простой способ заставить скрипт запускать только root: запустить скрипт с помощью строки: #! / bin / su root
#! / bin / bash uid = `id -u` if [" $ uid "==" 0 "] then echo 1 else echo 0 fi
Этот ответ - просто сохранить идею, которая может быть полезна для некоторых из вас. Если вам нужен скрипт, который запускается из графического интерфейса рабочего стола и требует прав root, попробуйте этот способ:
#! / Bin / bash if! [$ (id -u) = 0]; затем gksudo -w $ 0 $ @ exit fi #here идут команды суперпользователя, например. (переключить процессор Intel в режим энергосбережения): echo 1 & gt; / sys / devices / system / cpu / intel_pstate / no_turbo cpupower frequency-set -g powersave
Таким образом вы получите красивое диалоговое окно с запросом пароля пользователя root.
gksudo
может быть недоступен в вашей системе, а затем установить его с помощью sudo apt-get install gksu
. [ ! d5]
Принимая во внимание эффективность, вы можете сначала проверить переменную среды EUID
, а затем, если она не существует, вызовите стандартную команду id
:
if (($ {EUID: -0} || "$ (id -u)")); затем эхо Вы не root. else echo Hello, root. fi
Таким образом, из-за OR shortcut вы избегаете вызова системной команды, предварительно задавая запрос переменной в памяти.
Повторное использование кода:
функция amIRoot () {! (($ {EUID: -0} || "$ (id -u)"))}
Вы можете выполнить это, используя команду whoami
, которая возвращает текущего пользователя:
#! / bin / bash, если [`whoami`! = ' root '] then echo «Вы должны быть root, чтобы сделать это». exit fi ...
Выполнение вышеуказанного будет напечатано Для этого вы должны быть root.
, если текущий пользователь не является root
.
Примечание: альтернативой в некоторых случаях является просто проверить переменную $ USER
:
, если [$ USER! = 'root']
Этот фрагмент будет:
sudo !!
, если ["$ (whoami & 2> / dev / null)"! = "root"] && ["$ (id -un & 2> / dev / null)"! = "root"] then echo "Вы должны быть root для запуска этого скрипта!" echo "use 'sudo !!'" exit 1 fi