Я предлагаю использовать класс 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();
}
В Karmic вы можете просто использовать команду add-apt-repository
, по крайней мере, для PPA.
Например:
sudo add-apt-repository ppa:docky
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'
тоже работает, как указывали другие.
Один из способов решить эту проблему - выполнить перенаправление в подоболочке:
sudo sh -c 'echo "[some repository]" >> /etc/apt/sources.list'
Таким образом, процесс sh
выполняется под sudo
и поэтому имеет необходимые привилегии для открытия перенаправленного вывода в /etc/apt/sources.list
.
Оболочка обрабатывает ">", "<", ">>" и т. Д. Перед запуском команд. Итак, проблема в том, что "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 :)
Лучше использовать отдельный файл в /etc/apt/sources.list.d
, как объясняется в этом другом ответе .
Обратите внимание, что имя файла ДОЛЖНО заканчиваться на .list, иначе оно будет проигнорировано.