Як я можу отримати список усіх сховищ та PPA з командного рядка в сценарій встановлення?


217

Я знаю, як перелічити всі пакунки, встановлені в моїй системі.

Але як я можу отримати список усіх сховищ та PPA в сценарій, який я можу запустити на новій машині для копіювання налаштування сховища, включаючи ключі?

Я знаю , що можу дивитися в /etc/apt/sources.listі /etc/apt/sources.list.d, але я шукав спосіб , щоб генерувати скрипт , який виконує всі apt-add-repositoryкоманди на нову систему (то перебирає отримати всі ключі).

Будь-які ідеї?

Відповіді:


106

Ви можете показати все за допомогою:

grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*

13
Що робити egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/*з видаленням коментованих рядків та порожніх рядків?

3
Ви можете, будь ласка, пояснити використання ^після grepв grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*?

4
@ vasa1 Карета ^ та знак долара $ - метахарактеристики, які відповідно відповідають порожній рядку на початку та в кінці рядка.
wojox

4
Я використовую grep ^ [^ #] ... - Він автоматично приховує всі коментовані джерела
Ross Aiken

12
Якщо ви не збираєтеся нічого фільтрувати, чи не було б простіше просто запуститиcat /etc/apt/sources.list /etc/apt/sources.list.d/*
jbo5112

99

Дякую за покажчики Трохи очистившись, я отримав сценарій, у якому перераховані PPA, але не будь-яке інше сховище:

#! /bin/sh 
# listppa Script to get all the PPA installed on a system ready to share for reininstall
for APT in `find /etc/apt/ -name \*.list`; do
    grep -o "^deb http://ppa.launchpad.net/[a-z0-9\-]\+/[a-z0-9\-]\+" $APT | while read ENTRY ; do
        USER=`echo $ENTRY | cut -d/ -f4`
        PPA=`echo $ENTRY | cut -d/ -f5`
        echo sudo apt-add-repository ppa:$USER/$PPA
    done
done

Коли ви телефонуєте з ним, listppa > installppa.shви отримуєте сценарій, який ви можете скопіювати на нову машину, щоб перевстановити всі PPA.

Наступна зупинка: зробіть це для інших сховищ:

#! /bin/sh
# Script to get all the PPA installed on a system
for APT in `find /etc/apt/ -name \*.list`; do
    grep -Po "(?<=^deb\s).*?(?=#|$)" $APT | while read ENTRY ; do
        HOST=`echo $ENTRY | cut -d/ -f3`
        USER=`echo $ENTRY | cut -d/ -f4`
        PPA=`echo $ENTRY | cut -d/ -f5`
        #echo sudo apt-add-repository ppa:$USER/$PPA
        if [ "ppa.launchpad.net" = "$HOST" ]; then
            echo sudo apt-add-repository ppa:$USER/$PPA
        else
            echo sudo apt-add-repository \'${ENTRY}\'
        fi
    done
done

Це повинно зробити трюк. Мені потрібно було питання щодо суперпользователя, щоб з'ясувати правильний вираз.


1
У вашому grep -oприкладі, \` in [a-z0-9\-]не робить те, що ви очікуєте. Це насправді відповідає буквальному зворотному косу . Вам не потрібно уникати того, -коли він знаходиться на початку або в кінці []списку; насправді ви не зможете уникнути цього! .. У цьому випадку \`(ймовірно) це не спричинить проблеми, оскільки ви (сподіваємось) не зустрінете зворотну косу рису в debзаписі.
Пітер.О

2
Зауважте, що назви PPA можуть містити крапки, тому я думаю, що ви хочете змінити свій регулярний вираз наhttp://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+
kynan

Ні, ви хочете змінити регулярний вираз на [[:graph:]] замість того, [a-z...blah.anything]що це буде відповідати будь-яким буквено-цифровим + пунктуаційним символам - ось з чого складаються назви PPA.
MichalH

Я припускаю, що ви повинні включити debслово на початку кожного рядка сховища, якщо це не вказано у ppa:$USER/$PPAформі.
jarno

@stwissel якась конкретна причина, коли ви використовували пошук, а потім греп? Ви можете легко зробити глобус, який оболонка розбирає і передати його в греп. grep -Po "(?<=^deb\s).*?(?=#|$)" /etc/apt/{sources.list,sources.list.d/*.list} | while read ENTRY ; do echo $ENTRY; doneЗауважте, що як написано це, ви показуєте ім'я файлу, з якого походить кожен запис, тому вам потрібно буде зробити обрізку від початку результату до першої двокрапки, але це не так складно з вирізанням. Ви також можете передати його, uniqякщо ви не хочете декількох записів для одного джерела (наприклад, якщо у вас встановлено стабільний / бета-версії Google Chrome).
dragon788

23

Я здивований, що найпростіший, але найефективніший спосіб зібрати всі включені джерела бінарного програмного забезпечення разом з файлом, в якому вони вказані, ще не розміщено:

grep -r --include '*.list' '^deb ' /etc/apt/sources.list /etc/apt/sources.list.d/

З усіх оброблених файлів це буде друкувати кожен рядок, починаючи з deb. Це виключає коментовані рядки, а також deb-srcрядки для включення сховищ вихідного коду.

Він шукає насправді лише всі *.listфайли, які будуть проаналізовані apt, але, наприклад, жодні *.list.saveфайли, які використовуються для резервного копіювання, або інші файли з незаконними іменами.


Якщо ви хочете скоротити, але можливо лише в 99,9% усіх випадків правильного виводу, який може шукати занадто багато файлів (включає всі /etc/apt/sources.list*файли та каталоги, не тільки /etc/apt/sources.listта `/etc/apt/sources.list.d/*), ви також можете використовуй це:

grep -r --include '*.list' '^deb ' /etc/apt/sources.list*

Якщо немає файлів, яких там не повинно бути, вихід буде однаковим.


Приклад виводу на моїй машині:

/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
/etc/apt/sources.list:deb http://archive.canonical.com/ubuntu wily partner
/etc/apt/sources.list.d/maarten-fonville-ubuntu-ppa-wily.list:deb http://ppa.launchpad.net/maarten-fonville/ppa/ubuntu wily main
/etc/apt/sources.list.d/webupd8team-ubuntu-tor-browser-wily.list:deb http://ppa.launchpad.net/webupd8team/tor-browser/ubuntu wily main
/etc/apt/sources.list.d/fossfreedom-ubuntu-indicator-sysmonitor-wily.list:deb http://ppa.launchpad.net/fossfreedom/indicator-sysmonitor/ubuntu wily main
/etc/apt/sources.list.d/getdeb.list:deb http://archive.getdeb.net/ubuntu wily-getdeb apps

Якщо ви хочете кращого результату, давайте переглянемо його sed:

grep -r --include '*.list' '^deb ' /etc/apt/ | sed -re 's/^\/etc\/apt\/sources\.list((\.d\/)?|(:)?)//' -e 's/(.*\.list):/\[\1\] /' -e 's/deb http:\/\/ppa.launchpad.net\/(.*?)\/ubuntu .*/ppa:\1/'

І ми побачимо це:

deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
deb http://archive.canonical.com/ubuntu wily partner
[maarten-fonville-ubuntu-ppa-wily.list] ppa:maarten-fonville/ppa
[webupd8team-ubuntu-tor-browser-wily.list] ppa:webupd8team/tor-browser
[fossfreedom-ubuntu-indicator-sysmonitor-wily.list] ppa:fossfreedom/indicator-sysmonitor
[getdeb.list] deb http://archive.getdeb.net/ubuntu wily-getdeb apps

1
Ідучи за прийнятою відповіддю, схоже, що ОП хотів, щоб PPA показали у ppa:<user>/<project>формі.
муру

Питання насправді задає створення сценарію, який встановлює / дозволяє всі сховища. Але назва питання стосується лише їх перерахування. Крім того, другий найвищий набраний відповідь лише перераховує їх, але в них перераховано дуже багато.
Байт-командир

Добре, але я вже схвалив. : D
muru

Ви можете використовувати опцію `-h` для grep, щоб залишити імена файлів.
jarno

11

Виконайте таку команду:

apt-cache policy | grep http | awk '{print $2 $3}' | sort -u

Джерело


У Bionic цей друкує рядки, такі як " mirrors.nic.funet.fi/ubuntubionic-security/main "
jarno

1
Примітка: apt-cache policyрепост відображатиметься лише після запуску apt-get update. Якщо ви тільки що додали репо з add-apt-repository, воно не з’явиться, apt-cache policyпоки ви не запуститеapt-get update
wisbucky

Per @wisbucky: sudo apt update > /dev/null 2>&1 && sudo apt-cache policy | grep http | awk '{print $2 $3}' | sort -uдобре працює. gist.github.com/bmatthewshea/229da822f1f02157bff192a2e4a8ffd1
bshea

4

Я використовую цю команду для списку всіх налаштованих джерел програмного забезпечення (сховищ), включаючи поточно відключені :

cat /etc/apt/sources.list; for X in /etc/apt/sources.list.d/*; do echo; echo; echo "** $X:"; echo; cat $X; done

Я використовую це в першу чергу для усунення несправностей; це, безумовно, може бути включено до сценаріїв, але ви можете захотіти звузити, /etc/apt/sources.list.d/*щоб /etc/apt/sources.list.d/*.listотримати лише джерела програмного забезпечення, що ввімкнуті на даний момент.


Thx для зворотного зв'язку. cat перераховує файли такими, якими вони є, тому мені потрібно буде вручну відредагувати його для створення сценарію (як зазначено в запитанні). Проблема з сховищами: якщо ви просто копіюєте файли з / etc / apt, ви не отримаєте ключів сховища. Ось чому я хочу, щоб сценарій, який їх отримував для нас,
stwissel

2

Отже, займаємось копанням, ми маємо AptPkg::Class.

Таким чином, використовуючи perlми можемо зробити щось таке, як це ..

perl -MAptPkg::Cache -MData::Dumper -E'say Dumper [AptPkg::Cache->new->files()]' | less

Це дає нам список усіх AptPkg::Class::PkgFileпакетів. Можливо, ви могли з цим генерувати apt-add-repositoryкоманди.


2

https://repogen.simplylinux.ch/ надасть вам список усіх PPA для вашої версії Ubuntu. Ось згенерований список без вихідних файлів і без ПК-принтера Samsung:

#------------------------------------------------------------------------------#
#                            OFFICIAL UBUNTU REPOS                             #
#------------------------------------------------------------------------------#


###### Ubuntu Main Repos
deb http://us.archive.ubuntu.com/ubuntu/ yakkety main restricted universe multiverse 

###### Ubuntu Update Repos
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-security main restricted universe multiverse 
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-updates main restricted universe multiverse 
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-proposed main restricted universe multiverse 
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-backports main restricted universe multiverse 

###### Ubuntu Partner Repo
deb http://archive.canonical.com/ubuntu yakkety partner

#------------------------------------------------------------------------------#
#                           UNOFFICIAL UBUNTU REPOS                            #
#------------------------------------------------------------------------------#


###### 3rd Party Binary Repos

#### Flacon PPA - http://kde-apps.org/content/show.php?content=113388
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F2A61FE5
deb http://ppa.launchpad.net/flacon/ppa/ubuntu yakkety main

#### Gimp PPA - https://launchpad.net/~otto-kesselgulasch/+archive/gimp
## Run this command: sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 614C4B38
deb http://ppa.launchpad.net/otto-kesselgulasch/gimp/ubuntu yakkety main

#### Google Chrome Browser - http://www.google.com/linuxrepositories/
## Run this command: wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | sudo apt-key add -
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main

#### Google Earth - http://www.google.com/linuxrepositories/
## Run this command: wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | sudo apt-key add -
deb [arch=amd64] http://dl.google.com/linux/earth/deb/ stable main

#### Highly Explosive PPA - https://launchpad.net/~dhor/+archive/myway
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93330B78
deb http://ppa.launchpad.net/dhor/myway/ubuntu yakkety main

#### JDownloader PPA - https://launchpad.net/~jd-team
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6A68F637
deb http://ppa.launchpad.net/jd-team/jdownloader/ubuntu yakkety main

#### Lazarus - http://www.lazarus.freepascal.org/
## Run this command:  gpg --keyserver hkp://pgp.mit.edu:11371 --recv-keys 6A11800F  && gpg --export --armor 0F7992B0  | sudo apt-key add -
deb http://www.hu.freepascal.org/lazarus/ lazarus-stable universe

#### LibreOffice PPA - http://www.documentfoundation.org/download/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1378B444
deb http://ppa.launchpad.net/libreoffice/ppa/ubuntu yakkety main

#### MEGA Sync Client - https://mega.co.nz/
deb http://mega.nz/linux/MEGAsync/xUbuntu_16.10/ ./

#### MKVToolnix - http://www.bunkus.org/videotools/mkvtoolnix/
## Run this command: wget -q http://www.bunkus.org/gpg-pub-moritzbunkus.txt -O- | sudo apt-key add -
deb http://www.bunkus.org/ubuntu/yakkety/ ./

#### Mozilla Daily Build Team PPA - http://edge.launchpad.net/~ubuntu-mozilla-daily/+archive/ppa
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys  247510BE
deb http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu yakkety main

#### muCommander - http://www.mucommander.com/
## Run this command: sudo wget -O - http://apt.mucommander.com/apt.key | sudo apt-key add - 
deb http://apt.mucommander.com stable main non-free contrib  

#### Opera - http://www.opera.com/
## Run this command: sudo wget -O - http://deb.opera.com/archive.key | sudo apt-key add -
deb http://deb.opera.com/opera/ stable non-free

#### Oracle Java (JDK) Installer PPA - http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
deb http://ppa.launchpad.net/webupd8team/java/ubuntu yakkety main

#### PlayDeb - http://www.playdeb.net/
## Run this command: wget -O- http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add -
deb http://archive.getdeb.net/ubuntu yakkety-getdeb games

#### SABnzbd PPA - http://sabnzbd.org/
## Run this command:  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4BB9F05F
deb http://ppa.launchpad.net/jcfp/ppa/ubuntu yakkety main

#### SimpleScreenRecorder PPA - http://www.maartenbaert.be/simplescreenrecorder/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 283EC8CD
deb http://ppa.launchpad.net/maarten-baert/simplescreenrecorder/ubuntu yakkety main

#### Steam for Linux - http://store.steampowered.com/about/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F24AEA9FB05498B7
deb [arch=i386] http://repo.steampowered.com/steam/ precise steam

#### Syncthing - https://syncthing.net/
## Run this command: curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
deb http://apt.syncthing.net/ syncthing release

#### Tor: anonymity online - https://www.torproject.org
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 886DDD89
deb http://deb.torproject.org/torproject.org yakkety main

#### Unsettings PPA - http://www.florian-diesch.de/software/unsettings/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0FEB6DD9
deb http://ppa.launchpad.net/diesch/testing/ubuntu yakkety main

#### VirtualBox - http://www.virtualbox.org
## Run this command: wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox_2016.asc -O- | sudo apt-key add -
deb http://download.virtualbox.org/virtualbox/debian yakkety contrib

#### Webmin - http://www.webmin.com
## Run this command: wget http://www.webmin.com/jcameron-key.asc -O- | sudo apt-key add -
deb http://download.webmin.com/download/repository sarge contrib

#### WebUpd8 PPA - http://www.webupd8.org/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4C9D234C
deb http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu yakkety main

#### Xorg Edgers PPA - https://launchpad.net/~xorg-edgers
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8844C542  
deb http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu yakkety main
here is a generated list without source files and no samsung printer ppa
#### Yuuguu - http://yuuguu.com
deb http://update.yuuguu.com/repositories/apt hardy multiverse

2

Ось мій сценарій " list-apt-repositories", який перераховує всі сховища в " /etc/sources.list"і" /etc/sources.list.d/*.list". Ви можете додати, --ppa-onlyщоб показати лише PPA. PPA автоматично трансформуються у ppa:USER/REPOформат.

Відповідні частини - це 5 рядків list_sourcesта list_ppaфункцій, решта - просто котла, щоб загорнути її в зручний сценарій оболонки.

list-apt-repositories:

#!/bin/sh

usage () {
  cat >&2 <<USAGE
$0 [--ppa-only]

Options:
  --ppa-only            only list PPAs
USAGE
  exit $1
}

list_sources () {
  grep -E '^deb\s' /etc/apt/sources.list /etc/apt/sources.list.d/*.list |\
    cut -f2- -d: |\
    cut -f2 -d' ' |\
    sed -re 's#http://ppa\.launchpad\.net/([^/]+)/([^/]+)(.*?)$#ppa:\1/\2#g'
}

list_ppa () {
  list_sources | grep '^ppa:'
}

generate=list_sources

while test -n "$1"
do
  case "$1" in
    -h|--help) usage 1;;
    --ppa-only) generate=list_ppa;;
    *)
      printf -- "Unknown argument '$1'\n" >&2
      usage 2
    ;;
  esac
  shift
done

$generate

І щоб зробити сценарій встановлення, перейдіть в інший " make-apt-repository-install-script" скрипт . Створений скрипт підтримує -y/ --yesаргумент для неінтерактивного використання (див. add-apt-repository(1)).

make-apt-repository-install-script:

#!/bin/sh

if test -n "$1"
then
  cat >&2 <<USAGE
Usage: $0 < PATH_TO_LIST_OF_REPOS
       list-apt-repositories [--ppa-only] | $0

No options recognized.

Reads list of repositories from stdin and generates a script to install them
using \`add-apt-repository(1)\`. The script is printed to stdout.

The generated script supports an optional
\`-y\` or \`--yes\` argument which causes the \`add-apt-repository\` commands
to be run with the \`--yes\` flag.
USAGE
  exit 1
fi

cat <<INSTALL_SCRIPT
#!/bin/sh
y=
case "\$1" in
  -y|--yes) y=\$1;;
  '') y=;;
  *)
    printf '%s\n' "Unknown option '\$1'" "Usage: \$0 [{-y|--yes}]" >&2
    exit 1
  ;;
esac
INSTALL_SCRIPT

xargs -d'\n' printf "add-apt-repository \$y '%s'\n"

Знову ж таки, важливою частиною є xargsкоманда на останньому рядку, решта - котельні.


1

Щоб додати його, додайте рядки ppa.launchpad.net як ppa: $ USER / $ PPA. Додайте інші сховища з повним рядком з файлів * .list. Ніяких дуп-ліній.

#! / бін / баш
# Мій ~ / bin / mk_repositories_restore_script
mkdir -p ~ / bin 
x = ~ / bin / Resto_repositories
echo \ # \! / bin / bash> $ x
chmod u + x $ x
(
 для APT у $ (список / find / etc / apt / -name \ *. list)
    робити sed -n -e '/ ^ deb / {
     /ppa\.launchpad/s/\(.*\/\/ evidence^\/ снимки*.\)\(pted^ \ t] * \) \ (. * $ \) / sudo apt-add-add-repository ppa : \ 2 / р;
     /ppa\.launchpad/!s / \ (deb [\ t] * \) \ (. * $ \) / sudo apt-add-repository \ 2 / p;
    } '$ APT
 зроблено
) | сортувати | uniq | tee -a ~ / bin / Resto_repositories

0

Дякую BobDodds!
Якщо когось буде цікаво, я трохи оновив ваш код (сподіваюся, ви не заперечуєте).
Цей скрипт набере лише додані користувачем PPA (/etc/apt/sources.list.d).

    #!/bin/bash
    # My ~/bin/mk_repositories_restore_script
    mkdir -p ~/bin
    x=~/bin/restore_repositories
    echo \#\!/bin/bash > $x
    chmod u+x $x
    (
    for APT in $( find /etc/apt/ -name \*.list )
    do sed -n -e '/^deb /{
          /ppa\.launchpad/s/\(.*\/\/[^\/]*.\)\([^ \t]*\)\(.*\/ubuntu.*$\)/ppa:\2/p;                                                                                                                                                                                       
        }' $APT
    done
    ) | sort | uniq | tee -a ~/bin/restore_repositories

0
sed -r -e '/^deb /!d' -e 's/^([^#]*).*/\1/' -e 's/deb http:\/\/ppa.launchpad.net\/(.+)\/ubuntu .*/ppa:\1/' -e "s/.*/sudo add-apt-repository '&'/" /etc/apt/sources.list /etc/apt/sources.list.d/*

Це не створює команди для включення можливих джерел сховищ (deb-src).


-1

Встановити ppa-purge

apt install ppa-purge

Потім отримайте список ppa за заповненням вкладки ...

ppa-purge -o(натисніть Tabклавішу двічі)


2
Це якось назад. Як ви пропонуєте ОП зібрати вихідні дані про завершення оболонки для зберігання чи обробки? Крім того, ppa-purgeвін не має -oпрапора відповідно до сторінки його керівництва . -1
Девід Фоерстер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.