Я написал пару сценариев, чтобы помочь пользователям получить свой текущий пакет исходного кода ядра, применить некоторые мои патчи и собрать его как пакет .deb
с make-kpkg
. Одним из немногих шагов, требующих ручного вмешательства, является активация загрузки «Source» с помощью:
Есть ли способ сделать это автоматически через командную строку? Насколько я понимаю, я мог бы просто откомментировать первые несколько строк "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
, для выполнения этого с помощью сценария оболочки?
Спасибо.
В конце я просто включил весь src
repos.
sed -i '/^#\sdeb-src /s/^#//' "/etc/apt/sources.list"
Это не требует обновления ОС к произвольной версии.
У меня была подобная проблема, как Вы имели, и наконец я начал делать следующий сценарий, писать временный файл 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
Я соединил остроту жемчуга, которая не прокомментирует только 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
строки.
Соединив различные части вместе, я придумал легко обратимое решение для включения и отключения загрузки исходных текстов.
Из облака и решение Стефана Гуричона , при этом 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