Làm cách nào tôi có thể nhận danh sách tất cả các kho lưu trữ và PPA từ dòng lệnh thành tập lệnh cài đặt?


217

Tôi biết cách liệt kê tất cả các gói được cài đặt trên hệ thống của tôi.

Nhưng làm thế nào tôi có thể đưa danh sách tất cả các kho lưu trữ và PPA vào một tập lệnh mà tôi có thể chạy trên một máy mới để sao chép thiết lập kho lưu trữ bao gồm các khóa?

Tôi biết tôi có thể xem xét /etc/apt/sources.list/etc/apt/sources.list.d, nhưng tôi đang tìm cách tạo ra một tập lệnh thực thi tất cả apt-add-repositorycác lệnh trên một hệ thống mới (sắp xếp việc nhận tất cả các khóa).

Có ý kiến ​​gì không?

Câu trả lời:


106

Bạn có thể hiển thị mọi thứ với:

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

13
Điều gì về egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/*để loại bỏ các dòng nhận xét ra và dòng trống?

3
bạn có thể vui lòng giải thích việc sử dụng ^sau greptrong grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*?

4
@ vasa1 Dấu mũ ^ và ký hiệu đô la $ là các ký tự tương ứng khớp với chuỗi trống ở đầu và cuối dòng.
wojox

4
Tôi sử dụng grep ^ [^ #] ... - Nó tự động ẩn tất cả các nguồn nhận xét
Ross Aiken

12
Nếu bạn sẽ không lọc bất cứ thứ gì ra, sẽ không đơn giản hơn nếu chỉ chạycat /etc/apt/sources.list /etc/apt/sources.list.d/*
jbo5112

99

Cảm ơn các con trỏ. Với một chút dọn dẹp, tôi đã nhận được một tập lệnh liệt kê các PPA, nhưng không có bất kỳ kho lưu trữ nào khác:

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

Khi bạn gọi nó với listppa > installppa.shbạn nhận được một tập lệnh, bạn có thể sao chép trên một máy mới để cài đặt lại tất cả PPA.

Điểm dừng tiếp theo: làm điều đó cho các kho lưu trữ khác:

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

Cái này cần phải dùng mẹo. Tôi cần một câu hỏi về superuser để tìm ra regex chính xác.


1
Trong grep -oví dụ của bạn , \` in [a-z0-9\-]không làm những gì bạn mong đợi. Nó thực sự phù hợp với một dấu gạch chéo theo nghĩa đen . Bạn không cần phải thoát khỏi sự -khi đó là lúc bắt đầu hoặc cuối []danh sách; thực ra, bạn không thể thoát khỏi nó! .. Trong trường hợp này \`(có lẽ) sẽ không gây ra vấn đề gì, vì bạn (hy vọng) sẽ không gặp phải dấu gạch chéo ngược trong debmục nhập.
Peter.O

2
Lưu ý rằng tên PPA có thể chứa dấu chấm, vì vậy tôi nghĩ rằng bạn muốn thay đổi biểu thức chính quy của mình thànhhttp://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+
kynan

Không, bạn muốn thay đổi regex thành [[:graph:]] thay [a-z...blah.anything]vì vì nó sẽ khớp với bất kỳ ký tự chữ và số + dấu chấm câu nào - đó là những gì mà tên PPA bao gồm.
MichalH

Tôi cho rằng bạn nên bao gồm debtừ ở đầu mỗi dòng kho lưu trữ, nếu không được đưa ra ppa:$USER/$PPAdưới dạng.
jarno

@stwissel bất kỳ lý do cụ thể bạn đã sử dụng tìm và sau đó grep? Bạn có thể dễ dàng thực hiện một quả cầu mà shell phân tích cú pháp và chuyển nó tới grep. grep -Po "(?<=^deb\s).*?(?=#|$)" /etc/apt/{sources.list,sources.list.d/*.list} | while read ENTRY ; do echo $ENTRY; doneLưu ý rằng như được viết, nó hiển thị cho bạn tên tệp mà mỗi mục nhập xuất phát, do đó bạn cần thực hiện cắt từ đầu kết quả đến dấu hai chấm đầu tiên, nhưng điều đó không quá khó với việc cắt. Bạn cũng có thể muốn chuyển qua uniqnếu bạn không muốn có nhiều mục nhập cho cùng một nguồn (ví dụ: nếu bạn đã cài đặt Google Chrome Stable / Beta / Dev).
dragon788 17/07/17

23

Tôi ngạc nhiên rằng cách đơn giản nhất nhưng hiệu quả nhất để có được tất cả các nguồn phần mềm nhị phân được kích hoạt cùng với tệp mà chúng được chỉ định chưa được đăng:

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

Từ tất cả các tệp được xử lý, điều này sẽ in mọi dòng bắt đầu bằng deb. Điều này không bao gồm các dòng nhận xét cũng như deb-srccác dòng để kích hoạt kho lưu trữ mã nguồn.

Nó tìm kiếm thực sự chỉ tất cả *.listcác tệp sẽ được phân tích cú pháp apt, nhưng ví dụ: không có *.list.savetệp nào được sử dụng để sao lưu hoặc các tệp khác có tên bất hợp pháp.


Nếu bạn muốn đầu ra ngắn hơn nhưng có thể chỉ trong 99,9% trong tất cả các trường hợp đầu ra chính xác có thể tìm kiếm quá nhiều tệp (bao gồm tất cả /etc/apt/sources.list*các tệp và thư mục, không chỉ /etc/apt/sources.listvà `/etc/apt/source.list.d/*), bạn cũng có thể dùng cái này:

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

Trừ khi có những tập tin không nên ở đó, đầu ra sẽ giống nhau.


Một ví dụ đầu ra trên máy của tôi sẽ là thế này:

/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

Nếu bạn muốn đầu ra đẹp hơn, hãy đưa nó qua 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/'

Và chúng ta sẽ thấy điều này:

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
Đi theo câu trả lời được chấp nhận, có vẻ như OP muốn PPA được hiển thị trong ppa:<user>/<project>biểu mẫu.
muru

Câu hỏi thực sự yêu cầu tạo ra một kịch bản cài đặt / cho phép tất cả các kho lưu trữ. Nhưng tiêu đề câu hỏi chỉ là về việc liệt kê chúng. Ngoài ra, câu trả lời được ghi điểm cao thứ 2 cũng chỉ liệt kê chúng, nhưng nó liệt kê quá nhiều.
Chỉ huy Byte

Đẹp, nhưng tôi đã được nâng cấp. : D
muru

Bạn có thể sử dụng tùy chọn `-h` cho grep để loại bỏ tên tệp.
jarno

11

Chạy lệnh sau:

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

Nguồn


Trong bionic, dòng này in các dòng như ' mirror.nic.funet.fi/ubuntubionic-security/main '
jarno

1
Lưu ý: apt-cache policysẽ chỉ hiển thị các repos sau khi bạn đã chạy apt-get update. Nếu bạn vừa thêm một repo với add-apt-repository, nó sẽ không hiển thị apt-cache policycho đến khi bạn chạyapt-get update
wvducky

Per @wisbucky: sudo apt update > /dev/null 2>&1 && sudo apt-cache policy | grep http | awk '{print $2 $3}' | sort -uhoạt động tốt. gist.github.com/bmatthewshea/229da822f1f02157bff192a2e4a8ffd1
bshea

4

Tôi sử dụng lệnh này để liệt kê tất cả các nguồn phần mềm được lưu cấu hình (kho lưu trữ), bao gồm cả các nguồn hiện đang bị vô hiệu hóa :

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

Tôi sử dụng chủ yếu để xử lý sự cố; điều này chắc chắn có thể được tích hợp vào các tập lệnh nhưng bạn có thể muốn thu hẹp /etc/apt/sources.list.d/*để /etc/apt/sources.list.d/*.listbạn chỉ nhận được các nguồn phần mềm hiện đang được bật.


Thx cho các phản hồi. cat liệt kê các tập tin như chúng là, vì vậy tôi sẽ cần chỉnh sửa thủ công để tạo tập lệnh (như đã nêu trong câu hỏi). Thách thức với kho lưu trữ: nếu bạn chỉ sao chép các tệp từ / etc / apt, bạn không nhận được các khóa kho. Đây là lý do tại sao tôi muốn một kịch bản tìm nạp chúng cho chúng tôi
stwissel

2

Vì vậy, làm một số đào, chúng tôi có AptPkg::Class.

Vì vậy, sử dụng perlchúng ta có thể làm một cái gì đó đơn giản như thế này ..

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

Điều này cho chúng tôi một danh sách của tất cả các AptPkg::Class::PkgFilegói. Bạn có thể có thể tạo ra các apt-add-repositorylệnh với điều đó.


2

https://repogen.simplylinux.ch/ sẽ cung cấp cho bạn danh sách tất cả các PPA cho phiên bản Ubuntu của bạn. Dưới đây là danh sách được tạo mà không có tệp nguồn và không có máy in 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

2

Đây là tập lệnh của tôi, " list-apt-repositories", liệt kê tất cả các kho lưu trữ trong " /etc/sources.list"và" /etc/sources.list.d/*.list". Bạn có thể thêm --ppa-onlyđể chỉ hiển thị các PPA. PPA được tự động chuyển thành ppa:USER/REPOđịnh dạng.

Các phần có liên quan là 5 dòng trong list_sourcesvà các list_ppachức năng, phần còn lại chỉ là bản tóm tắt để bọc nó trong một tập lệnh shell tiện dụng.

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

Và để tạo tập lệnh cài đặt, chuyển thành tập lệnh khác " make-apt-repository-install-script". Tập lệnh được tạo hỗ trợ -y/ --yesđối số cho việc sử dụng không tương tác (xem 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"

Một lần nữa, phần quan trọng là xargslệnh trên dòng cuối cùng, phần còn lại là soạn sẵn.


1

Để có nó, hãy thêm các dòng ppa.launchpad.net dưới dạng ppa: $ USER / $ PPA. Thêm các kho lưu trữ khác với dòng đầy đủ của chúng từ các tệp * .list. Không có dòng dupe.

#! / bin / bash
# My ~ / bin / mk numpl khu_restore_script
mkdir -p ~ / bin 
x = ~ / bin / khôi phục
tiếng vang \ # \! / bin / bash> $ x
chmod u + x $ x
(
 cho APT bằng $ (danh sách find / etc / apt / -name \ *.)
    làm sed -n -e '/ ^ deb / {
     /ppa\.launchpad/s/\(.*\/\/[ ^ ^ / : \ 2 / p;
     /ppa\.launchpad/!s / \ (deb [\ t] * \) \ (. * $ \) / sudo apt-add-repository \ 2 / p;
    } '$ APT
 làm xong
) | sắp xếp | uniq | tee -a ~ / bin / khôi phục

0

Cảm ơn BobDodds!
Nếu có ai quan tâm, tôi đã cập nhật mã của bạn một chút (hy vọng bạn không phiền) ..
Tập lệnh này sẽ chỉ loại PPA do người dùng thêm (/etc/apt/source.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/*

Điều đó không tạo ra các lệnh để kích hoạt kho lưu trữ nguồn có thể (deb-src).


-1

Tải về ppa-purge

apt install ppa-purge

Sau đó nhận danh sách ppa bằng cách hoàn thành tab ...

ppa-purge -o(nhấn Tabphím hai lần)


2
Điều đó hơi ngược. Làm thế nào để bạn đề nghị OP thu thập đầu ra hoàn thành vỏ để lưu trữ hoặc xử lý? Ngoài ra, ppa-purgekhông có -ocờ theo trang hướng dẫn của nó . -1
David Foerster
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.