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

Я предлагаю использовать класс ControlPanelFiller:

class ControlPanelFiller {
    private final ... controlPanel;
    private int row = 0;
    public ControlPanelFiller(... controlPanel) {
        this.controlPanel = controlPanel;
    }
    public ControlPanelFiller initSessionControls() {
        ...
        ++row;
        return this;
    }
    public ControlPanelFiller initBidControls() {
        ...
        ++row;
        return this;
    }
    public ControlPanelFiller initSnapshotControls() {
        ...
        ++row;
        return this;
    }
}

private void createControlPanel()
{
    ControlPanelFiller cpf = new ControlPannelFiller(controlPanelGB);
    cpf.initSessionControls()
        .initBidControls()
        .initSnapshotControls();
}
73
задан Matthew 12 May 2009 в 01:13
поделиться

5 ответов

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

Например:

sudo add-apt-repository ppa:docky
1
ответ дан 24 November 2019 в 12:16
поделиться
echo "[some repository]" | sudo tee -a /etc/apt/sources.list

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

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

Вызов подоболочки sudo, например

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

тоже работает, как указывали другие.

137
ответ дан 24 November 2019 в 12:16
поделиться

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

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

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

3
ответ дан 24 November 2019 в 12:16
поделиться

Оболочка обрабатывает ">", "<", ">>" и т. Д. Перед запуском команд. Итак, проблема в том, что "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 :)

9
ответ дан 24 November 2019 в 12:16
поделиться

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

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

8
ответ дан 24 November 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: