Как я могу (деактивировать) PPA из командной строки с помощью одной команды?

Чтобы свести к минимуму окна в Ubuntu, используйте Alt + F9. Это просто изучает что-то новое.

1
задан 13 April 2017 в 15:23

3 ответа

Информация ppa фактически сохраняется в отдельных файлах в /etc/apt/sources.list. Вот код, который сделает желаемое действие для деактивации или активации желаемого репо. Сохраните приведенный ниже код в файле, скажем mod-ppa

#!/bin/bash
mydir=/etc/apt/sources.list.d
function getlist(){
    echo -e "\n\tchose one of the following lists"
    echo -e "\t================================"
    for itm in `seq 1 $1`
    do
        echo -e "\t`echo $2 | awk -v x=$itm '{print $x}' | awk -F/ '{print $NF}'`"
    done
}

if [ $# -lt 1 ]
then
    echo "E: mod_ppa: missing operand"
    echo "Try 'mod_ppa --help' for more information."
    exit 0
elif [ $# -lt 2 ]
then
    echo -e "E: syntax error,\nTry 'mod_ppa --help' for more information."
    exit 0
fi

case "$1" in
    -d )
        ppa=`ls $mydir/$2*.list`
        num=`echo $ppa | wc -w`
        if [ `echo $num` -gt 1 ]
        then
            getlist "$num" "$ppa"
        else
            if [ -e $mydir/$2*.list ]
            then
                sed -i "s/^deb\-src/\#deb\-src/" $ppa
                sed -i "s/^deb\ http/\#deb\ http/" $ppa
            else
                echo "E: ppa does not exist/check ppa name"
            fi
        fi
        ;;
    -a )
        ppa=`ls $mydir/$2*.list`
        num=`echo $ppa | wc -w`
        if [ `echo $num` -gt 1 ]
        then
            getlist "$num" "$ppa"
        else
            if [ -e $mydir/$2*.list ]
            then
                sed -i "s/^\#deb\-src/deb\-src/" $ppa
                sed -i "s/^\#deb\ http/deb\ http/" $ppa
            else
                echo "E: ppa does not exist/check ppa name"
            fi
        fi
        ;;
    --help)
        echo "Usage: mod_ppa [OPTION] [PPA NAME'S INITIAL PART]"
        echo "Mandatory argument options."
        echo "-a       Activate certain ppa"
        echo "-d       Deactivate certain ppa"
        ;;
    * ) 
        echo "mod_ppa: invalid option '$1'"
        echo "Try 'mod_ppa --help' for more information."
        ;;
esac

сохраните сценарий в /home/<username>/bin/, который обычно находится в PATH. Чтобы проверить запись в терминале

echo $PATH

Если нет, добавьте /home/<username>/bin/ в PATH, добавив следующую строку в .bash_profile или .bashrc в зависимости от того, что удобно,

export PATH=$PATH:$HOME/bin
[d3 ] Затем отправьте исходный файл, запишите в терминал

source .bash_profile [or source .bashrc]

Дайте разрешение на выполнение mod_ppa, напишите в терминале

chmod +x mod_ppa

Использование

активировать ppa use

sudo mod_ppa -d <ppa_name's_initial_part>

Например, для деактивации ppa:webupd8team/java используйте

sudo mod_ppa -d webupd8team

Чтобы отключить использование ppa [!d9 ]

sudo mod_ppa -a <ppa_name's_initial_part>

Например, чтобы активировать ppa:synapse-core, используйте

sudo mod_ppa -a synapse-core

help

mod_ppa --help

Я предположил, что вас не будет интересовать деактивация основного и default ppa (s), перечисленные в /etc/apt/sources.list. Во всяком случае, их мало, вы можете деактивировать их вручную, если хотите. Ответ Sushantp606 был весьма полезен.

help

Когда какое-либо ppa-репо деактивируется с помощью Software Center (GUI), оно фактически помещает # в начало всех строк внутри соответствующего файла ppa .list в /etc/apt/sources.list.d/. Обычно большинство файлов .list содержат две строки, начинающиеся с deb http и deb-src, некоторые из них имеют только один. Вышеупомянутый скрипт делает то же самое, используя sed. Сначала он проверяет наличие ppa .list (вход пользователя) или нет. Затем поставьте или удалите # перед строками соответственно.

Поскольку сценарий должен иметь дело с некоторой чувствительной частью ОС, я попытался его закодировать. Сохраняются проверки того, какие аргументы передаются скрипту и соответственно устанавливают некоторые сообщения об ошибках. Также добавлен небольшой help. Эта часть увеличивает длину кода.

7
ответ дан 24 May 2018 в 14:45
  • 1
    Я бы изменил это на "toggle". То есть проверьте наличие # и добавьте его / удалите. – mniess 29 November 2013 в 20:02
  • 2
    это также будет хорошей идеей. – souravc 29 November 2013 в 20:16
  • 3
    В любом случае я бы сказал, что сценарий не нужен для того, что вы не делаете на регулярной основе. Я не вижу необходимости постоянно дезактивировать репозитории снова и снова. Если вы этого не хотите, просто отредактируйте файлы. – mniess 29 November 2013 в 20:57
  • 4
    @mniess Я согласен с вашим мнением. но если у кого-то есть длинный список репозиториев, он может захотеть использовать такой скрипт. Хотя я не знаю, что будет вероятной причиной (деактивировать) некоторые РЕПО постоянно. – souravc 30 November 2013 в 23:01
  • 5
    @guntbert Я попытался объяснить, что делает скрипт. Пожалуйста, не стесняйтесь предлагать, требуется ли какое-либо другое действие для улучшения ответа. – souravc 30 November 2013 в 23:08

Изменяя

/etc/apt/sources.list

файл из командной строки, мы можем добавлять, удалять или временно отключать репозитории программного обеспечения. Просто закомментируйте нежелательное репо через терминал.

Я не могу сделать команду, ее просто идея. сообщите мне, можете ли вы подключить его через команду терминала, например -

Команда для комментариев исходных репозиториев в файле /etc/apt/sources.list:

sudo sed -i 's/^deb\-src/\#deb\-src/' /etc/apt/sources.list

и для un comment it use

sudo sed -i 's/^\#deb\-src/deb\-src/' /etc/apt/sources.list

используйте репозиторий, который вы хотите отключить / закомментировать, а не s/^\#deb\-src/deb\-src/, и перед выполнением каких-либо изменений создайте файл списка источников резервного копирования, как показано ниже -

sudo cp -v /etc/apt/sources.list /etc/apt/sources.list.backup
3
ответ дан 24 May 2018 в 14:45
  • 1
    +1. Спасибо за ваш ответ. Как я уже сказал ниже, я решил изменить сферу действия вопроса, чтобы найти более автоматизированное решение. Но я уверен, /etc/apt/sources.list станет хорошей отправной точкой. – Glutanimate 29 November 2013 в 10:26
  • 2
    Я думаю, что более близкий ответ, который вам нужен, теперь упоминается, просто используйте свое репо, которое вы хотите отключить, а не s / ^ \ # deb \ -src / deb \ -src /, обязательно используйте их с флагом i. «. – Sukupa91 29 November 2013 в 10:28
  • 3
    mmh, похоже, что данные репо PPA фактически сохраняются в отдельных файлах в /etc/apt/sources.list.d. Схема именования выглядит так: $ppa-$release.list. Слэш в $ ppa заменяется тире (например: synapse-core/ppa - & gt; synapse-core-ppa). – Glutanimate 29 November 2013 в 10:40
  • 4
    Если вы чувствуете, как это, конечно. В основном я размещал это для будущей справки, если кто-то хочет принять его и создать сценарий. Но я уверен, что кто-то должен был столкнуться с этой проблемой раньше (контролируя PPA из CLI), и я не удивлюсь, если бы там было решение. Это просто вопрос поиска. – Glutanimate 29 November 2013 в 11:07
  • 5
    положите чистый ответ и получите +1 от меня. – Avinash Raj 29 November 2013 в 12:31

Посмотрите, как отключить определенный PPA ?. Хотя первый ответ qeoh использует интерфейс GTK, второй ответ minimec предлагает комментировать ppa в /etc/apt/sources.list. Я не уверен, что это то, что вы ищете, но это возможный метод.

2
ответ дан 24 May 2018 в 14:45
  • 1
    +1. Спасибо, это, безусловно, правильный ответ на мой вопрос, но я решил изменить свой первоначальный охват, и теперь я пытаюсь найти более автоматизированный способ управления состоянием PPA из CLI. Я уверен, что ваш ответ станет отличной отправной точкой. – Glutanimate 29 November 2013 в 10:24

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

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