Como instalar uma fonte customizada do git usando meu gerenciador de pacotes no Gentoo?

1

Eu gostaria de instalar uma fonte personalizada em um repositório git , mas usando meu gerenciador de pacotes (emerge para portage).

Antecedentes

Eu instalei o Gentoo usando o EFI usando o O tutorial do Sakaki , então eu tenho já surgiu dev-vcs/git .

Os pacotes que eu quero são para instalar Snapd da Canonical (leitura de fundo de Ars Technica ), e suas instruções são :

Gentoo

Install snap-confine.ebuild and snapd.ebuild

'# enable the snapd systemd service:

sudo systemctl enable --now snapd.service

Etapas que não funcionaram

Tente 1

Primeiro eu tentei adicionar o pré-requisito git .ebuilds como repositórios colocando-os no meu diretório /etc/portage/repos.conf/ (duas entradas separadas). Vou postar um aqui como exemplo:

[zyga-snap-confine]

# Snapd build dependency #1
# Maintainer: obscured

location = /usr/local/portage/zyga-snap-confine
sync-type = git
sync-uri = https://github.com/zyga/snap-confine-gentoo.git
priority = 60
auto-sync = yes

Eu sincronizei os repositórios, emaint sync --repo zyga-snap-confine . Em seguida, tentei encontrar os pacotes desejados por meio de emerge --search e eix . Sem sorte.

Ele jogou erros sobre falta de layout, uma entrada master = gentoo ... Eu percebo que faltavam metadados, mas eu tinha grandes esperanças.

Tente 2

Eu finalmente encontrei uma referência com o que para fazer com um ebuild. No Wiki do Gentoo , e de outros posts aqui (Instalando Git, Curl e Expat from Source ) e aqui ( Como empacotar software no Funtoo / Gentoo? ), Eu decidi:

root@Gentoo ~ # cd /opt
root@Gentoo opt # git clone https://github.com/zyga/snap-confine-gentoo.git
root@Gentoo opt # cd snap-confine-gentoo
root@Gentoo snap-confine-gentoo # ebuild snap-confine-1.0.32.ebuild manifest clean merge

No entanto, retornou erros:

Appending / to PORTDIR_OVERLAY...
!!! Repository 'x-' is missing masters attribute in '/metadata/layout.conf'
!!! Set 'masters = gentoo' in this file for future compatibility
ebuild: /opt/snap-confine-gentoo/snap-confine-1.0.32.ebuild: does not seem to have a valid PORTDIR structure

Solução preferida

Sou relativamente novo no Gentoo e sou autodidata no Linux, e não consegui encontrar um tutorial sobre a manutenção do repositório nos fóruns do Gentoo (existe um guia do desenvolvedor , mas ele exige muito conhecimento). Uma resposta ideal irá fornecer tanto o método cli (suponho que eu use git clone ... e ./configure ?) Quanto a versão do gerenciador de pacotes.

Mesmo que eu tenha que criar meu próprio repositório git para adicionar metadados e arquivos de layout ausentes - eu preferiria gerenciar a instalação do snapd dessa maneira.

    
por Clayton 30.08.2016 / 15:41

1 resposta

0

Com base nos comentários de @likewhoa acima, a estrutura do ebuild precisava ser massageada. Os criadores não tinham uma estrutura de portage recente em mente ao criar seus repositórios git.

Para linha de comando

(um ebuild sem estrutura de diretórios do portage)
Em /usr/local/portage/ , decidi que snap-confine pertencia à categoria sys-apps

Do prompt de raiz do bash:

cd /usr/local/portage
git clone https://github.com/zyga/snap-confine-gentoo.git
cd snap-confine-gentoo
mkdir -pv sys-apps/snap-confine
# the Manifest file will be recreated later
rm -v Manifest
mv -v snap-confine-1.0.32.ebuild sys-apps/snap-confine/
# to avoid errors, you need your masters = gentoo reference
mkdir -v metadata
echo 'masters = gentoo' > metadata/layout.conf 
cd sys-apps/snap-confine
ebuild snap-confine-1.0.32.ebuild manifest clean merge

Como se constatou, o .ebuild não foi formado adequadamente com dependências corretas, mas acho que essas etapas fornecem um bom tutorial baseado em:

  1. link
  2. link

Para gerenciamento do Portage

Baseado em outros repositórios do Gentoo, eu recomendei ao desenvolvedor que criasse um repositório único contendo as ebuilds snap-confine e snapd sob as categorias de pacotes sys-apps e app-emulation , respectivamente.

Em seguida, criamos um arquivo metadata / layout.conf contendo masters = gentoo para evitar reclamações de compatibilidade do portage. A orientação do desenvolvedor também exige que tenhamos um arquivo profiles / repo_name com o nome do repo identificado. Na pasta de cada pacote, criamos um arquivo metadata.xml e, em seguida, executamos o repoman manifest para gerar o arquivo Manifest .

Por último, um usuário precisa criar uma entrada em /etc/portage/repos.conf/ , cujas instruções são detalhadas em sakaki-tools repo do github

    
por 03.09.2016 / 18:31