Bagaimana saya bisa mendapatkan daftar semua repositori dan PPA dari baris perintah ke skrip instalasi?

217

Saya tahu cara mendaftar semua paket yang diinstal pada sistem saya.

Tapi bagaimana saya bisa mendapatkan daftar semua repositori dan PPA ke dalam skrip yang bisa saya jalankan di mesin baru untuk mereplikasi pengaturan repositori termasuk kunci?

Saya tahu saya bisa melihat ke dalam /etc/apt/sources.listdan /etc/apt/sources.list.d, tapi saya sedang mencari cara untuk menghasilkan skrip yang mengeksekusi semua apt-add-repositoryperintah pada sistem baru (yang semacam mendapatkan semua kunci).

Ada ide?

stwissel
sumber

Jawaban:

106

Anda dapat menunjukkan semuanya dengan:

grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*
wojox
sumber
13
Bagaimana egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/*dengan menghapus baris yang dikomentari dan baris kosong?
3
bisa tolong jelaskan penggunaan ^after grepin grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*?
4
@ vasa1 Karet ^ dan tanda dolar $ adalah metakarakter yang masing-masing cocok dengan string kosong di awal dan akhir baris.
wojox
4
Saya menggunakan grep ^ [^ #] ... - Menyembunyikan semua sumber komentar secara otomatis
Ross Aiken
13
Jika Anda tidak akan menyaring apa pun, bukankah lebih mudah untuk menjalankannya sajacat /etc/apt/sources.list /etc/apt/sources.list.d/*
jbo5112
99

Terima kasih untuk petunjuknya. Dengan sedikit pembersihan, saya mendapatkan skrip yang berisi daftar PPA, tetapi tidak dengan repositori lain:

#! /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

Ketika Anda menyebutnya dengan listppa > installppa.shAnda mendapatkan skrip, Anda dapat menyalin pada mesin baru untuk menginstal ulang semua PPA.

Perhentian berikutnya: lakukan itu untuk repositori lain:

#! /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

Ini harus melakukan trik. Saya membutuhkan pertanyaan tentang superuser untuk mengetahui regex yang benar.

stwissel
sumber
1
Dalam grep -ocontoh Anda , \` in [a-z0-9\-]tidak melakukan apa yang Anda harapkan. Ini sebenarnya cocok dengan garis miring terbalik literal . Anda tidak perlu melarikan diri yang -ketika itu pada awal atau akhir dari []daftar; sebenarnya, Anda tidak dapat menghindarinya ! .. Dalam hal ini \`(mungkin) tidak akan menyebabkan masalah, karena Anda (mudah-mudahan) tidak akan mengalami backslash di debentri.
Peter.O
2
Perhatikan bahwa nama-nama PPA mungkin mengandung titik-titik, jadi saya pikir Anda ingin mengubah regexp Anda menjadihttp://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+
kynan
Tidak, Anda ingin mengubah regex menjadi [[:graph:]] alih-alih [a-z...blah.anything]karena itu akan cocok dengan karakter tanda baca + alfanumerik apa pun - yaitu nama-nama PPA.
MichalH
Saya kira Anda harus memasukkan debkata di awal setiap baris repositori, jika tidak diberikan dalam ppa:$USER/$PPAbentuk.
jarno
@stwissel ada alasan khusus yang Anda gunakan temukan dan kemudian grep? Anda dapat dengan mudah melakukan gumpalan yang diurai shell dan meneruskannya ke grep. grep -Po "(?<=^deb\s).*?(?=#|$)" /etc/apt/{sources.list,sources.list.d/*.list} | while read ENTRY ; do echo $ENTRY; donePerhatikan bahwa seperti yang ditulis ini menunjukkan kepada Anda nama file dari setiap entri sehingga Anda perlu melakukan trim dari awal hasil ke titik dua pertama, tetapi itu tidak terlalu sulit untuk dipotong. Anda juga mungkin ingin melewatinya uniqjika Anda tidak ingin banyak entri untuk sumber yang sama (misalnya jika Anda menginstal Google Chrome Stable / Beta / Dev).
dragon788
23

Saya terkejut bahwa cara paling sederhana tetapi paling efektif untuk mendapatkan semua sumber perangkat lunak biner yang diaktifkan bersama dengan file yang mereka tentukan belum diposting:

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

Dari semua file yang diproses, ini akan mencetak setiap baris yang dimulai dengan deb. Ini tidak termasuk baris yang dikomentari serta deb-srcbaris untuk mengaktifkan repositori kode sumber.

Ini benar-benar mencari semua *.listfile yang akan diuraikan oleh apt, tetapi mis. Tidak ada *.list.savefile yang digunakan untuk cadangan atau orang lain dengan nama ilegal.


Jika Anda menginginkan yang lebih pendek tetapi mungkin hanya dalam 99,9% dari semua kasus, hasil yang benar dapat mencari terlalu banyak file (termasuk semua /etc/apt/sources.list*file dan direktori, tidak hanya /etc/apt/sources.listdan `/etc/apt/sources.list.d/*), Anda juga bisa Gunakan ini:

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

Kecuali ada file yang seharusnya tidak ada di sana, hasilnya akan sama.


Contoh output pada mesin saya adalah ini:

/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

Jika Anda ingin hasil yang lebih cantik, mari kita lakukan melalui 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/'

Dan kita akan melihat ini:

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
Komandan Byte
sumber
1
Pergi dengan jawaban yang diterima, tampaknya OP ingin AKP yang akan ditampilkan dalam ppa:<user>/<project>bentuk.
muru
Pertanyaan sebenarnya meminta untuk membuat skrip yang menginstal / mengaktifkan semua repositori. Tetapi judul pertanyaan hanya tentang daftar mereka. Juga jawaban tertinggi ke-2 hanya mencantumkannya juga, tetapi terlalu banyak.
Byte Commander
Bagus, tapi saya sudah terbalik. : D
muru
Anda bisa menggunakan opsi `-h` untuk grep untuk tidak menyertakan nama file.
Jarno
11

Jalankan perintah berikut:

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

Sumber

Nikos
sumber
Dalam bionik ini mencetak garis-garis seperti ' mirrors.nic.funet.fi/ubuntubionic-security/main '
jarno
1
Catatan: apt-cache policyhanya akan menampilkan repo setelah Anda menjalankan apt-get update. Jika Anda baru saja menambahkan repo dengan add-apt-repository, repo tidak akan muncul apt-cache policysampai Anda menjalankanapt-get update
wisbucky
Per @wisbucky: sudo apt update > /dev/null 2>&1 && sudo apt-cache policy | grep http | awk '{print $2 $3}' | sort -ubekerja dengan baik. gist.github.com/bmatthewshea/229da822f1f02157bff192a2e4a8ffd1
bshea
4

Saya menggunakan perintah ini untuk mendaftar semua sumber perangkat lunak yang dikonfigurasi (repositori), termasuk yang saat ini dinonaktifkan :

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

Saya menggunakan ini terutama untuk pemecahan masalah; ini tentu dapat dimasukkan ke dalam script tetapi Anda mungkin ingin mempersempit /etc/apt/sources.list.d/*ke /etc/apt/sources.list.d/*.listsumber perangkat lunak sehingga Anda hanya mendapatkan saat ini diaktifkan.

Eliah Kagan
sumber
Terima kasih atas umpan baliknya. cat mencantumkan file apa adanya, jadi saya perlu mengeditnya secara manual untuk menghasilkan skrip (sebagaimana dinyatakan dalam pertanyaan). Tantangan dengan repositori: jika Anda hanya menyalin file dari / etc / apt Anda tidak mendapatkan kunci repositori. Inilah mengapa saya ingin skrip yang mengambilnya untuk kita
stwissel
2

Jadi, melakukan penggalian, kami punya AptPkg::Class.

Jadi menggunakan perlkita bisa melakukan sesuatu yang sederhana seperti ini ..

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

Ini memberi kita daftar semua AptPkg::Class::PkgFilepaket. Anda mungkin dapat menghasilkan apt-add-repositoryperintah dengan itu.

Evan Carroll
sumber
2

https://repogen.simplylinux.ch/ akan memberi Anda daftar semua AKP untuk versi Ubuntu Anda. Berikut adalah daftar yang dibuat tanpa file sumber dan tidak ada printer samsung ppa:

#------------------------------------------------------------------------------#
#                            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
Richard W. Seitz
sumber
2

Berikut ini skrip saya, " list-apt-repositories", yang mencantumkan semua repositori di " /etc/sources.list"dan" /etc/sources.list.d/*.list". Anda dapat menambahkan --ppa-onlyuntuk hanya menampilkan PPA. PPA secara otomatis diubah ke ppa:USER/REPOformat.

Bagian yang relevan adalah 5 baris list_sourcesdan list_ppafungsinya, sisanya hanya boilerplate untuk membungkusnya dengan skrip shell yang berguna.

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

Dan untuk membuat skrip instalasi, pipa ke skrip lain " make-apt-repository-install-script". Script yang dihasilkan mendukung argumen -y/ --yesuntuk penggunaan non-interaktif (lihat 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"

Sekali lagi, bagian yang penting adalah xargsperintah pada baris terakhir, sisanya adalah boilerplate.

ejm
sumber
1

Untuk memilikinya tambahkan baris ppa.launchpad.net sebagai ppa: $ USER / $ PPA. Tambahkan repositori lain dengan baris penuh dari * .list files. Tidak ada garis dupe.

#! / bin / bash
# My ~ / bin / mk_repositories_restore_script
mkdir -p ~ / bin 
x = ~ / bin / restore_repository
echo \ # \! / bin / bash> $ x
chmod u + x $ x
(
 untuk APT dalam $ (temukan / etc / apt / -name \ *. daftar)
    do sed -n -e '/ ^ deb / {
     /ppa\.launchpad/s/\(.*\/\/[^!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! dan : \ 2 / p;
     /ppa\.launchpad/!s / \ (deb [\ t] * \) \ (. * $ \) / sudo apt-add-repository \ 2 / p;
    } '$ APT
 Selesai
) | sortir | uniq | tee -a ~ / bin / restore_reposititor
BobDodds
sumber
0

Terima kasih BobDodds!
Jika ada yang tertarik, saya sedikit memperbarui kode Anda (harap Anda tidak keberatan) ..
Skrip ini hanya akan mengetikkan pengguna yang menambahkan 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
Martin Bortel
sumber
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/*

Itu tidak menghasilkan perintah untuk mengaktifkan repositori sumber yang mungkin (deb-src).

jarno
sumber
-1

Pasang ppa-purge

apt install ppa-purge

Kemudian dapatkan daftar ppa dengan penyelesaian tab ...

ppa-purge -o(tekan Tabtombol dua kali)

Jason Nosaj
sumber
2
Itu agak terbelakang. Bagaimana Anda menyarankan OP mengumpulkan output penyelesaian shell untuk penyimpanan atau pemrosesan? Juga, ppa-purgetidak memiliki -obendera sesuai dengan halaman manualnya . -1
David Foerster