Usando o Devtools no Arch Linux

O pacote Devtools foi originalmente criado para Usuários Confiáveis ​​para criar corretamente pacotes para os repositórios oficiais. No entanto, ele também pode ser usado por usuários comuns para criar pacotes AUR ou mesmo pacotes oficiais modificados.

Consulte este guia para entender e usar o AUR em geral, incluindo a obtenção do PKGBUILD. Este documento mostra apenas as etapas específicas do Devtools, se for o método que você escolher para compilar um pacote.

O Devtools mantém uma instalação limpa separada do Arch, localizada em /var/lib/archbuild/<TARGET>/root, que contém apenas grupos de pacotes basee base-devel. Se essa instalação limpa não existir, ela será criada automaticamente. Se existir, ele atualizará automaticamente quaisquer pacotes nele. Quando o Devtools é usado para criar um pacote, ele começa com uma cópia dessa instalação limpa, instala os pacotes necessários apenas na cópia, copia o código-fonte nele, executa a compilação e o empacotamento nele e copia apenas o pacote resultante, de forma idêntica à encontrada nos repositórios oficiais.

Há vantagens no Devtools em executar makepkgdiretamente. Uma vantagem é que base-devele outros pacotes necessários para compilar, mas não executar, o pacote que você está criando nunca acaba no seu sistema principal. São menos pacotes que precisam ser atualizados periodicamente e têm preocupações. Embora seja principalmente um benefício para os mantenedores de pacotes do Arch, esse processo expõe facilmente quando a PKGBUILDestá incorreto, como se uma dependência não for listada, que o mantenedor já esteja instalado em seu sistema principal. Você também pode usar uma máquina que é mais rápida na criação de pacotes e copiar o pacote resultante para uma máquina mais lenta que a executará, sem poluir a instalação da máquina de construção.

A principal desvantagem é que a raiz limpa está sempre lá, ocupando cerca de 800 MB, e geralmente uma única cópia está ocupando mais espaço. Observe que, se você /var/lib/archbuild/usa o Btrfs, a cópia da raiz limpa começa sendo um instantâneo do Btrfs, para que esses arquivos não ocupem o dobro do espaço. A raiz limpa é sempre mantida lá para evitar a reinstalação toda vez que um pacote está sendo feito.

Compilando usando Devtools

Instale o Devtools:

# pacman -S devtools

Para criar um pacote, o Devtools inclui archbuild, mas você não o executa diretamente. Ele também inclui links simbólicos de {extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-build. O link simbólico que está sendo usado para executá-lo será inspecionado por archbuild, para determinar qual destino você deseja que ele use. Pode ser executado para usar esses repositórios instáveis ​​/ temporários / de teste, que podem ter versões mais recentes que as lançadas nos repositórios oficiais. Para usar os repositórios oficiais para pacotes não-AUR, no diretório com PKGBUILD, por exemplo, o diretório criado por git clone, execute o seguinte:

$ extra-x86_64-build

Nota: O restante deste guia simplesmente se refere extra-x86_64-build.

Após a execução, os seguintes resultados serão:

  • /var/lib/archbuild/extra-x86_64/root- Um chroot limpo , que é uma instalação atualizada apenas com grupos de pacotes basee base-devel.
  • /var/lib/archbuild/extra-x86_64/<USERNAME>- Isso conterá um chroot de construção . Esta é uma cópia do chroot limpo com todas as dependências necessárias para criar ou executar o pacote que está sendo construído, bem como seu código-fonte, resultados de compilação e pacote.
  • O diretório em que você está conterá o pacote e criará arquivos de log, bem como qualquer código-fonte baixado.

No final, você pode perceber " Checking PKGBUILD" e " Checking <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz". Quaisquer linhas após a saída namcapdelas, que procurarão automaticamente problemas como PKGBUILDarquivos malformados , dependências incluídas que o pacote não parece usar, dependências não incluídas que o pacote parece usar e muito mais. Os falsos positivos geralmente são gerados por namcap, mas é uma ótima ferramenta para fornecer informações a serem investigadas. Se o seu pacote funcionar corretamente, não é uma boa ideia alertar o mantenedor para a namcapsaída, a menos que você o tenha examinado e verificado que uma alteração deve ser feita.

Você pode usar pacmanpara instalar o pacote, que instalará quaisquer dependências necessárias para executar o pacote, desde que estejam em repositórios oficiais ou em um repositório local.

Use um repositório local, conforme explicado aqui , ou instale o arquivo diretamente:

# pacman -U <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz

Se você executar extra-x86_64-buildnovamente, agora ou a qualquer momento posteriormente, com este ou outro pacote, ele atualizará o chroot limpo, se necessário, excluirá o chroot de construção e fará uma nova cópia do chroot limpo e execute o mesmo processo. Se o seu diretório ainda tiver o código-fonte baixado da última vez, ele será usado. Se o pacote for um pacote AUR de desenvolvimento, ele puxará novas alterações em vez de re-clonar.

Internamente, extra-x86_64-buildé executado makechrootpkg, o que chama internamente makepkg. As opções para extra-x86_64-buildincluem o seguinte:

  • -c: Limpe os chroots, removendo e recriando o /var/lib/archbuild/extra-x86_64/diretório inteiro , incluindo seu chroot limpo e todos os diretórios de build chroot. Isso raramente é necessário, apenas se o chroot limpo for corrompido ou se o Devtools for atualizado de uma maneira que interrompa a compatibilidade com versões anteriores.
  • -r <dir>: Use um diretório diferente do que /var/lib/archbuild/extra-x86_64/para conter os chroots.

Quaisquer argumentos para extra-x86_64-builddepois --são passados ​​para makechrootpkg, quando ele o usa internamente. Vários argumentos são sempre transmitidos automaticamente de extra-x86_64-buildpara makechrootpkg. Esses argumentos automáticos são -r <value given to extra-x86_64-build -r option if given, /var/lib/archbuild/extra-x86_64 otherwise> -c -n. Eles dizem makechrootpkgpara remover o chroot de compilação e torná-lo uma nova cópia do chroot limpo, e executar namcapno pacote se ele for compilado com êxito. Uma opção comumente usada para a qual você pode passar makechrootpkgé -l <copy name>. Este é o nome do diretório para fornecer ao chroot de construção, em vez de <USERNAME>, o que é útil para manter várias cópias ou compilar vários pacotes ao mesmo tempo.

Quaisquer argumentos para makechrootpkgdepois --são passados ​​para makepkg, quando ele internamente o usa para criar o pacote. Na primeira vez em que makepkgé executado makechrootpkg, ele é feito com suas próprias opções imutáveis, para baixar arquivos de origem, se necessário, e executar verificações de integridade; portanto, nada pode ser encaminhado nessa execução. É executado makepkguma segunda vez para compilar o pacote e sempre passa automaticamente makepkgargumentos dos --syncdeps --noconfirm --log --holdver --skipintegquais diz makepkgpara, dentro do chroot de compilação, instalar automaticamente dependências ausentes necessárias para compilar e usar o pacote, para não pedir confirmação durante pacman, registre o processo de compilação em texto além de arquivos stdout, não atualize o código-fonte se estiver em um sistema de controle de versão e não execute verificações de verificação de arquivo-fonte.

Você pode encadear isso usando o seguinte formulário:

$ extra-x86_64-build <DEVTOOLS-OPTIONS> -- <MAKECHROOTPKG-OPTIONS> -- <MAKEPKG-OPTIONS>

Observe que /var/lib/archbuildpode ser tratado como se fosse um diretório temporário. Se você possui vários discos rígidos Vultr, vale a pena montar um sistema de arquivos RAID0 (listra) aqui. Se você possui muita RAM, também pode montar um sistema de arquivos com suporte para RAM tmpfs. Após a compilação de um pacote, ele é copiado para o diretório a extra-x86_64-buildpartir do qual você executou e, se desejar, neste momento você pode excluir /var/lib/archbuild. A próxima execução seria mais lenta, porque precisaria criar uma nova raiz limpa. Como alternativa, você pode excluir /var/lib/archbuild/<USERNAME>para recuperar espaço extra do chroot de construção antes que ele seja excluído automaticamente na próxima execução do Devtools. Portanto, mesmo se você tivesse um sistema de arquivos RAID0 montado aqui, o máximo que você perderia seria uma compilação em processo.

Arquivos de configuração do Devtools

Existem alguns detalhes a serem observados nos arquivos de configuração do Devtools. Eles estão localizados em /usr/share/devtools/, como makepkg-x86_64.confe pacman-extra.conf:

  • Para /etcarquivos como makepkg.confe pacman.conf, você pode editá-los com segurança no local e, quando o pacote for atualizado, ele não substituirá suas alterações. Em vez disso, ele salvará os novos arquivos de configuração (se eles mudaram da versão anterior) terminando com .pacnew. No entanto, os arquivos de configuração do Devtools estão nos /usr/share/quais não se destina a serem editados pelo usuário; portanto, quando o Devtools for atualizado, ele substituirá completamente suas alterações nesses arquivos sem alertá-lo. Uma alteração nesse comportamento foi proposta e rejeitada, porque isso ajuda a garantir que os pacotes sejam enviados aos repositórios oficiais, todos com as mesmas configurações de compilação.
  • O valor para MAKEFLAGS, PACKAGERe {SRC,SRCPKG,PKG,LOG}DESTé obtido em /etc/makepkg.confvez de /usr/share/devtools/makepkg-x86_64.conf.

Repositório local

Se você está construindo pacotes que têm dependências em outros pacotes que você construiu, você precisa usar um repositório local, para que, quando pacmanexecutado dentro do chroot de construção, encontre as dependências.

Para configurar um repositório local, consulte a seção "Repositório local" deste guia .

Crie um destino personalizado:

# ln -s archbuild /usr/bin/custom-x86_64-build
# cp /usr/share/devtools/pacman-{extra,custom}.conf

Edite /usr/share/devtools/pacman-custom.confe adicione o seguinte no final:

[archLocalRepo]
SigLevel = Optional TrustAll
Server = file:///archLocalRepo

Edite /etc/pacman.confe adicione o seguinte. Isso força o diretório a ser montado em ligação no chroot:

CacheDir    = /var/cache/pacman/pkg/ /archLocalRepo/

Agora, em vez de usar, extra-x86_64-builduse isto:

$ custom-x86_64-build

Se você sempre quiser usar o destino personalizado, poderá excluir o /var/lib/archbuild/extra-x86_64-build/diretório, se existir, pois os chroots estarão agora /var/lib/archbuild/custom-x86_64-build/.

Pacote mais rápido

Observe que ativar o empacotamento encadeado envolve editar os /usr/share/devtoolsarquivos de configuração, que não são oficialmente suportados, portanto, você precisará executar essa alteração sempre que o Devtools for atualizado.

O Devtools combina um pacote inteiro em um formato de arquivo morto. Por padrão, ele .tar.xzutiliza um único thread para a xzcompactação.

Em sistemas com várias CPUs, você pode permitir o xzuso de vários threads editando /usr/share/devtools/makepkg-x86_64.confe alterando a seguinte linha:

COMPRESSXZ=(xz -c -z -)

Para permitir quantos threads você possui núcleos virtuais:

COMPRESSXZ=(xz -c -z - --threads=0)

Para permitir o uso de vários núcleos virtuais, mas não todos, para reduzir o impacto no desempenho geral do sistema, adicione um número específico:

COMPRESSXZ=(xz -c -z - --threads=21)

A especificação de mais threads do que o número de núcleos virtuais que você possui diminuirá o desempenho.

Se você não se importa que o arquivo do pacote seja (potencialmente muito) maior, desative a compactação editando /usr/share/devtools/makepkg-x86_64.confe altere a seguinte linha:

PKGEXT='.pkg.tar.xz'

Altere para ter a seguinte aparência:

PKGEXT='.pkg.tar'


Leave a Comment

Como instalar o Apache 2.4 no Arch Linux

Como instalar o Apache 2.4 no Arch Linux

Pré-requisitos Um servidor Vultr executando o Arch Linux. Consulte este guia para mais informações. Acesso Sudo. Comandos necessários para serem executados como ar raiz

Configurar um servidor Team Fortress 2 no Arch Linux

Configurar um servidor Team Fortress 2 no Arch Linux

Este tutorial explica como configurar um servidor Team Fortress 2 no Arch Linux. Presumo que você esteja logado com uma conta de usuário não raiz que tenha acesso ao sudo

Configuração do Mumble Server no Arch Linux

Configuração do Mumble Server no Arch Linux

Este tutorial explica como configurar um servidor Mumble (Murmur) no Arch Linux. Tudo o que é feito neste tutorial é feito como usuário root. Instalação e

Como instalar o Perl 5.28 em um servidor Web Arch Linux

Como instalar o Perl 5.28 em um servidor Web Arch Linux

Pré-requisitos Um servidor Vultr executando o Arch Linux atualizado (consulte este artigo.) Um servidor Web em execução, com acesso ao Apache ou Nginx Sudo: os comandos requerem

Como instalar o MongoDB 4.0 no Arch Linux

Como instalar o MongoDB 4.0 no Arch Linux

Pré-requisitos Um servidor Vultr executando o Arch Linux atualizado (consulte este artigo) Acesso ao Sudo: os comandos necessários para serem executados como raiz são prefixados por # e um

Como instalar o PHP 7.3 em um servidor Web Arch Linux

Como instalar o PHP 7.3 em um servidor Web Arch Linux

Pré-requisitos Um servidor Vultr executando o Arch Linux atualizado (consulte este artigo.) Um servidor da Web em execução, com acesso ao Apache ou Nginx Sudo. Comandos requerem

Como instalar o PostgreSQL 11.1 no Arch Linux

Como instalar o PostgreSQL 11.1 no Arch Linux

Pré-requisitos Um servidor Vultr executando o Arch Linux atualizado (consulte este artigo.) Acesso ao Sudo. Os comandos que precisam ser executados como raiz são prefixados por # e um

Como instalar o MariaDB 10.3 ou MySQL 8.0 no Arch Linux

Como instalar o MariaDB 10.3 ou MySQL 8.0 no Arch Linux

Pré-requisitos Um servidor Vultr executando o Arch Linux atualizado (consulte este artigo.) Acesso ao Sudo: os comandos necessários para serem executados como raiz são prefixados por # e um

Configurar servidor Spigot no Arch Linux

Configurar servidor Spigot no Arch Linux

Este tutorial explica como configurar um servidor Minecraft usando o Spigot no Arch Linux. Este tutorial assume que você é um usuário normal (não root) e que possui

Construindo pacotes no Arch Linux (incluindo o AUR)

Construindo pacotes no Arch Linux (incluindo o AUR)

No Arch Linux, os repositórios oficiais são: core, extra e community. Esses pacotes já estão compilados e são instalados através do pacman. Adiante

Configurar um servidor Counter-Strike: Global Offensive (CSGO) no Arch Linux

Configurar um servidor Counter-Strike: Global Offensive (CSGO) no Arch Linux

Este tutorial explica como configurar um servidor Counter-Strike: Global Offensive no Arch Linux. Este tutorial pressupõe que você efetuou login com um uso padrão

Instalando o Arch Linux em um servidor Vultr

Instalando o Arch Linux em um servidor Vultr

O Vultr fornece a incrível funcionalidade de permitir que você use sua própria imagem personalizada, além de seus excelentes modelos, que permitem executar

Instalar o Arch Linux com Btrfs Snapshotting

Instalar o Arch Linux com Btrfs Snapshotting

Prefácio O Arch Linux é uma distribuição de uso geral conhecida por sua tecnologia de ponta e configuração flexível. Com os snapshots do Btrfs, podemos tirar

Como usar o HTTPS no servidor Web Arch Linux

Como usar o HTTPS no servidor Web Arch Linux

Pré-requisitos Um servidor Vultr executando o Arch Linux atualizado (consulte este artigo.) Um servidor da Web em execução, Apache ou Nginx Sudo access Commands required t

Usando Makepkg no Arch Linux

Usando Makepkg no Arch Linux

Se você usa o makepkg diretamente, polui seu sistema. O grupo de pacotes base-devel deve estar instalado. Dessa forma, por padrão, as dependências necessárias apenas

Instalando o Arch Linux 2019 em um servidor Vultr

Instalando o Arch Linux 2019 em um servidor Vultr

Introdução O Arch Linux possui uma distribuição menor, mas ainda forte, do que as distribuições mais populares. Sua filosofia é bastante diferente, com vantagens e

Como instalar o Python 3.7 em um servidor Web Arch Linux

Como instalar o Python 3.7 em um servidor Web Arch Linux

Pré-requisitos Um servidor Vultr executando o Arch Linux atualizado (consulte este artigo.) Um servidor Web em execução, com acesso ao Apache ou Nginx Sudo: os comandos requerem

Como instalar o Nginx 1.14 no Arch Linux

Como instalar o Nginx 1.14 no Arch Linux

Pré-requisitos Um servidor Vultr executando o Arch Linux atualizado (consulte este artigo.) Acesso ao Sudo. Os comandos que precisam ser executados como raiz são prefixados por #. º

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.