Pertanyaan Bagaimana saya bisa mendapatkan daftar semua repositori dan AKP dari baris perintah ke dalam skrip instalasi?


Saya tahu caranya daftar semua paket diinstal pada sistem saya.

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

Saya tahu saya bisa menyelidikinya /etc/apt/sources.list dan /etc/apt/sources.list.d, tapi saya sedang mencari cara untuk menghasilkan skrip yang mengeksekusi semua apt-add-repository perintah pada sistem baru (yang memilah-milah mendapatkan semua kunci).

Ada ide?


184
2018-06-10 11:30


asal


Kemungkinan duplikat: askubuntu.com/questions/28644/how-can-i-backup-my-ppas - Glutanimate
Sebenarnya superset. Pertanyaan saya adalah tentang skrip yang menghasilkan skrip pemulihan, bukan hanya cadangan - stwissel


Jawaban:


Terima kasih atas petunjuknya. Dengan sedikit pembersihan saya mendapat skrip yang berisi daftar AKP, tetapi tidak ada repositori lainnya:

#! /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.sh Anda mendapatkan skrip yang dapat Anda salin pada mesin baru untuk menginstal ulang semua PPA.

Pemberhentian selanjutnya: 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 sebuah pertanyaan tentang superuser untuk mencari regex yang benar.


89
2018-06-10 13:49



Di dalam Anda grep -o contoh, \`  di [a-z0-9\-] tidak melakukan apa yang Anda harapkan. Ini benar-benar cocok secara harfiah backslash. Anda tidak perlu melakukannya melarikan diri itu - saat di awal atau akhir [] daftar; sebenarnya, Anda tidak bisa melarikan diri itu! .. Dalam hal ini \` (mungkin) tidak akan menimbulkan masalah, karena Anda (semoga) tidak akan menemui a backslash dalam deb masuk. - Peter.O
Perhatikan bahwa nama PPA dapat berisi titik-titik, jadi saya pikir Anda ingin mengubah regexp Anda menjadi http://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+ - kynan
Tidak, Anda ingin mengubah regex menjadi [[:graph:]]  dari pada [a-z...blah.anything] karena itu akan cocok dengan karakter alfanumerik + tanda baca apapun - itulah nama PPA. - MichalH
Saya kira Anda harus memasukkannya deb kata di awal setiap baris repositori, jika tidak diberikan dalam ppa:$USER/$PPA bentuk. - jarno
@stwissel alasan tertentu yang Anda gunakan temukan dan kemudian grep? Anda dapat dengan mudah melakukan gumpalan yang dihilangkan oleh cangkang dan memberikannya ke grep. grep -Po "(?<=^deb\s).*?(?=#|$)" /etc/apt/{sources.list,sources.list.d/*.list} | while read ENTRY ; do echo $ENTRY; done Perhatikan bahwa seperti yang tertulis ini menunjukkan Anda nama file setiap entri berasal dari sehingga Anda harus melakukan trim dari awal hasil ke titik dua pertama, tapi itu tidak terlalu sulit dengan memotong. Anda mungkin juga ingin melewatkannya uniq jika Anda tidak ingin banyak entri untuk sumber yang sama (misalnya jika Anda memasang Google Chrome Stabil / Beta / Dev). - dragon788


Anda dapat menampilkan semuanya dengan:

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

80
2018-06-10 12:52



Bagaimana dengan egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/* untuk menghapus garis komentar dan garis kosong?
bisakah Anda menjelaskan penggunaan ^ setelah grep di grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*?
@ vasa1 Tanda sisipan ^ dan tanda dolar $ adalah metakarakter yang masing-masing cocok dengan string kosong di awal dan akhir baris. - wojox
Saya menggunakan grep ^ [^ #] ... - Ini secara otomatis menyembunyikan semua sumber yang dikomentari - Ross Aiken
Jika Anda tidak akan memfilter apa pun, bukankah lebih mudah untuk hanya menjalankan cat /etc/apt/sources.list /etc/apt/sources.list.d/* - jbo5112


Saya terkejut bahwa cara paling sederhana namun paling efektif untuk mendapatkan semua sumber perangkat lunak biner yang diaktifkan bersama dengan file yang ditentukan dalam 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 komentar juga deb-src baris untuk mengaktifkan repositori kode sumber.

Ini hanya mencari semuanya *.list file yang akan diuraikan apt, tetapi mis. tidak *.list.save file yang digunakan untuk cadangan atau yang lain dengan nama ilegal.


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

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

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


Contoh output di 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 menginginkan output yang lebih cantik, mari kita bahas 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

14
2018-03-04 08:57



Pergi dengan jawaban yang diterima, tampaknya OP ingin PPA ditampilkan di ppa:<user>/<project> bentuk. - muru
Pertanyaannya sebenarnya meminta untuk menghasilkan skrip yang menginstal / mengaktifkan semua repositori. Tetapi judul pertanyaan hanya tentang daftar mereka. Juga jawaban tertinggi ke-2 hanya mencantumkan mereka juga, tetapi daftar terlalu banyak. - Byte Commander
Bagus, tapi saya sudah upvoted. : D - muru


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 mengatasi masalah; ini tentu dapat dimasukkan ke dalam skrip tetapi Anda mungkin ingin mempersempit /etc/apt/sources.list.d/* untuk /etc/apt/sources.list.d/*.list sehingga Anda hanya mendapatkan sumber perangkat lunak yang saat ini aktif.


4
2018-06-12 08:57



Terima kasih atas umpan baliknya. kucing daftar file seperti apa adanya, jadi saya perlu mengeditnya secara manual menghasilkan skrip (sebagaimana tercantum dalam pertanyaan). Tantangan dengan repositori: jika Anda hanya menyalin file dari / etc / apt Anda tidak mendapatkan kunci repositori. Inilah mengapa saya menginginkan skrip yang menjemput mereka untuk kami - stwissel


Jalankan perintah berikut:

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

Sumber


4
2018-06-12 11:43





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

Jadi menggunakan perl kita bisa melakukan sesuatu yang sederhana seperti ini ..

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

Ini membuat kami daftar semua AptPkg::Class::PkgFile paket. Anda mungkin bisa menghasilkan apt-add-repository perintah dengan itu.


2
2017-11-14 19:48





https://repogen.simplylinux.ch/ akan memberi Anda daftar semua AKP untuk versi Ubuntu Anda. Berikut ini daftar yang dibuat tanpa file sumber dan tanpa ppa printer 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
2017-11-16 06:28