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.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 semacam mendapatkan semua kunci).
Ada ide?
command-line
scripts
ppa
repository
add-apt-repository
stwissel
sumber
sumber
egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/*
dengan menghapus baris yang dikomentari dan baris kosong?^
aftergrep
ingrep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*
?cat /etc/apt/sources.list /etc/apt/sources.list.d/*
Terima kasih untuk petunjuknya. Dengan sedikit pembersihan, saya mendapatkan skrip yang berisi daftar PPA, tetapi tidak dengan repositori lain:
Ketika Anda menyebutnya dengan
listppa > installppa.sh
Anda mendapatkan skrip, Anda dapat menyalin pada mesin baru untuk menginstal ulang semua PPA.Perhentian berikutnya: lakukan itu untuk repositori lain:
Ini harus melakukan trik. Saya membutuhkan pertanyaan tentang superuser untuk mengetahui regex yang benar.
sumber
grep -o
contoh 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 dideb
entri.http://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+
[[:graph:]]
alih-alih[a-z...blah.anything]
karena itu akan cocok dengan karakter tanda baca + alfanumerik apa pun - yaitu nama-nama PPA.deb
kata di awal setiap baris repositori, jika tidak diberikan dalamppa:$USER/$PPA
bentuk.grep -Po "(?<=^deb\s).*?(?=#|$)" /etc/apt/{sources.list,sources.list.d/*.list} | while read ENTRY ; do echo $ENTRY; done
Perhatikan 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 melewatinyauniq
jika Anda tidak ingin banyak entri untuk sumber yang sama (misalnya jika Anda menginstal Google Chrome Stable / Beta / Dev).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:
Dari semua file yang diproses, ini akan mencetak setiap baris yang dimulai dengan
deb
. Ini tidak termasuk baris yang dikomentari sertadeb-src
baris untuk mengaktifkan repositori kode sumber.Ini benar-benar mencari semua
*.list
file yang akan diuraikan olehapt
, tetapi mis. Tidak ada*.list.save
file 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.list
dan `/etc/apt/sources.list.d/*), Anda juga bisa Gunakan ini:Kecuali ada file yang seharusnya tidak ada di sana, hasilnya akan sama.
Contoh output pada mesin saya adalah ini:
Jika Anda ingin hasil yang lebih cantik, mari kita lakukan melalui
sed
:Dan kita akan melihat ini:
sumber
ppa:<user>/<project>
bentuk.Jalankan perintah berikut:
Sumber
sumber
apt-cache policy
hanya akan menampilkan repo setelah Anda menjalankanapt-get update
. Jika Anda baru saja menambahkan repo denganadd-apt-repository
, repo tidak akan munculapt-cache policy
sampai Anda menjalankanapt-get update
sudo apt update > /dev/null 2>&1 && sudo apt-cache policy | grep http | awk '{print $2 $3}' | sort -u
bekerja dengan baik. gist.github.com/bmatthewshea/229da822f1f02157bff192a2e4a8ffd1Saya menggunakan perintah ini untuk mendaftar semua sumber perangkat lunak yang dikonfigurasi (repositori), termasuk yang saat ini dinonaktifkan :
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/*.list
sumber perangkat lunak sehingga Anda hanya mendapatkan saat ini diaktifkan.sumber
Jadi, melakukan penggalian, kami punya
AptPkg::Class
.Jadi menggunakan
perl
kita bisa melakukan sesuatu yang sederhana seperti ini ..Ini memberi kita daftar semua
AptPkg::Class::PkgFile
paket. Anda mungkin dapat menghasilkanapt-add-repository
perintah dengan itu.sumber
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:
sumber
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-only
untuk hanya menampilkan PPA. PPA secara otomatis diubah keppa:USER/REPO
format.Bagian yang relevan adalah 5 baris
list_sources
danlist_ppa
fungsinya, sisanya hanya boilerplate untuk membungkusnya dengan skrip shell yang berguna.list-apt-repositories
:Dan untuk membuat skrip instalasi, pipa ke skrip lain "
make-apt-repository-install-script
". Script yang dihasilkan mendukung argumen-y
/--yes
untuk penggunaan non-interaktif (lihatadd-apt-repository(1)
).make-apt-repository-install-script
:Sekali lagi, bagian yang penting adalah
xargs
perintah pada baris terakhir, sisanya adalah boilerplate.sumber
Untuk memilikinya tambahkan baris ppa.launchpad.net sebagai ppa: $ USER / $ PPA. Tambahkan repositori lain dengan baris penuh dari * .list files. Tidak ada garis dupe.
sumber
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).
sumber
Itu tidak menghasilkan perintah untuk mengaktifkan repositori sumber yang mungkin (deb-src).
sumber
Pasang
ppa-purge
Kemudian dapatkan daftar ppa dengan penyelesaian tab ...
ppa-purge -o
(tekan Tabtombol dua kali)sumber
ppa-purge
tidak memiliki-o
bendera sesuai dengan halaman manualnya . -1