Скрипт для включения «исходных» загрузок детерминированным способом

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

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

      enter image description here

      Есть ли способ сделать это автоматически через командную строку? Насколько я понимаю, я мог бы просто откомментировать первые несколько строк "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

4 ответа

В конце я просто включил весь src repos.

sed -i '/^#\sdeb-src /s/^#//' "/etc/apt/sources.list"

Это не требует обновления ОС к произвольной версии.

2
ответ дан 8 May 2016 в 03:52
  • 1
    @Randomize Как вопрос и состояние ответа: Это находится по конкретному вопросу, который происходит при обновлении до 17,10 при использовании собственных драйверов. Для этого проблема sepecific это - решение. Для общего черного экрана, диагностирующего, см. ссылку в вопросе. – mniess 2 January 2018 в 23:40

У меня была подобная проблема, как Вы имели, и наконец я начал делать следующий сценарий, писать временный файл 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
ответ дан 8 May 2016 в 03:52
  • 1
    К сожалению, это не рабочее решение для большинства из нас: ( –  30 December 2017 в 06:20

Я соединил остроту жемчуга, которая не прокомментирует только deb-src строки, которым предшествуют непрокомментированным deb строка:

perl -pi.orig -0e 's/^(deb .*\n)# (deb-src)/$1$2/mg' /etc/apt/sources.list

Это также сохранит исходный как /etc/apt/sources.list.orig. (таким образом, можно восстановить его позже, если Вы хотите)

, Это должно работа через выпуски, предполагая, что они продолжают свою привычку к исправлению, прокомментированному deb-src строки после их соответствия deb строки.

0
ответ дан 10 November 2019 в 18:37

Соединив различные части вместе, я придумал легко обратимое решение для включения и отключения загрузки исходных текстов.

Включить источник

Из облака и решение Стефана Гуричона , при этом sed изменен, чтобы игнорировать несовпадающие строки , а вывод перенаправлен с помощью sudo в временный файл в папке sources.list.d / :

sed -e '/^#\sdeb-src /s/^# *//;t;d' "/etc/apt/sources.list" \
| sudo tee /etc/apt/sources.list.d/source-repos-tmp.list > /dev/null

Отключить источник

sudo rm /etc/apt/sources.list.d/source-repos-tmp.list
0
ответ дан 14 January 2020 в 21:30

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

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