Как для 10.04 LTS, так и для 12.04 LTS, есть ли способ проверить, находится ли источник в /etc/apt/sources.list из скрипта bash, кроме использования grep?
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
Я закончил, используя grep
, чтобы проверить sources.list
, а также проверил в sources.list.d
наличие foo.list
.
Хотя это и не такое чистое решение, как я надеялся, оно делает работу достаточно хорошо для того, что мне нужно.