Как я могу добавить текст в /etc/apt / sources.список из командной строки?
Я новичок в linux, и только начинаю изучать bash. Я использую Ubuntu 9.04 и хотел бы добавить репозитории в /etc/apt/sources.список из командной строки. В принципе, я хотел бы сделать это:
sudo echo "[some repository]" >> /etc/apt/sources.list
однако, даже когда я использую sudo, я получаю эту ошибку:
bash: /etc/apt/sources.list: Permission denied
Как мне избежать этой ошибки?
9 ответов:
echo "[some repository]" | sudo tee -a /etc/apt/sources.list
The тройник команда вызывается как суперпользователь через судо и - a аргумент говорит tee, чтобы добавить в файл, а не перезаписывать его.
ваша исходная команда не удалась, так как перенаправление ввода-вывода с >> будет сделано, как обычный пользователь, только эхо выполняются с sudo.
вызов sudo subshell как
sudo sh -c 'echo "[some repository]" >> /etc/apt/sources.list'
работает, тоже, как отмечали другие.
процессы оболочки">", ">" сам etc перед запуском команд. Таким образом, проблема заключается в том, что "sudo >> /etc/foo" пытается открыть /etc/foo для добавления до получения привилегий.
один из способов обойти это-использовать sudo для запуска другой оболочки, чтобы делать то, что вы хотите, например:
sudo sh -c 'echo "[some repository]" >> /etc/apt/sources.list'
или же:
echo "[some repository]" | sudo sh -c 'cat >> /etc/apt/sources.list'
более простой подход может заключаться в использовании sudo для запуска редактора в файле/etc/:)
лучше использовать отдельный файл в
/etc/apt/sources.list.d
Как поясняется в другого ответа.обратите внимание, что имя файла должно заканчиваться на .список или он будет проигнорирован.
один из способов решить эту проблему-сделать перенаправление в подобласти:
sudo sh -c 'echo "[some repository]" >> /etc/apt/sources.list'
таким образом,
sh
процесс выполняется подsudo
и поэтому имеет необходимые привилегии для открытия перенаправленного вывода на/etc/apt/sources.list
.
следующие работы для меня
sudo echo "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen" | sudo tee -a /etc/apt/sources.list.d/10gen.list
в Karmic, вы можете просто использовать
add-apt-repository
команда, по крайней мере для PPAs.например:
sudo add-apt-repository ppa:docky
вот решение без использования трубопроводов, просто простое редактирование на месте:
sudo ex +'$put = \"[some repository]\"' -cwq /etc/apt/sources.list
The
ex
эквивалентноvi -e
.
Если вы должны были войти в систему как su (если у вас есть привилегия), та же команда будет работать просто отлично...
su echo "[some repository]" >> /etc/apt/sources.list
Если вы не суперпользователь, то идите с ответом Лотара.
Если вы делаете это таким образом, не забудьте выйти из su, чтобы вы не запускали ненужные программы как root (суперпользователь)