Como obter uma lista de repositórios que o apt-get está verificando? [fechadas]


133

Quero uma lista de repositórios em sources.list, mais os de sources.list.d /.

Posso obter essa lista em um formulário adequado para configurar outro host para que ele assista aos mesmos repositórios?

Além disso, como determino qual repositório é a origem de um pacote, instalado ou disponível?


Respostas:


174

Parece que o mais próximo é:

apt-cache policy

3
Alguém melhorou a saída (resumindo URLs etc.) e deseja compartilhar seu comando aqui?
lony

49

AFAIK, você não pode solicitar ao apt quais são suas fontes atuais, no entanto, você pode fazer o que quiser usando ferramentas de shell.

Obtendo uma lista de repositórios:

grep -h ^deb /etc/apt/sources.list /etc/apt/sources.list.d/* >> current.repos.list

Aplicando a lista:

apt-add-repository << current.repos.list

Em relação à obtenção de repositório de um pacote (instalado ou disponível), isso fará o truque

apt-cache policy package_name |grep -m1 http| awk '{ print $2 " " $3 }'

No entanto, isso mostrará o repositório da versão mais recente disponível para esse pacote. Você pode ter mais repositórios para o mesmo pacote com versões mais antigas. Remova todo o material grep / awk se quiser ver a lista completa.


9
lista completa simplesapt-cache policy |grep http |awk '{print $2 $3}' |sort -u
shadowbq 02/04

falta um espaçoapt-cache policy |grep http |awk '{print $2 " " $3}' |sort -u
shadowbq 5/09/19

Na linha de comando com grep: /etc/apt/sources.list.d/*deve ser alterado para /etc/apt/sources.list.d/*.list. Quanto ao motivo, consulte askubuntu.com/questions/82825/…
Erik Sjölund

18

Tente o seguinte:

cat /etc/apt/sources.list

26
Isso não vai incluir os repos de /etc/apt/sources.list.d/, ou seja, aqueles resultantes de # apt-add-repositório XXX
ktenney

3
grep -Erh ^deb /etc/apt/sources.list*deve fazer o truque.
David

1
grep -Erh '^deb ' /etc/apt/sources.list*para excluir as deb-srclinhas.
David

8

É não um formato adequado para copiar cegamente para outra máquina, mas os usuários que desejam descobrir se eles adicionaram um repositório ainda ou não (como eu fiz), você pode simplesmente fazer:

sudo apt update

Quando aptestá atualizando, gera uma lista de repositórios que busca. Parece óbvio, mas eu acabei de perceber quais GETsão os URLs que ele cospe.

Edit: A seguinte awkexpressão com base pode ser usada para gerar um sources.list:

 cat /tmp/apt-update.txt | awk '/http/ { gsub("/", " ", $3); gsub("^\s\*$", "main", $3); printf("deb "); if($4 ~ "^[a-z0-9]$") printf("[arch=" $4 "] "); print($2 " " $3) }' | sort | uniq

Como alternativa, como outras respostas sugerem, você pode apenas cattodas as fontes pré-existentes como esta:

cat /etc/apt/sources.list /etc/apt/sources.list.d/*

Como os repositórios desabilitados são comentados com hash, isso deve funcionar conforme o esperado.


Por que o voto negativo? Pelo menos deixar um comentário para que eu possa melhorar minha resposta .......
starbeamrainbowlabs

Voto negativo (por enquanto) com comentário: Por favor, mostre-nos como capturar essa saída e convertê-la na resposta à pergunta, ou seja, sempre que o fizermos apt update, como filtramos essa saída / texto para extrair as informações relevantes para essa pergunta?
dardisco

2
Bastante aperfeiçoado! +1 para uso awkna filtragem.
Dardisco 8/05/19

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.