Como o pkg está escolhendo seus repositórios (FreeBSD 10)

1

Estou usando o pfSense, que usa uma base personalizada do FreeBSD. 10. pkg -vv mostra as seguintes definições relevantes:

PKG_DBDIR = "/var/db/pkg";
PKG_CACHEDIR = "/var/cache/pkg";
PORTSDIR = "/usr/ports";
REPOS_DIR [
    "/etc/pkg/",
    "/usr/local/etc/pkg/repos/",
]
Repositories:
    pfSense-core: {
      url             : "pkg+https://pkg.pfsense.org/pfSense_v2_3_2_amd64-core",
      enabled         : yes,
      priority        : 0,
      mirror_type     : "SRV"
    }
    pfSense: {
      url             : "pkg+https://pkg.pfsense.org/pfSense_v2_3_2_amd64-pfSense_v2_3_2",
      enabled         : yes,
      priority        : 0,
      mirror_type     : "SRV"
    }

Olhando para os dois diretórios nomeados em REPOS_DIR :

  • /etc/pkg contém o que parece ser um padrão do FreeBSD.conf (enabled = yes).
  • /usr/local/etc/pkg/repos contém um FreeBSD.conf (enabled = no) diferente e também um pfsense.conf que contém as duas definições de repo informadas por pkg -vv .
  • Há também /usr/local/share/pfSense/pkg/repos que contém os mesmos FreeBSD.conf e pfsense.conf como /usr/local/etc/pkg/repos (o último sob um nome de arquivo diferente: pfSense-repo.conf ) e também um link para repos de desenvolvimento adicionais em um arquivo separado pfSense-repo-devel.conf .

Eu estou tentando descobrir a lógica pela qual o pkg escolhe qual destes substitui os outros, especialmente desde quando uma prioridade é dada, em cada caso é o mesmo (= 0).

Um arquivo /usr/local/etc/pkg/*.conf substitui automaticamente um arquivo com nome semelhante em /etc/pkg/*.conf , se ambos estiverem presentes? Se não, o que está acontecendo e como o pkg está escolhendo quais repositórios devem prestar atenção?

    
por Stilez 01.01.2017 / 14:31

1 resposta

1

O comportamento é, na verdade, todo documentado no manual (q.v.). REPOS_DIR é obtido de pkg.conf e seus diretórios são processados na ordem dada. Os arquivos em cada diretório são processados em ordem alfabética. Não há noção de comparar nomes de arquivos. Em vez disso, um arquivo que é processado posteriormente substitui qualquer coisa anterior em conflito.

Leitura adicional

por 01.01.2017 / 16:06