如何从命令行获取所有存储库和PPA的列表,并将其放入安装脚本中?

我知道如何列出我系统上安装的所有软件包。
但是,我如何在一个新的机器上运行一个脚本来获取所有存储库和PPA的列表,以复制存储库设置,包括密钥?
我知道可以查看/etc/apt/sources.list和/etc/apt/sources.list.d,但我正在寻找一种方法来生成一个脚本,在新系统上执行所有apt-add-repository命令(解决获取所有密钥的问题)。
有什么想法吗?
16个回答

你可以用以下方式展示一切:
grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*

39egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/*这个命令是用来删除被注释掉和空行的内容。 - user25656
6请问一下,在grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*中,grep后面的^是什么意思? - user25656
4@vasa1 插入符号^和美元符号$是元字符,分别用于匹配行的开头和结尾处的空字符串。 - wojox
wojox, @vasa1:谢谢你们的贡献。这帮助我更清楚地解决了问题。 - stwissel
11我使用 grep ^[^#] ... -- 它自动隐藏所有被注释掉的源代码。 - Ross Aiken
26如果你不打算过滤任何内容,直接运行cat /etc/apt/sources.list /etc/apt/sources.list.d/*会更简单一些吧。 - jbo5112
也许你想使用正则表达式 ^[^#] - Zelphir Kaltstahl
1这行代码是做什么的? - Hossein
6使用grep ^而不是cat真的很令人困惑。 - Konrad Rudolph
1使用命令“grep "^deb" /etc/apt/sources.list /etc/apt/sources.list.d/*”可以给我提供更简短的信息。 - jo_

感谢你的指点。经过一些整理,我得到了一个列出PPA的脚本,但没有其他仓库: listppas脚本:
#! /bin/sh 

# listppas Script to get all the PPAs 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

当你使用listppas > installppas.sh命令时,你会得到一个installppas.sh脚本,你可以将其复制到新的机器上以重新安装所有的PPA。
下一步:对其他仓库也执行相同操作:
最终的listppas脚本:
#! /bin/sh

# Script to get all the PPAs which are 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

这应该可以解决问题。在源机器上使用它作为 listppas > installppas.sh,然后在目标机器上运行 installppas.sh 的内容。

我需要一个关于superuser的问题来找出正确的正则表达式。


1在你的grep -o示例中,[a-z0-9\-]中的\\``并不是你期望的那样工作。它实际上匹配了一个字面上的*反斜杠*。当-位于[]列表的开头或结尾时,你不需要对其进行*转义*;实际上,你无法*转义*它!在这种情况下,\``(可能)不会引起问题,因为你(希望)不会在deb条目中遇到反斜杠 - Peter.O
2请注意,PPA名称可能包含点号,所以我认为您想将正则表达式更改为http://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+ - kynan
2不,你想要将正则表达式改为[[:graph:]]而不是[a-z...blah.anything],因为这样可以匹配任何字母数字字符和标点符号 - 这就是PPA名称的组成部分。 - MichalH
我想你应该在每个仓库行的开头包含“deb”这个词,如果没有以“ppa:$USER/$PPA”的形式给出的话。 - jarno
@stwissel 你为什么要使用find和grep呢?你可以很容易地使用shell解析的通配符,并将其传递给grep。grep -Po "(?<=^deb\s).*?(?=#|$)" /etc/apt/{sources.list,sources.list.d/*.list} | while read ENTRY ; do echo $ENTRY; done请注意,按照当前的写法,这会显示每个条目来自的文件名,所以你需要从结果的开头到第一个冒号进行修剪,但使用cut命令并不难。如果你不想为相同源的多个条目保留多个条目(例如,如果你安装了Google Chrome Stable/Beta/Dev),你可能还想通过uniq进行处理。 - dragon788
@dragon788 谢谢指点。我主要使用find,因为那是我所了解的;-)。非常欢迎您添加一个完整的脚本答案,这样访问此帖子的人就有多种选择。 - stwissel
使用apt-cache policy命令;下面有一个示例回答,说明了如何使用,并且应该被标记为最佳答案。这将显示apt实际上正在使用的内容以及优先级。 - kiko
@kiko:你提到的答案生成了一个列表,而不是一个所要求的脚本。 - stwissel
使用installppa.sh后,我所有的PPA都变成了未经授权的状态,不得不手动添加它们以获取其密钥。 - Kyo Kazuto

我很惊讶最简单但最有效的方法,将所有已启用的二进制软件源与它们所指定的文件一起获取,竟然还没有被发布出来。
grep -r --include '*.list' '^deb ' /etc/apt/sources.list /etc/apt/sources.list.d/

从所有处理过的文件中,这将打印以deb开头的每一行。这不包括被注释的行,也不包括启用源代码存储库的deb-src行。
它实际上只搜索将由apt解析的所有*.list文件,但不搜索用于备份或具有非法名称的其他*.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根据被接受的答案来看,似乎楼主希望在“ppa:<用户>/<项目>”的形式中显示PPA。 - muru
1实际上,这个问题要求生成一个安装/启用所有存储库的脚本。但是问题标题只是关于列出它们。而且第二高分答案也只是列出它们,但列出了太多。 - Byte Commander
很好,但我已经点赞了。 :D - muru
1你可以使用 -h 选项来在 grep 中省略文件名。 - jarno

运行以下命令:
apt-cache policy | grep http | awk '{print $2" "$3}' | sort -u

来源


1在生物机械中,这将打印出诸如'http://mirrors.nic.funet.fi/ubuntubionic-security/main'的行。 - jarno
4注意:apt-cache policy只会在你运行apt-get update之后显示仓库信息。如果你刚刚使用add-apt-repository添加了一个仓库,它不会在运行apt-cache policy之前出现,直到你运行apt-get update - wisbucky
根据 @wisbucky 的说法:sudo apt update > /dev/null 2>&1 && sudo apt-cache policy | grep http | awk '{print $2 $3}' | sort -u 运行良好。
https://gist.github.com/bmatthewshea/229da822f1f02157bff192a2e4a8ffd1
- B. Shea
1apt-cache policy | grep http | awk '{print $2 " " $3}' 的意思是镜像和套件之间有一个空格,例如 http://au.archive.ubuntu.com/ubuntu impish/main - Adam Baxter

这是我的脚本,"list-apt-repositories",它列出了"/etc/sources.list"和"/etc/sources.list.d/*.list"中的所有存储库。您可以添加--ppa-only以仅显示PPA。PPA会自动转换为ppa:USER/REPO格式。
相关部分是list_sourceslist_ppa函数中的5行代码,其余部分只是用来将其包装成一个方便的shell脚本的样板代码。

list-apt-repositories

#!/bin/sh

usage () {
  cat >&2 <<USAGE
$0 [--ppa-only]

Options:
  --ppa-only            only list PPAs
USAGE
  exit $1
}

list_sources () {
  grep -hE '^deb\s' /etc/apt/sources.list /etc/apt/sources.list.d/*.list |\
    sed '/ppa/ s/deb //g' |\
    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命令,其余部分都是模板代码。

如果更改与安装脚本冲突,请告诉我。在使用add-apt-repository添加使用[arch=amd64]的存储库时需要deb,例如Google。这样,deb将包含所有非ppa存储库。 - mchid

使用software-properties-common中的add-apt-repository命令非常简单:
add-apt-repository --list

输出可以轻松地提供给add-apt-repository命令,以重新创建源。
然而,它只列出了deb源。如果您还对ppa感兴趣,那么这个问题的其他答案将更有用。
可用性
看起来--list选项仅在software-properties-common版本0.99.0+之后才可用,默认情况下从Ubuntu 20.10(Groovy)开始提供。因此,您需要更新软件的版本或者至少升级到20.10版本的发行版。

2在Ubuntu 20.04上没有--list这个选项。 - user545149
1@s.ouchene 我使用的是21.10版本的Impish,所以这个选项可能是最近添加的。 - smac89
1你可能需要在帖子中添加你的Ubuntu版本。 - user545149
@s.ouchene 完成 - smac89

我使用这个命令列出所有配置的软件源(仓库),包括当前禁用的
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,这样你只会得到当前已启用的软件源。

谢谢反馈。Cat会按照文件的原样列出它们,所以我需要手动编辑它来生成脚本(如问题中所述)。仓库的挑战在于:如果你只是从/ etc / apt复制文件,你不会得到仓库密钥。这就是为什么我想要一个可以为我们获取它们的脚本的原因。 - stwissel

所以,经过一些挖掘,我们有了 AptPkg::Class

因此,使用 perl 我们可以做一些简单的事情,比如这样...

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

这将为我们提供所有AptPkg::Class::PkgFile软件包的列表。你可以使用它来生成apt-add-repository命令。

这是一个简短的句子:
find /etc/apt/sources.list* -type f -iname "*.list" -exec grep -viE '(^#|^$)' {} \; -print | column -tx
deb                                 http://archive.ubuntu.com/ubuntu    bionic            main        restricted
deb                                 http://archive.ubuntu.com/ubuntu    bionic-updates    main        restricted
deb                                 http://archive.ubuntu.com/ubuntu    bionic            universe
deb                                 http://archive.ubuntu.com/ubuntu    bionic-updates    universe
deb                                 http://archive.ubuntu.com/ubuntu    bionic            multiverse
deb                                 http://archive.ubuntu.com/ubuntu    bionic-updates    multiverse
deb                                 http://archive.ubuntu.com/ubuntu    bionic-backports  main        restricted  universe  multiverse
deb                                 http://security.ubuntu.com/ubuntu   bionic-security   main        restricted
deb                                 http://security.ubuntu.com/ubuntu   bionic-security   universe
deb                                 http://security.ubuntu.com/ubuntu   bionic-security   multiverse
/etc/apt/sources.list
deb                                 https://nginx.org/packages/ubuntu/  bionic            nginx
deb-src                             https://nginx.org/packages/ubuntu/  bionic            nginx
/etc/apt/sources.list.d/nginx.list

这不会输出一个shell脚本 - 请参考问题。 - stwissel

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