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?

Ktenney
fonte
1
Veja askubuntu.com/questions/148932/…
Mawg diz que restabelece Monica

Respostas:

174

Parece que o mais próximo é:

apt-cache policy
Ktenney
fonte
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.

Valentia
fonte
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
radri
fonte
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.

starbeamrainbowlabs
fonte
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