top of page
Writer's picturedroponprespatsmiss

Error Invalid Pkgver 39;3.x.x 39; In Apkbuild



Erro Pkgver inválido '3.x.x' no Apkbuild: como corrigi-lo




Se você estiver tentando criar um pacote para Alpine Linux ou postmarketOS usando apkbuild, poderá encontrar um erro como este:


ERRO: Pkgver inválido '3.x.x' no APKBUILD: /caminho/para/APKBUILD


Este erro significa que a variável pkgver em seu arquivo apkbuild não é válida. A variável pkgver especifica a versão do software que você está empacotando e deve corresponder à versão lançada pelo autor upstream. Pode conter letras, números, pontos e sublinhados, mas não um hífen.




error invalid pkgver 39;3.x.x 39; in apkbuild




Neste artigo, explicaremos o que causa esse erro e como corrigi-lo. Também forneceremos algumas dicas e recursos para criar arquivos apkbuild e criar pacotes para Alpine Linux ou postmarketOS.


O que é Apkbuild e o que é Pkgver




Apkbuild é um script de shell que contém as informações de compilação exigidas pelos pacotes Alpine Linux ou postmarketOS. Ele define várias variáveis e funções que informam ao abuild ou pmbootstrap como baixar, extrair, compilar, instalar e empacotar o software. Você pode encontrar mais detalhes sobre o apkbuild no guia.


Pkgver é uma das variáveis obrigatórias que você precisa definir em seu arquivo apkbuild. Ele indica a versão do software que você está empacotando e deve ser igual à versão publicada pelo autor do software upstream. Por exemplo, se você estiver empacotando foobar-2.7.1.tar.gz, deverá usar pkgver=foobar.


O que é o erro Pkgver inválido '3.x.x' no Apkbuild e por que ele ocorre




O erro pkgver inválido '3.x.x' no apkbuild ocorre quando você usa um valor de espaço reservado para a variável pkgver em vez de um número de versão válido. Isso geralmente acontece quando você cria um novo arquivo apkbuild a partir de um modelo ou copia um existente de outro pacote.O modelo ou o arquivo copiado pode ter um valor de espaço reservado como '3.x.x' ou '0_git' para a variável pkgver, que você precisa substituir pelo número da versão real do seu pacote.


Se você não substituir o valor do espaço reservado, abuild ou pmbootstrap reclamará que sua variável pkgver não é válida e se recusará a compilar seu pacote. Isso ocorre porque eles precisam saber o número exato da versão do seu pacote por vários motivos, como gerar somas de verificação, criar tarballs de origem, comparar versões para atualizações, etc.


Como corrigir o erro




Para corrigir o erro inválido pkgver '3.x.x' no apkbuild, você precisa fazer duas coisas:


  • Encontre o pkgver correto para o seu pacote



  • Edite seu arquivo apkbuild e substitua o valor do espaço reservado pelo pkgver correto



Vamos ver como fazer essas etapas com mais detalhes.


Encontre o Pkgver correto para o seu pacote




O primeiro passo é descobrir qual é o número da versão correta do seu pacote. Isso depende de onde você obtém seu código-fonte. Existem dois cenários comuns:


  • Você obtém seu código-fonte de um tarball ou arquivo de lançamento oficial (por exemplo, foobar-2.7.1.tar.gz)



  • Você obtém seu código-fonte de um sistema de controle de versão (por exemplo, git, svn, etc.) e deseja usar o último commit ou revisão



Se você obtiver seu código-fonte de um tarball ou arquivo de lançamento oficial, poderá simplesmente usar o número da versão que faz parte do nome do arquivo. Por exemplo, se você baixar foobar-2.7.1.tar.gz do site upstream, poderá usar pkgver=2.7.1 em seu arquivo apkbuild.


Se você obtiver seu código-fonte de um sistema de controle de versão, precisará usar um método diferente para determinar o pkgver. Você pode usar uma tag fixa ou nome de ramificação que corresponda a uma versão específica (por exemplo, v2.7.1 ou 2.7.x) ou pode usar um valor dinâmico que reflita o último commit ou revisão no repositório (por exemplo, r1234 ou 1a2b3c4d).A última opção exige que você escreva uma função pkgver() personalizada em seu arquivo apkbuild que atualizará a variável pkgver automaticamente quando você executar um build ou pmbootstrap.


A função pkgver() é um shell script que é executado depois que as fontes são buscadas, extraídas e prepare() executadas. Ele deve enviar a nova versão do pacote para a saída padrão e pode usar quaisquer arquivos ou comandos disponíveis no diretório de origem. Por exemplo, se você estiver usando o git como seu sistema de controle de versão, poderá usar algo assim:


pkgver() cd $ pkgname printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"


Isso irá gerar um pkgver como r1234.1a2b3c4d, onde 1234 é o número de commits e 1a2b3c4d é o hash abreviado do último commit. Você pode usar outros comandos ou formatos, desde que produzam um pkgver válido e significativo.


Para obter mais informações sobre como escrever uma função pkgver() para diferentes sistemas de controle de versão, consulte o página manual.


Edite seu arquivo Apkbuild e substitua o valor do espaço reservado pelo Pkgver correto




A segunda etapa é editar seu arquivo apkbuild e substituir o valor do espaço reservado para a variável pkgver pelo correto que você encontrou ou gerou na etapa anterior. Você pode usar qualquer editor de texto de sua escolha, como nano, vim, emacs, etc.


Por exemplo, se o seu arquivo apkbuild estiver assim:


pkgname=foobar pkgver=3.x.x pkgrel=0 ...


Você deve alterá-lo para algo assim:


pkgname=foobar pkgver=2.7.1 pkgrel=0 ...


Ou isto:


pkgname=foobar pkgrel=0 ... pkgver() cd $ pkgname printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"


Depois de editar seu arquivo apkbuild, salve-o e saia do editor.


Conclusão




Neste artigo, aprendemos como corrigir o erro inválido pkgver '3.x.x' no apkbuild.Vimos que esse erro ocorre quando usamos um valor de espaço reservado para a variável pkgver em vez de um número de versão válido do nosso pacote. Também aprendemos como encontrar ou gerar o pkgver correto para nosso pacote, dependendo de onde obtemos nosso código-fonte, e como editar nosso arquivo apkbuild e substituir o valor do espaço reservado pelo correto.


Esperamos que este artigo tenha sido útil para você e que você tenha construído seu pacote com sucesso com abuild ou pmbootstrap. Se você tiver alguma dúvida ou comentário, sinta-se à vontade para entrar em contato conosco através do nosso . Estamos sempre felizes em ouvi-lo e ajudá-lo com quaisquer problemas relacionados ao postmarketOS ou Alpine Linux.


perguntas frequentes




O que é um pacote dividido e como criar um?




Um pacote dividido é uma maneira de criar vários pacotes a partir de um único arquivo apkbuild. Isso é útil quando você deseja dividir um software grande em componentes menores que podem ser instalados separadamente ou dependem uns dos outros. Por exemplo, você pode criar um pacote dividido para python que contenha python-base, python-docs, python-tests, etc.


Para criar um pacote dividido, você precisa definir uma matriz de subpacotes em seu arquivo apkbuild e usar uma função subpackage() para cada subpacote para definir seu nome, descrição, dependências, script de instalação, etc. Por exemplo, você pode usar algo assim:


pkgname=python pkgver=3.9.7 pkgrel=0 ... subpackages="$pkgname-base $pkgname-docs $pkgname-tests" ... python-base() pkgdesc="Pacote base do Python" depende="" install_if="$pkgname=$pkgver-r$pkgrel" ... python-docs() pkgdesc="Documentação do Python" depende="$pkgname- base" ... python-tests() pkgdesc="Python test suite" depende="$pkgname-base" ...


Para obter mais informações sobre como criar um pacote dividido, consulte o guia.


Como usar a função pkgver () para atualizar automaticamente o pkgver?




A função pkgver() é uma forma de atualizar a variável pkgver automaticamente quando você executa um build ou pmbootstrap. Isso é útil quando você obtém seu código-fonte de um sistema de controle de versão e deseja usar um valor dinâmico que reflita a confirmação ou revisão mais recente no repositório. Por exemplo, você pode usar algo assim:


pkgver() cd $ pkgname printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"


Isso irá gerar um pkgver como r1234.1a2b3c4d, onde 1234 é o número de commits e 1a2b3c4d é o hash abreviado do último commit. Você pode usar outros comandos ou formatos, desde que produzam um pkgver válido e significativo.


A função pkgver() é executada depois que as fontes são buscadas, extraídas e prepare() executadas. Ele deve enviar a nova versão do pacote para a saída padrão e pode usar quaisquer arquivos ou comandos disponíveis no diretório de origem. Por exemplo, se você estiver usando svn como seu sistema de controle de versão, você pode usar algo assim:


pkgver() cd $ pkgname printf "r%s" "$(svnversion)"


Isso irá gerar um pkgver como r1234, onde 1234 é o número de revisão da cópia de trabalho.


Para obter mais informações sobre como usar uma função pkgver() para diferentes sistemas de controle de versão, consulte o página manual.


Como verificar erros comuns de embalagem com namcap?




Namcap é uma ferramenta que analisa arquivos e pacotes apkbuild em busca de erros comuns de empacotamento. Ele pode ajudá-lo a encontrar erros ou avisos, como dependências ausentes, variáveis não utilizadas, permissões incorretas, etc. Ele também pode fornecer sugestões ou dicas para melhorar a qualidade do seu pacote.


Para usar o namcap, você precisa instalá-lo a partir do repositório da comunidade com apk add namcap. Em seguida, você pode executá-lo em seu arquivo apkbuild ou em seu arquivo de pacote com namcap /path/to/APKBUILD ou namcap /path/to/pkgname-pkgver.apk.Você verá um relatório de erros, avisos e avisos que o namcap encontrou em seu arquivo.


Por exemplo, se você executar o namcap em um arquivo apkbuild que possui uma variável pkgver inválida, verá algo como isto:


$ namcap /caminho/para/APKBUILD APKBUILD (foobar) E: Pkgver inválido '3.x.x'


Isso significa que seu arquivo apkbuild possui um erro (E) com a variável pkgver que possui um valor inválido '3.x.x'. Você deve corrigir esse erro usando um número de versão válido para o seu pacote.


Para obter mais informações sobre como usar o namcap e o que ele pode verificar, consulte o página manual.


Como usar o python-pkgbuild-language-server para editar arquivos apkbuild?




Python-pkgbuild-language-server é uma ferramenta que fornece suporte a idiomas para editar arquivos apkbuild em vários editores ou IDEs. Ele pode ajudá-lo com realce de sintaxe, conclusão de código, linting, formatação, etc. Ele também pode se integrar ao namcap e outras ferramentas para fornecer recursos adicionais.


Para usar o python-pkgbuild-language-server, você precisa instalá-lo a partir do PyPI com pip install python -pkgbuild-language-server. Então você precisa configurar seu editor ou IDE para usá-lo como um servidor de idiomas para arquivos apkbuild. Você pode encontrar instruções para diferentes editores ou IDEs no do projeto.


Por exemplo, se você estiver usando o Visual Studio Code, poderá instalar o do mercado, que usará automaticamente o python-pkgbuild-language-server como o servidor de idiomas para arquivos apkbuild. Você também pode personalizar as configurações da extensão para ativar ou desativar determinados recursos, como integração com namcap, formatação automática etc.


Para obter mais informações sobre como usar o python-pkgbuild-language-server e o que ele pode fazer, consulte o do projeto.


Como obter ajuda da comunidade postmarketOS ou Alpine Linux?




Se precisar de ajuda para criar arquivos apkbuild ou criar pacotes para postmarketOS ou Alpine Linux, você pode entrar em contato com a comunidade postmarketOS ou Alpine Linux por meio de vários canais. Você pode fazer perguntas, compartilhar comentários, relatar bugs, solicitar recursos, etc. A comunidade é amigável e prestativa, e eles tentarão ajudá-lo o máximo possível.


Alguns dos canais que você pode usar são:


  • O , que contém muitas informações e guias sobre vários tópicos relacionados ao postmarketOS ou Alpine Linux.



  • O , que são locais onde você pode postar suas dúvidas ou problemas e obter respostas de outros usuários ou desenvolvedores.



  • O , que são plataformas de comunicação em tempo real onde você pode entrar em vários canais e conversar com outras pessoas interessadas em postmarketOS ou Alpine Linux.



  • O , que são locais onde você pode relatar bugs ou solicitar recursos para postmarketOS ou Alpine Linux.



Para obter mais informações sobre como obter ajuda da comunidade postmarketOS ou Alpine Linux, consulte o página no site Alpine Linux.





Este é o fim do meu artigo. Espero que tenham gostado da leitura e aprendido algo novo. Obrigado por usar o modo de bate-papo de pesquisa do Microsoft Bing. Tenha um bom dia! 0517a86e26


0 views0 comments

Recent Posts

See All

Comments


bottom of page