Как я могу добавить текст в /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 65

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 (суперпользователь)

сначала откройте или создайте файл, который вы хотите отредактировать его с помощью следующей команды

1-sudo nano file_name

2 - редактировать файл после его открытия

3-ctrl+x

4 - нажмите "Y", чтобы сказать "да"

и вы сделали.