Сценарий для включения “ source ” загружается детерминированным образом

Я написал несколько сценариев, чтобы помочь пользователям вытащить свой текущий исходный пакет ядра, применить некоторые исправления и создать его как пакет .deb с make-kpkg. Один из немногих шагов, требующих ручного вмешательства, позволяет загружать «Source» с помощью:

«Программный центр Ubuntu» Редактировать ... Источники программного обеспечения ... «Исходный код»

Есть ли способ сделать это автоматически через командную строку? Насколько я понимаю, я мог просто не комментировать первые несколько строк «deb-src» в /etc/apt/sources.list, например:

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://ca.archive.ubuntu.com/ubuntu/ trusty main restricted
deb-src http://ca.archive.ubuntu.com/ubuntu/ trusty main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://ca.archive.ubuntu.com/ubuntu/ trusty-updates main restricted
deb-src http://ca.archive.ubuntu.com/ubuntu/ trusty-updates main restricted

Это несколько подвержено ошибкам, хотя, учитывая sed сценарии, которые я написал, не обязательно работают, если источники не соответствуют порядку по умолчанию или другим причинам. Что еще более важно, я бы хотел, чтобы это работало на Ubuntu 14.04, Ubuntu 16.04 и т. Д. (Т. Е. Как можно более общий).

Существуют ли какие-либо средства командной строки apt для выполнения этого через сценарий оболочки?

Спасибо.

1
задан 7 May 2016 в 17:52

1 ответ

У меня была аналогичная проблема, как и у вас, и, наконец, я начал делать следующий скрипт, чтобы написать временный файл sources.list, а затем снова удалить его:

# making a copy of the users original sources.list file
cp -v /etc/apt/sources.list /etc/apt/sources.list.orig &&

# writing a custom sources.list file
cat > /etc/apt/sources.list << "EOF"
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted
deb http://archive.ubuntu.com/ubuntu/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu/ xenial multiverse main universe restricted
deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates multiverse main universe restricted
deb http://archive.ubuntu.com/ubuntu/ xenial universe
deb http://archive.ubuntu.com/ubuntu/ xenial-updates universe
deb http://archive.ubuntu.com/ubuntu/ xenial multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-updates multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://dearchive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://security.ubuntu.com/ubuntu xenial-security main restricted
deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse main universe restricted
deb http://security.ubuntu.com/ubuntu xenial-security universe
deb http://security.ubuntu.com/ubuntu xenial-security multiverse
EOF

# running an update
apt-get update &&
apt-get -y dist-upgrade &&

# DO YOUR STUFF

# putting back the original sources.list
mv -v /etc/apt/sources.list /etc/apt/sources.list.tmp &&
cp -v /etc/apt/sources.list.orig /etc/apt/sources.list &&

# removing backup files
rm -rfv /etc/apt/sources.list.tmp &&
rm -rfv /etc/apt/sources.list.orig
2
ответ дан 23 May 2018 в 11:20
  • 1
    Что делать, если я не на Xenial, но на Trusty / (Wily, Vivid и т. Д.) Или Precise? – DevNull 8 May 2016 в 06:01
  • 2
    Ну, возьмите исходный файл, удалите строки с # спереди и замените их в моем ответе. – Videonauth 8 May 2016 в 06:02
  • 3
    Я мог бы запустить regex sed / bash достаточно легко, чтобы удалить все ведущие символы #, но должен ли я это сделать? Некоторые из этих источников в файле списка включают источники, которые либо не поддерживаются, либо приводят проблемы лицензирования в битву. Подход, основанный на включении, кажется большим молотком, чтобы бросить на проблему. – DevNull 8 May 2016 в 06:05
  • 4
    Вы знаете о последнем шаге, который у меня есть в моем подходе к сценарию? я удаляю свои временные источники.list и копирую обратно тот, который был у пользователя. – Videonauth 8 May 2016 в 06:08
  • 5
    Да. Вы обновляетесь до последней версии, когда все, что я хочу, это включить репо для источника для последней версии, установленной в настоящее время в системе. – DevNull 8 May 2016 в 06:16

Другие вопросы по тегам:

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