Как программно проверить, находится ли источник в sources.list?

Как для 10.04 LTS, так и для 12.04 LTS, есть ли способ проверить, находится ли источник в /etc/apt/sources.list из скрипта bash, кроме использования grep?

1
задан 22 May 2012 в 23:12

2 ответа

apt-cache policy показывает все доступные источники. Пример вывода (обрезанный):

Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://ppa.launchpad.net/lekensteyn/wacom-tablet/ubuntu/ precise/main i386 Packages
     release v=12.04,o=LP-PPA-lekensteyn-wacom-tablet,a=precise,n=precise,l=Wacom Tablet Drivers,c=main
     origin ppa.launchpad.net
 500 http://ppa.launchpad.net/lekensteyn/wacom-tablet/ubuntu/ precise/main amd64 Packages
     release v=12.04,o=LP-PPA-lekensteyn-wacom-tablet,a=precise,n=precise,l=Wacom Tablet Drivers,c=main
     origin ppa.launchpad.net
 500 http://ppa.launchpad.net/bumblebee/testing/ubuntu/ precise/main i386 Packages
     release v=12.04,o=LP-PPA-bumblebee-testing,a=precise,n=precise,l=Bumblebee Developer releases,c=main
     origin ppa.launchpad.net
 500 http://ppa.launchpad.net/bumblebee/testing/ubuntu/ precise/main amd64 Packages
     release v=12.04,o=LP-PPA-bumblebee-testing,a=precise,n=precise,l=Bumblebee Developer releases,c=main
     origin ppa.launchpad.net
 500 http://archive.canonical.com/ubuntu/ precise/partner i386 Packages
     release v=12.04,o=Canonical,a=precise,n=precise,l=Partner archive,c=partner
     origin archive.canonical.com
...
 500 http://nl.archive.ubuntu.com/ubuntu/ precise/main Translation-nl
 500 http://nl.archive.ubuntu.com/ubuntu/ precise/main Translation-en
 500 http://nl.archive.ubuntu.com/ubuntu/ precise/multiverse i386 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=multiverse
     origin nl.archive.ubuntu.com
 500 http://nl.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=universe
     origin nl.archive.ubuntu.com
 500 http://nl.archive.ubuntu.com/ubuntu/ precise/restricted i386 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=restricted
     origin nl.archive.ubuntu.com
 500 http://nl.archive.ubuntu.com/ubuntu/ precise/main i386 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=main
     origin nl.archive.ubuntu.com
 500 http://nl.archive.ubuntu.com/ubuntu/ precise/multiverse amd64 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=multiverse
     origin nl.archive.ubuntu.com
 500 http://nl.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=universe
     origin nl.archive.ubuntu.com
 500 http://nl.archive.ubuntu.com/ubuntu/ precise/restricted amd64 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=restricted
     origin nl.archive.ubuntu.com
 500 http://nl.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=main
     origin nl.archive.ubuntu.com
Pinned packages

Использование awk для получения фактического источника (URL или файла):

$ apt-cache policy | awk '/^ *[0-9]/{print $2 " " $3}'
/var/lib/dpkg/status 
http://ppa.launchpad.net/lekensteyn/wacom-tablet/ubuntu/ precise/main
http://ppa.launchpad.net/lekensteyn/wacom-tablet/ubuntu/ precise/main
http://ppa.launchpad.net/bumblebee/testing/ubuntu/ precise/main
http://ppa.launchpad.net/bumblebee/testing/ubuntu/ precise/main
...
http://nl.archive.ubuntu.com/ubuntu/ precise/universe
http://nl.archive.ubuntu.com/ubuntu/ precise/restricted
http://nl.archive.ubuntu.com/ubuntu/ precise/main
0
ответ дан 22 May 2012 в 23:12

Я закончил, используя grep, чтобы проверить sources.list, а также проверил в sources.list.d наличие foo.list.

Хотя это и не такое чистое решение, как я надеялся, оно делает работу достаточно хорошо для того, что мне нужно.

0
ответ дан 22 May 2012 в 23:12

Другие вопросы по тегам:

Похожие вопросы: