Как я могу получить список всех репозиториев и PPA из командной строки в сценарий установки?

Хотя вопрос уже был дан ответ, инструмент iwconfig отображает ESSID подключенной в настоящее время сети Wi-Fi. Возможно, он не работает с соединениями, управляемыми через NetworkManager, но он работает с интерфейсами, управляемыми через ifup / ifdown:

iwconfig | grep wlan0

:

wlan0     IEEE 802.11bgn  ESSID:"ahoi"
1
задан 27 April 2018 в 04:45

10 ответов

Вы можете показать все с помощью:

grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*
70
ответ дан 25 May 2018 в 10:23
  • 1
    Как насчет egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/* для удаления строк и пустых строк? – user 10 June 2012 в 18:22
  • 2
    Как насчет egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/* для удаления строк и пустых строк? – user 10 June 2012 в 18:22
  • 3
    Как насчет egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/* для удаления строк и пустых строк? – user 10 June 2012 в 18:22
  • 4
    Как насчет egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/* для удаления строк и пустых строк? – user 10 June 2012 в 18:22
  • 5
    Как насчет egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/* для удаления строк и пустых строк? – user 10 June 2012 в 18:22
  • 6
    Как насчет egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/* для удаления строк и пустых строк? – user 10 June 2012 в 18:22
  • 7
    не могли бы вы объяснить использование ^ после grep в grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*? – user 10 June 2012 в 18:25
  • 8
    не могли бы вы объяснить использование ^ после grep в grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*? – user 10 June 2012 в 18:25
  • 9
    не могли бы вы объяснить использование ^ после grep в grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*? – user 10 June 2012 в 18:25
  • 10
    не могли бы вы объяснить использование ^ после grep в grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*? – user 10 June 2012 в 18:25
  • 11
    не могли бы вы объяснить использование ^ после grep в grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*? – user 10 June 2012 в 18:25
  • 12
    не могли бы вы объяснить использование ^ после grep в grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*? – user 10 June 2012 в 18:25
  • 13
    @ vasa1 Карт ^ и знак доллара $ являются метасимволами, которые соответственно соответствуют пустой строке в начале и конце строки. – wojox 11 June 2012 в 19:22
  • 14
    Я использую grep ^ [^ #] ... - Он автоматически скрывает все закомментированные источники – Ross Aiken 31 October 2013 в 04:36
  • 15
    Если вы не собираетесь фильтровать что-либо, не проще ли просто запустить cat /etc/apt/sources.list /etc/apt/sources.list.d/* – jbo5112 25 November 2013 в 22:28

Я удивлен, что самый простой, но наиболее эффективный способ получить все включенные двоичные источники программного обеспечения вместе с указанным им файлом еще не опубликован:

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
[ ! d8]

Если вы хотите получить более красивый вывод, давайте проведем его через 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
12
ответ дан 25 May 2018 в 10:23
  • 1
    Принимая принятый ответ, кажется, что OP хотел, чтобы PPA отображались в форме ppa:<user>/<project>. – muru 4 March 2016 в 13:02
  • 2
    Вопрос на самом деле просит создать скрипт, который устанавливает / разрешает все репозитории. Но вопрос заключается только в их перечислении. Кроме того, 2-й самый высокий набранный ответ перечисляет их также, но он перечисляет слишком много. – Byte Commander 4 March 2016 в 13:11
  • 3
    Приятно, но я уже поддержал. : D – muru 4 March 2016 в 13:44

Я использую эту команду, чтобы перечислить все настроенные источники программного обеспечения (репозитории), в том числе в настоящее время отключенные:

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, чтобы вы могли получать только текущие источники программного обеспечения.

4
ответ дан 25 May 2018 в 10:23
  • 1
    Thx для обратной связи. cat перечисляет файлы так, как они есть, поэтому мне нужно будет вручную отредактировать его на сгенерировать сценарий (как указано в вопросе). Проблема с репозиториями: если вы просто скопируете файлы из / etc / apt, вы не получите ключи хранилища. Вот почему я хочу, чтобы скрипт, который их забирал для нас – stwissel 12 June 2012 в 16:29

Выполните следующую команду:

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

Источник

3
ответ дан 25 May 2018 в 10:23

https://repogen.simplylinux.ch/ предоставит вам список всех PPA для вашей версии Ubuntu. Вот сгенерированный список без исходных файлов и без принтера samsung 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
ответ дан 25 May 2018 в 10:23

Чтобы добавить строки 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 ( for APT in $( find /etc/apt/ -name \*.list ) do 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 done ) | sort | uniq | tee -a ~/bin/restore_repositories
1
ответ дан 25 May 2018 в 10:23

Итак, сделав некоторое копание, у нас есть AptPkg::Class.

Таким образом, используя perl, мы можем сделать что-то простое.

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

Это дает нам список всех пакетов AptPkg::Class::PkgFile. Вы могли бы сгенерировать команды apt-add-repository с этим.

1
ответ дан 25 May 2018 в 10:23

Вот мой сценарий «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 для неинтерактивного использования (см. ).

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
ответ дан 25 May 2018 в 10:23

Спасибо, BobDodds! Если кому-то будет интересно, я немного обновил ваш код (надеюсь, вы не против). Этот скрипт выберет только пользовательские PPA (/etc/apt/sources.list.d).

[ f1]
0
ответ дан 25 May 2018 в 10:23
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).

0
ответ дан 25 May 2018 в 10:23

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

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