명령 행에서 모든 저장소 및 PPA 목록을 설치 스크립트로 가져 오려면 어떻게해야합니까?


217

시스템에 설치된 모든 패키지나열 하는 방법을 알고 있습니다.

그러나 키를 포함한 리포지토리 설정을 복제하기 위해 새 컴퓨터에서 실행할 수있는 스크립트로 모든 리포지토리 및 PPA 목록을 가져올 수 있습니까?

나는 /etc/apt/sources.listand 를 조사 할 수 있다는 것을 알고 /etc/apt/sources.list.d있지만 새로운 시스템에서 모든 명령 을 실행하는 스크립트 를 생성 하는 방법을 찾고 apt-add-repository있습니다 (모든 키를 가져 오기 위해 정렬합니다).

어떤 아이디어?

답변:


106

당신은 모든 것을 보여줄 수 있습니다 :

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

13
egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/*주석 처리 된 행과 빈 행을 제거하는 것은 어떻습니까?

3
당신의 사용을 설명해주십시오 수 ^이후 grep에를 grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*?

4
@ vasa1 캐럿 ^과 달러 기호 $는 줄의 시작과 끝에서 빈 문자열과 각각 일치하는 메타 문자입니다.
wojox

4
grep을 사용합니다 ^ [^ #] ...-모든 주석 처리 된 소스를 자동으로 숨 깁니다
Ross Aiken

12
아무것도 걸러 내지 않으려면 그냥 실행하는 것이 더 간단하지 cat /etc/apt/sources.list /etc/apt/sources.list.d/*
않습니까

99

포인터 주셔서 감사합니다. 약간의 정리로 PPA를 나열하는 스크립트를 얻었지만 다른 저장소는 없습니다.

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

listppa > installppa.sh스크립트 를 호출하면 새 컴퓨터에서 복사하여 모든 PPA를 다시 설치할 수 있습니다.

다음 중지 : 다른 저장소에 대해 수행하십시오.

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

이것은 트릭을해야합니다. 올바른 정규 표현식을 찾으려면 수퍼 유저대한 질문이 필요했습니다 .


1
귀하의 grep -o예에서, \` in [a-z0-9\-]은 당신이 기대하는 것을하지 않습니다. 실제로 리터럴 백 슬래시 와 일치합니다 . 당신은 할 필요가 없습니다 탈출-가 시작이나 끝 부분에있을 때 []목록; 실제로, 당신은 할 수없는 탈출 을! ..이 경우에 \`(아마도) 문제가 발생하지 않습니다, 당신은 (희망)이 발생하지 않기 때문에 백 슬래시 에서 deb항목을.
Peter.O

2
PPA 이름에는 점이 포함될 수 있으므로 정규 표현식을 다음과 같이 바꾸고 싶을 것입니다.http://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+
kynan

아니요, 정규식 [[:graph:]] 대신 [a-z...blah.anything]영숫자 + 문장 부호 문자와 일치하므로 정규 표현식을 변경하려고합니다 . 즉 PPA 이름이 구성됩니다.
MichalH

양식으로 deb제공되지 않으면 각 저장소 줄의 시작 부분에 단어를 포함시켜야한다고 가정합니다 ppa:$USER/$PPA.
jarno

@stwissel 당신이 찾은 다음 grep을 사용한 특별한 이유는 무엇입니까? 쉘이 파싱하는 글롭을 쉽게 잡고 grep에 전달할 수 있습니다. grep -Po "(?<=^deb\s).*?(?=#|$)" /etc/apt/{sources.list,sources.list.d/*.list} | while read ENTRY ; do echo $ENTRY; done작성된 것처럼 각 항목의 파일 이름이 표시되므로 결과의 시작 부분부터 첫 번째 콜론까지 트림을 수행해야하지만 잘라내 기가 너무 어렵지는 않습니다. uniq동일한 소스에 대해 여러 항목을 원하지 않는 경우 (예 : Chrome Stable / Beta / Dev가 설치된 경우) 전달할 수도 있습니다 .
dragon788

23

활성화 된 모든 바이너리 소프트웨어 소스를 지정된 파일과 함께 가져 오는 가장 간단하지만 효과적인 방법이 아직 게시되지 않은 것에 놀랐습니다.

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

처리 된 모든 파일에서로 시작하는 모든 줄이 인쇄됩니다 deb. 주석 처리 된 행과 deb-src소스 코드 리포지토리를 활성화하는 행은 제외됩니다 .

실제로 *.list구문 분석 될 모든 파일 만 검색 apt하지만, *.list.save백업에 사용 된 파일이나 잘못된 이름을 가진 파일은 검색 하지 않습니다 .


더 짧은 파일을 원한다면 모든 경우의 99.9 %에서만 너무 많은 파일을 검색 할 수있는 올바른 출력 (모든 /etc/apt/sources.list*파일 및 디렉토리를 포함 /etc/apt/sources.list하고`/etc/apt/sources.list.d/*)을 원하는 경우 이것을 사용하십시오 :

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

존재하지 않아야하는 파일이 없으면 출력은 동일합니다.


내 컴퓨터의 출력 예는 다음과 같습니다.

/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

더 예쁘게 출력하려면 다음을 통해 연결해 보겠습니다 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/'

그리고 우리는 이것을 볼 것입니다 :

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
받아 들여진 대답에 따라 OP는 PPA가 ppa:<user>/<project>양식에 표시되기를 원한 것 같습니다 .
muru

이 질문은 실제로 모든 리포지토리를 설치 / 활성화하는 스크립트를 생성하도록 요청합니다. 그러나 질문 제목은 목록을 표시하는 것입니다. 또한 두 번째로 높은 점수를받은 답변에는 답변 만 나와 있지만 너무 많이 나와 있습니다.
바이트 사령관

좋았지 만 이미 찬성했습니다. : D
muru

grep에`-h` 옵션을 사용하여 파일 이름을 생략 할 수 있습니다.
jarno

11

다음 명령을 실행하십시오.

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

출처


바이오닉에서 이것은 ' mirrors.nic.funet.fi/ubuntubionic-security/main ' 과 같은 행을 인쇄합니다.
jarno

1
참고 : apt-cache policy실행 한 후에 만 ​​repos가 표시됩니다 apt-get update. 로 repo를 추가 한 경우 다음 을 실행할 때까지 add-apt-repository표시되지 않습니다apt-cache policyapt-get update
wisbucky

@wisbucky 당 : sudo apt update > /dev/null 2>&1 && sudo apt-cache policy | grep http | awk '{print $2 $3}' | sort -u잘 작동합니다. gist.github.com/bmatthewshea/229da822f1f02157bff192a2e4a8ffd1
bshea

4

이 명령을 사용 하여 현재 비활성화 된 것을 포함하여 구성된 모든 소프트웨어 소스 (리포지토리)를 나열 합니다 .

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

나는 주로 문제 해결을 위해 사용합니다. 이것은 확실히 스크립트에 통합 될 수 있지만 현재 사용 가능한 소프트웨어 소스 만 얻도록 범위 /etc/apt/sources.list.d/*를 좁힐 수 /etc/apt/sources.list.d/*.list있습니다.


피드백을위한 Thx. cat은 파일을 그대로 나열하므로 스크립트 를 생성 하기 위해 수동으로 파일을 편집해야합니다 (질문에 나와 있음). 리포지토리의 문제 : / etc / apt에서 파일을 복사하면 리포지토리 키가 없습니다. 이것이 우리를 위해 그것들을 가져 오는 스크립트를 원하는 이유입니다.
Stwissel

2

그래서, 파고 약간 있습니다 AptPkg::Class.

그래서 perl우리는 이렇게 간단한 것을 할 수 있습니다 ..

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

이것은 우리에게 모든 AptPkg::Class::PkgFile패키지 의 목록을 얻습니다 . 아마도 그 apt-add-repository명령을 생성 할 수 있습니다.


2

https://repogen.simplylinux.ch/ 는 귀하의 Ubuntu 버전에 대한 모든 PPA 목록을 제공합니다. 다음은 소스 파일이없고 삼성 프린터 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

여기 list-apt-repositories에 "" /etc/sources.list"와 " /etc/sources.list.d/*.list"의 모든 리포지토리를 나열하는 " " 스크립트가 있습니다 --ppa-only. PPA 만 표시하도록 추가 할 수 있습니다 . PPA는 자동으로 ppa:USER/REPO형식 으로 변환 됩니다.

관련 부분은 5 개의 라인으로 구성되어 list_sources있으며 list_ppa나머지는 편리한 쉘 스크립트로 감싸는 보일러 플레이트입니다.

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

그리고 설치 스크립트를 만들려면 다른 스크립트 " make-apt-repository-install-script" 로 파이프하십시오 . 생성 된 스크립트는 비 대화식 사용을 위해 -y/ --yes인수를 지원합니다 (참조 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"

다시 말하지만, 중요한 부분은 xargs마지막 줄 의 명령이고 나머지는 상용구입니다.


1

ppa.launchpad.net 행을 ppa : $ USER / $ PPA로 추가하십시오. * .list 파일에서 전체 행으로 다른 저장소를 추가하십시오. 듀프 라인이 없습니다.

#! / bin / bash
# My ~ / bin / mk_repositories_restore_script
mkdir -p ~ / bin 
x = ~ / bin / restore_repositories
echo \ # \! / bin / bash> $ x
chmod u + x $ x
(
 APT의 경우 $ (/ etc / apt / -name \ *. list 찾기)
    sed -n -e '/ ^ deb / {
     /ppa\.launchpad/s/\(.*\/\/[^\/]*.\)\([^ \ t] * \) \ (. * $ \) / sudo apt-add-repository ppa : \ 2 / p;
     /ppa\.launchpad/!s / \ (deb [\ t] * \) \ (. * $ \) / sudo apt-add-repository \ 2 / p;
    } '$ APT
 끝난
) | 정렬 | 유니크 | 티 -a ~ / bin / restore_repositories

0

BobDodds 감사합니다!
관심이 있으신 분은 코드를 약간 업데이트했습니다 (걱정하지 마십시오).
이 스크립트는 사용자가 추가 한 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
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/*

그래도 가능한 소스 저장소 (deb-src)를 활성화하는 명령을 생성하지 않습니다.


-1

설치 ppa-purge

apt install ppa-purge

그런 다음 탭 완성으로 ppa 목록을 가져옵니다 ...

ppa-purge -o( Tab키를 두 번 누르십시오)


2
다소 거꾸로입니다. OP가 저장 또는 처리를 위해 쉘 완료 출력을 수집하도록 제안하는 방법은 무엇입니까? 또한 매뉴얼 페이지 에 따라 플래그 ppa-purge가 없습니다 . -1-o
David Foerster
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.