Подтвердить что ты не робот

Как добавить текст в /etc/apt/sources.list из командной строки?

Я новичок в Linux и только начинаю изучать bash. Я использую Ubuntu 9.04 и хотел бы добавить репозитории в /etc/apt/sources.list из командной строки. В принципе, я хотел бы сделать это:

sudo echo "[some repository]" >> /etc/apt/sources.list

Однако, даже когда я использую sudo, я получаю эту ошибку:

bash: /etc/apt/sources.list: Permission denied

Как избежать этой ошибки?

4b9b3361

Ответ 1

В Karmic вы можете просто использовать команду add-apt-repository, по крайней мере для PPA.

Например:

sudo add-apt-repository ppa:docky

Ответ 2

echo "[some repository]" | sudo tee -a /etc/apt/sources.list

Команда tee вызывается как суперпользователь через sudo, а аргумент -a указывает tee добавить к файлу, а не переписывать его.

Ваша исходная команда не удалась, так как перенаправление IO с → будет выполняться как обычный пользователь, только ваше эхо было выполнено с помощью sudo.

Вызов sudo subshell, как

sudo sh -c 'echo "[some repository]" >> /etc/apt/sources.list'

работает также, как указано другими.

Ответ 3

Перед запуском команд сама оболочка обрабатывает " > ", "<", " → " и т.д. Поэтому проблема заключается в том, что "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/file:)

Ответ 4

Лучше использовать отдельный файл в /etc/apt/sources.list.d, как описано в этом другом ответе.

Обратите внимание, что имя файла ДОЛЖНО заканчиваться в .list или оно будет проигнорировано.

Ответ 5

Один из способов решения этой проблемы - выполнить перенаправление в подоболочке:

sudo sh -c 'echo "[some repository]" >> /etc/apt/sources.list'

Таким образом, процесс sh выполняется под sudo и поэтому имеет необходимые привилегии для открытия перенаправленного вывода на /etc/apt/sources.list.

Ответ 6

Следующие работы для меня

sudo echo "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen" | sudo tee -a /etc/apt/sources.list.d/10gen.list

Ответ 7

Если вы должны войти в систему как su (если у вас есть привилегия), то такая же команда будет работать нормально...

su
echo "[some repository]" >> /etc/apt/sources.list

Если вы не суперпользователь, тогда отправляйтесь с Лотаром.

Если вы сделаете это так, не забудьте выйти из su, чтобы вы не запускали ненужные программы как root (суперпользователь)

Ответ 8

Вот решение без использования трубопроводов, простое редактирование на месте:

sudo ex +'$put = \"[some repository]\"' -cwq /etc/apt/sources.list

ex эквивалентен vi -e.

Ответ 9

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

1- sudo nano file_name

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

3- ctrl + x

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

и все готово.