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


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ể nhận được một danh sách của tất cả các kho và PPA vào một kịch bản mà tôi có thể chạy trên một máy mới để tái tạo các thiết lập kho lưu trữ bao gồm cả các phím?

Tôi biết tôi có thể nhìn vào /etc/apt/sources.list và /etc/apt/sources.list.dnhưng tôi đang tìm cách tạo ra một tập lệnh thực hiện tất cả apt-add-repository lệnh trên một hệ thống mới (sắp xếp tất cả các phím).

Bất kỳ ý tưởng?


184
2018-06-10 11:30


gốc


Có thể trùng lặp: askubuntu.com/questions/28644/how-can-i-backup-my-ppas - Glutanimate
Trên thực tế là một superset. Câu hỏi của tôi là về tập lệnh tạo tập lệnh khôi phục chứ không chỉ sao lưu - stwissel


Các câu trả lời:


Cảm ơn các con trỏ. Với một chút dọn dẹp, tôi có một kịch bản liệt kê các PPA, nhưng không phải 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.sh bạn nhận được một kịch bản 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.


89
2018-06-10 13:49



Trong của bạn grep -o ví dụ, \`  trong [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 chữ dấu gạch chéo ngược. Bạn không cần phải bỏ trốn các - khi nó ở đầu hoặc cuối của [] danh sách; thực sự, bạn không thể bỏ trốn nó! .. Trong trường hợp này, \` (có thể) sẽ không gây ra vấn đề, bởi vì bạn (hy vọng) sẽ không gặp phải dấu gạch chéo ngược bên trong deb mục nhập. - Peter.O
Lưu ý rằng tên PPA có thể chứa dấu chấm, vì vậy tôi nghĩ bạn muốn thay đổi regexp của mình thành http://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+ - kynan
Không, bạn muốn thay đổi regex thành [[:graph:]]  thay vì [a-z...blah.anything] bởi vì điều đó sẽ khớp với bất kỳ ký tự dấu chấm câu và chữ số nào - đó là tên PPA bao gồm. - MichalH
Tôi cho rằng bạn nên bao gồm deb từ trong đầu mỗi dòng kho lưu trữ, nếu không được đưa ra ppa:$USER/$PPA hình thức. - jarno
@stwissel bất kỳ lý do cụ thể mà bạn sử dụng tìm và sau đó grep? Bạn có thể dễ dàng thực hiện một glob mà shell phân tích 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; done Lưu ý rằng như được viết này cho bạn thấy tên tập tin mỗi mục nhập đến từ vì vậy bạn sẽ cần phải làm một trim từ đầu của kết quả đến tràng đầu tiên, nhưng đó không phải là quá khó khăn với cắt. Bạn cũng có thể muốn vượt qua nó uniq nếu bạn không muốn 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


Bạn có thể hiển thị mọi thứ bằng:

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

80
2018-06-10 12:52



Thế còn egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/* thế nào để loại bỏ dòng nhận xét ra và dòng trống?
bạn có thể vui lòng giải thích việc sử dụng ^ sau grep trong grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*?
@ vasa1 Dấu mũ ^ và ký hiệu đô la $ là các siêu ký tự tương ứng với chuỗi trống ở đầu và cuối của một dòng. - wojox
Tôi sử dụng grep ^ [^ #] ... - Tự động ẩn tất cả các nguồn đã nhận xét - Ross Aiken
Nếu bạn không lọc ra bất cứ thứ gì, nó sẽ không đơn giản hơn để chạy cat /etc/apt/sources.list /etc/apt/sources.list.d/* - jbo5112


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 bật cùng với tệp mà chúng được chỉ định trong 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ý, thao tác này sẽ in mọi dòng bắt đầu bằng deb. Điều này loại trừ các dòng nhận xét cũng như deb-src dòng để kích hoạt kho mã nguồn.

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


Nếu bạn muốn ngắn hơn nhưng có thể chỉ ở 99,9% của 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.list và `/etc/apt/sources.list.d/*), bạn cũng có thể sử dụng điều này:

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

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


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

/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 đi qua nó 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

14
2018-03-04 08:57



Đ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> hình thức. - muru
Câu hỏi thực sự yêu cầu tạo tập lệnh cài đặt / bật tất cả các kho lưu trữ. Nhưng tiêu đề câu hỏi chỉ là liệt kê chúng. Ngoài ra câu trả lời ghi điểm cao thứ hai chỉ liệt kê chúng là tốt, nhưng nó liệt kê quá nhiều. - Byte Commander
Nice, nhưng tôi đã upvoted. : D - muru


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

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 để khắc phục 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/* đến /etc/apt/sources.list.d/*.list do đó bạn chỉ nhận được các nguồn phần mềm hiện đã được bật.


4
2018-06-12 08:57



Thx cho phản hồi. mèo liệt kê các tệp như chúng, vì vậy tôi cần phải chỉnh sửa nó theo cách thủ công tạo ra một kịch bản (như đã nêu trong câu hỏi). Thách thức với kho lưu trữ: nếu bạn chỉ cần sao chép các tập tin 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 mà lấy chúng cho chúng tôi - stwissel


Chạy lệnh sau:

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

Nguồn


4
2018-06-12 11:43





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

Vì vậy, sử dụng perl chú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 ta một danh sách tất cả AptPkg::Class::PkgFile gói. Bạn có thể tạo ra apt-add-repository lệnh với điều đó.


2
2017-11-14 19:48





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 ppa 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





Đây là kịch bản 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 liên quan là 5 dòng trong list_sources và list_ppa chức năng, phần còn lại chỉ là bản mẫu để bọc nó trong một kịch bản 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à để thực hiện một kịch bản cài đặt, đường ống vào một kịch bản khác "make-apt-repository-install-script"Tập lệnh được tạo hỗ trợ -y/--yes đối số để 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à xargs lệnh trên dòng cuối cùng, phần còn lại là boilerplate.


2
2017-12-04 07:40





Để có thêm 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ó đường kẻ.

#! / bin / bash
# My ~ / bin / mk_repositories_restore_script
mkdir -p ~ / bin
x = ~ / bin / restore_repositories
echo \ # \! / bin / bash> $ x
chmod u + x $ x
(
 cho APT bằng $ (tìm / etc / apt / -name \ *. list)
    làm sed -n -e '/ ^ deb / {
     /ppa\.launchpad/s/\(.*\/\/[^\/]*.\)\ ([^ \ t] * \) \ (. * $ \) / sudo apt-add-repository ppa : \ 2 / p;
     /ppa\.launchpad/!s / \ (deb [\ t] * \) \ (. * $ \) / sudo apt-add-kho \ 2 / p;
    } '$ APT
 làm xong
) | sắp xếp | uniq | tee -a ~ / bin / restore_repositories

1
2018-04-11 22:51





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) ..
Kịch bản này sẽ chỉ loại ra người dùng đã thêm 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
2017-11-15 00:16





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 để cho phép các kho lưu trữ nguồn có thể có (deb-src).


0
2017-11-26 18:37