FreeBSD Porter's Handbook

Projeto de Documentação do FreeBSD

Revisão: 52397
Copyright
Nota Legal
2018-10-21 23:53:43 por ebrandi.

Índice
1. Introdução
2. Criando um Novo Port
3. Port Rápido
3.1. Escrevendo o Makefile
3.2. Escrevendo os Arquivos de Descrição
3.3. Criando o Arquivo Checksum
3.4. Testando o Port
3.5. Verificando o Port com portlint
3.6. Enviando o Novo Port
4. Port Lento
4.1. Como as Coisas Funcionam
4.2. Obtendo os Fontes Originais
4.3. Modificando o Port
4.4. Patching
4.5. Configurando
4.6. Manipulando a Entrada do Usuário
5. Configurando o Makefile
5.1. O Código Fonte Original
5.2. Nomeando
5.3. Categorização
5.4. Os Arquivos de Distribuição
5.5. MAINTAINER
5.6. COMMENT
5.7. Licenças
5.8. PORTSCOUT
5.9. Dependências
5.10. Ports Slaves e MASTERDIR
5.11. Páginas de Manual
5.12. Arquivos de Informação
5.13. Opções do Makefile
5.14. Especificando o Diretório de Trabalho
5.15. Manipulando Conflitos
5.16. Instalando Arquivos
5.17. Use BINARY_ALIAS para Renomear Comandos Em Vez de Aplicar Patch na Compilação
6. Considerações Especiais
6.1. Staging
6.2. Bibliotecas Empacotadas (Bundled)
6.3. Bibliotecas Compartilhadas
6.4. Ports com Restrições de Distribuição ou Preocupações Legais
6.5. Mecanismos de Compilação
6.6. Usando o GNU Autotools
6.7. Usando o GNU gettext
6.8. Usando Perl
6.9. Usando o X11
6.10. Usando o GNOME
6.11. Componentes GNOME
6.12. Usando o Qt
6.13. Usando o KDE
6.14. Usando o LXQt
6.15. Usando Java
6.16. Aplicações Web, Apache e PHP
6.17. Usando Python
6.18. Usando Tcl/Tk
6.19. Usando Ruby
6.20. Usando SDL
6.21. Usando wxWidgets
6.22. Usando Lua
6.23. Usando iconv
6.24. Usando o Xfce
6.25. Usando Bancos de Dados
6.26. Iniciando e Parando Serviços (com scripts rc)
6.27. Adicionando Usuários e Grupos
6.28. Ports que Dependem dos Fontes do kernel
6.29. Bibliotecas Go
6.30. Arquivos Shell Completion
7. Flavors
7.1. Uma Introdução aos Flavors
7.2. Usando FLAVORS
7.3. USES=php e Flavors
7.4. USES=python e Flavors
8. Práticas Avançadas de pkg-plist
8.1. Alterando o pkg-plist Baseado em Variáveis Make
8.2. Diretórios Vazios
8.3. Arquivos de Configuração
8.4. Lista de Pacotes Estática versus Dinâmica
8.5. Criação Automatizada da Lista de Pacotes
8.6. Expandindo a Lista de Pacotes com Keywords
9. pkg-*
9.1. pkg-message
9.2. pkg-install
9.3. pkg-deinstall
9.4. Mudando os nomes dos pkg-*
9.5. Fazendo uso de SUB_FILES e SUB_LIST
10. Testando o Port
10.1. Executando make describe
10.2. Portlint
10.3. Ferramentas do Ports
10.4. PREFIX e DESTDIR
10.5. Poudriere
10.6. Tinderbox
11. Atualizando um Port
11.1. Usando o Subversion para Criar Patches
11.2. UPDATE e MOVED
12. Segurança
12.1. Por Que Segurança é Tão Importante
12.2. Corrigindo Vulnerabilidades de Segurança
12.3. Mantendo a Comunidade Informada
13. O Que Fazer e Não Fazer
13.1. Introdução
13.2. WRKDIR
13.3. WRKDIRPREFIX
13.4. Diferenciando Sistemas Operacionais e Versões de OS
13.5. Escrevendo Algo Depois do bsd.port.mk
13.6. Uso de Declarações exec em Wrapper Scripts
13.7. Faça as Coisas Racionalmente
13.8. Respeite Ambos CC e CXX
13.9. Respeite CFLAGS
13.10. Logs de Compilação Detalhados
13.11. Feedback
13.12. README.html
13.13. Marcando um Port como de Arquitetura Neutra
13.14. Marcando um Port não Instalável com a variável BROKEN, FORBIDDEN ou IGNORE
13.15. Marcando um Port para Remoção com DEPRECATED ou EXPIRATION_DATE
13.16. Evite o Uso do Construtor .error
13.17. Uso de sysctl
13.18. Atualizando Distfiles
13.19. Uso de Padrões POSIX
13.20. Miscelânea
14. Um Exemplo de Makefile
15. Ordem das Variáveis ​​nos Makefiles de Port
15.1. Bloco PORTNAME
15.2. Bloco PATCHFILES
15.3. Bloco MAINTAINER
15.4. Bloco LICENSE
15.5. Mensagens Genéricas BROKEN/IGNORE/DEPRECATED
15.6. O Bloco de Dependências
15.7. Flavors
15.8. USES e USE_x
15.9. Variáveis ​​Padrão bsd.port.mk
15.10. Opções e Assistentes
15.11. O Restante das Variáveis
15.12. Os Targets
16. Mantendo-se Atualizado
16.1. FreshPorts
16.2. A interface Web para o Repositório do Código Fonte
16.3. A Lista de Discussão de Ports do FreeBSD
16.4. O Cluster de Compilação de Ports do FreeBSD
16.5. Portscout: o Scanner de Distfile de Ports do FreeBSD
16.6. O Sistema de Monitoramento de Ports do FreeBSD
17. Usando Macros USES
17.1. Uma introdução ao USES
17.2. 7z
17.3. ada
17.4. autoreconf
17.5. blaslapack
17.6. bdb
17.7. bison
17.8. cargo
17.9. charsetfix
17.10. cmake
17.11. compiler
17.12. cpe
17.13. cran
17.14. desktop-file-utils
17.15. desthack
17.16. display
17.17. dos2unix
17.18. drupal
17.19. fakeroot
17.20. fam
17.21. firebird
17.22. fonts
17.23. fortran
17.24. fuse
17.25. gecko
17.26. gem
17.27. gettext
17.28. gettext-runtime
17.29. gettext-tools
17.30. ghostscript
17.31. gmake
17.32. gnome
17.33. go
17.34. gperf
17.35. grantlee
17.36. groff
17.37. gssapi
17.38. horde
17.39. iconv
17.40. imake
17.41. kde
17.42. kmod
17.43. lha
17.44. libarchive
17.45. libedit
17.46. libtool
17.47. linux
17.48. localbase
17.49. lua
17.50. lxqt
17.51. makeinfo
17.52. makeself
17.53. mate
17.54. meson
17.55. metaport
17.56. mysql
17.57. mono
17.58. motif
17.59. ncurses
17.60. ninja
17.61. objc
17.62. openal
17.63. pathfix
17.64. pear
17.65. perl5
17.66. pgsql
17.67. php
17.68. pkgconfig
17.69. pure
17.70. pyqt
17.71. python
17.72. qmail
17.73. qmake
17.74. readline
17.75. samba
17.76. scons
17.77. shared-mime-info
17.78. shebangfix
17.79. sqlite
17.80. ssl
17.81. tar
17.82. tcl
17.83. terminfo
17.84. tk
17.85. uidfix
17.86. uniquefiles
17.87. varnish
17.88. webplugin
17.89. xfce
17.90. zip
17.91. zope
18. Valores __FreeBSD_version
18.1. Versões do FreeBSD 12
18.2. Versões do FreeBSD 11
18.3. Versões do FreeBSD 10
18.4. Versões do FreeBSD 9
18.5. Versões do FreeBSD 8
18.6. Versões do FreeBSD 7
18.7. Versões do FreeBSD 6
18.8. Versões do FreeBSD 5
18.9. Versões do FreeBSD 4
18.10. Versões do FreeBSD 3
18.11. Versões do FreeBSD 2.2
18.12. FreeBSD 2 Antes das Versões 2.2-RELEASE
Lista de Tabelas
5.1. Exemplos de DISTVERSION e de Derivações PORTVERSION.
5.2. Exemplos de Nomes de Pacotes
5.3. Atalhos para Macros MASTER_SITE_*
5.4. Macros Mágicas de MASTER_SITES
5.5. USE_GITHUBDescrição
5.6. USE_GITLAB Descrição
5.7. Lista de Licenças Predefinidas
5.8. USE_*
6.1. Variáveis ​​para ports que usam o configure
6.2. Variáveis ​​para ports que usam o cmake
6.3. Variáveis ​​que os usuários podem definir para compilações com cmake
6.4. Variáveis ​​que os Usuários Podem Configurar para Compilar cargo
6.5. Variáveis ​​Somente Leitura para Ports Que Usam Perl
6.6. Variáveis ​​para Ports Que Usam X
6.7. Componentes GNOME
6.8. Componentes Macro do GNOME
6.9. Componentes Legados do GNOME
6.10. Componentes Obsoletos: Não Use
6.11. Variáveis ​​Fornecidas aos Ports Que Usam o Qt
6.12. Componentes da Biblioteca Qt Disponíveis
6.13. Componentes Disponíveis da Ferramenta Qt
6.14. Componentes Disponíveis de Plugin Qt
6.15. Variáveis ​​para Ports Que Usam o qmake
6.16. Componentes Disponíveis do KDE 4
6.17. Componentes disponíveis do LXQt
6.18. Variáveis ​​Que Podem ser Definidas por Ports Que Usam Java
6.19. Variáveis ​​Fornecidas para Ports que Usam Java
6.20. Constantes definidas para os ports que usam Java
6.21. Variáveis ​​para Ports Que Usam o Apache
6.22. Variáveis ​​Úteis para Portar Módulos do Apache
6.23. Variáveis úteis para Ports que usam Python
6.24. Assistentes do Módulo de Dependências do Python
6.25. As variáveis read only muito úteis para Ports que usam Tcl/Tk
6.26. Variáveis ​​Úteis para Ports Que Usam Ruby
6.27. Variáveis ​​Somente Leitura Selecionadas para Ports Que Usam Ruby
6.28. Variáveis ​​para Selecionar as Versões do wxWidgets
6.29. Versões Disponíveis do wxWidgets
6.30. Especificações de Versão do wxWidgets
6.31. Variáveis ​​para selecionar as versões preferidas do wxWidgets
6.32. Componentes wxWidgets Disponíveis
6.33. Tipos de Dependências wxWidgets Disponíveis
6.34. Tipos de Dependência Padrão do wxWidgets
6.35. Variáveis ​​definidas para ports que usam wxWidgets
6.36. Valores Legais para WX_CONF_ARGS
6.37. Variáveis ​​Definidas para Ports Que Usam Lua
6.38. Banco de Dados de Macros USES
6.39. Caminhos dos arquivos shell completion
11.1. Prefixos de Atualização de Arquivos do Subversion
18.1. Valores do __FreeBSD_version para o FreeBSD 12
18.2. Valores do __FreeBSD_version para o FreeBSD 11
18.3. Valores do __FreeBSD_version para o FreeBSD 10
18.4. Valores do __FreeBSD_version para o FreeBSD 9
18.5. Valores do __FreeBSD_version para o FreeBSD 8
18.6. Valores do __FreeBSD_version para o FreeBSD 7
18.7. Valores do __FreeBSD_version para o FreeBSD 6
18.8. Valores do __FreeBSD_version para o FreeBSD 5
18.9. Valores do __FreeBSD_version para o FreeBSD 4
18.10. Valores do __FreeBSD_version para o FreeBSD 3
18.11. Valores do __FreeBSD_version para o FreeBSD 2.2
18.12. Valores do __FreeBSD_version para o FreeBSD 2 de antes da 2.2-RELEASE
Lista de Exemplos
3.1. Criando um .diff para um Novo Port.
3.2. Criando um .shar para um Novo Port.
4.1. Aplicando um Patch para uma Versão Específica do FreeBSD
4.2. Aplicando Opcionalmente um Patch
4.3. Usando EXTRA_PATCHES Com um Diretório
5.1. Usando pkg-version(8) para comparar versões.
5.2. Usando DISTVERSION
5.3. Usando DISTVERSION Quando a Versão Começa com uma Letra ou um Prefixo
5.4. Usando DISTVERSION Quando a Versão Contém Letras Significando alpha, beta ou pre-release
5.5. Não use DISTVERSION Quando a Versão Contém Letras que Significam "Nível de Patch"
5.6. Derivando PORTVERSION Manualmente
5.7. Derivar DISTNAME a partir de PORTVERSION
5.8. Caso Exótico 1
5.9. Caso Exótico 2
5.10. Uso Simples de USE_GITHUB
5.11. Uso Mais Completo de USE_GITHUB
5.12. Uso de USE_GITHUB com DISTVERSIONPREFIX
5.13. Usando USE_GITHUB Quando o Upstream Não Usa Versões
5.14. Usando USE_GITHUB para Acessar um Commit Entre Duas Versões
5.15. Uso de USE_GITHUB com Vários Arquivos de Distribuição
5.16. Uso de USE_GITHUB com Vários Arquivos de Distribuição Usando GH_TUPLE
5.17. Como Usar USE_GITHUB com Submodulos Git?
5.18. Uso Simples de USE_GITLAB
5.19. Uso Mais Completo de USE_GITLAB
5.20. Uso de USE_GITLAB com Vários Arquivos de Distribuição
5.21. Uso de USE_GITLAB com Vários Arquivos de Distribuição Usando GL_TUPLE
5.22. Uso Simplificado de MASTER_SITES:n com Um Arquivo Por Site
5.23. Uso Simplificado de MASTER_SITES:n com Mais de Um Arquivo Por Site
5.24. Uso Detalhado de MASTER_SITES:n no MASTER_SITE_SUBDIR
5.25. Uso Detalhado de MASTER_SITES:n com Vírgula, Vários Arquivos, Vários Sites e Vários Subdiretórios
5.26. Uso Detalhado de MASTER_SITES:n com SourceForge (SF)
5.27. Uso Simplificado de MASTER_SITES:n com PATCH_SITES
5.28. Uso Mais Simples, Licenças Predefinidas
5.29. Licença Não Padrão
5.30. Licenças Padrão e Não Padrão
5.31. LICENSE_NAME
5.32. LICENSE_FILE
5.33. LICENSE_TEXT
5.34. LICENSE_DISTFILES
5.35. Licenças Duplas
5.36. Múltiplas Licenças
5.37. Declaração Errada de uma Dependência Opcional
5.38. Declaração Correta de uma Dependência Opcional
5.39. Uso Simples de OPTIONS
5.40. Verificar OPTIONS Desmacadas
5.41. Uso Prático de OPTIONS
5.42. Manipulação Incorreta de uma Opção
5.43. Manuseio Correto de uma Opção
5.44. Uso Simples de OPT_IMPLIES
5.45. Uso Simples de OPT_PREVENTS
5.46. Uso básico de CONFLICTS*
5.47. Usando CONFLICTS* Com Globs.
5.48. Usando BINARY_ALIAS para Deixar gsed Disponível como sed
5.49. Usando BINARY_ALIAS Para Fornecer Aliases para Comandos python3 Codificado
6.1. Criar Links Simbólicos Relativos, Dentro de ${PREFIX}
6.2. Criar Links Simbólicos Absolutos, Fora de ${PREFIX}
6.3. Exemplo de USES=cmake
6.4. CMAKE_ON and CMAKE_OFF
6.5. Criando um Port para uma Aplicação Simples em Rust
6.6. Ativando Recursos Adicionais do Aplicativo
6.7. Listando Licenças Crate
6.8. Exemplo de Dependência Perl
6.9. Um Port Que Requer Perl Apenas para Compilar
6.10. Um Port Que Também Requer Perl Para Patch
6.11. Um Módulo Perl Que Precisa de ExtUtils::MakeMaker para Compilar
6.12. Um Módulo Perl Que Precisa Módulo::Build para Compilar
6.13. Exemplo USE_XORG
6.14. Usando Variáveis ​​Relacionadas ao X11
6.15. Selecionando Componentes do Qt 4
6.16. Exemplo USES= qmake
6.17. Exemplo USE_KDE
6.18. Exemplo USE_LXQT
6.19. Exemplo de Makefile para Classes PEAR
6.20. Exemplo de Makefile para Módulos Horde
6.21. Makefile para um Módulo Python Simples.
6.22. Selecionando Componentes wxWidgets
6.23. Detectando as versões instaladas wxWidgets e seus componentes
6.24. Usando Variáveis ​​nos Comandos wxWidgets
6.25. Simples uso do iconv
6.26. Uso do iconv com configure
6.27. Corrigindo Hardcoded -liconv
6.28. Verificando Disponibilidade do iconv Nativo
6.29. Exemplo de USES=xfce
6.30. Usando os Próprios Widgets GTK3 do Xfce
6.31. Usando o Berkeley DB 6
6.32. Usando MySQL
6.33. Usando PostgreSQL
6.34. Usando SQLite 3
7.1. Uso Básico de Flavors
7.2. Outro Uso Básico de Flavors
7.3. Uso Mais Complexo de Flavors
7.4. Flavor Específico PKGNAME.
7.5. Extensão Simples USES=php
7.6. Adicionando Flavors em uma Aplicação PHP
7.7. Simples USES=python
7.8. USES=python com Requisitos de Versão
7.9. Para um port que não usa distutils
8.1. Usando PLIST_SUB com Expressões Regulares
8.2. Exemplo de uma Keyword @dirrmtryecho
8.3. Exemplo na vida real, como o @sample é implementado
10.1. Usando make.conf para Alterar o Perl Padrão
13.1. Como Evitar o Uso de .error
15.1. Exemplo de Ordenamento das Variáveis ​​de Opções
17.1. Usando Vários Valores
17.2. Adicionando um Argumento
17.3. Adicionando Vários Argumentos
17.4. Entrelaçando Tudo Isso Junto
17.5. Uso Típico
17.6. Adicionando outro interpretadoror para USES=shebangfix
17.7. Especificando todos os Caminhos ao Adicionar um Interpretador para USES=shebangfix
17.8. Adicionando uma Localização Estranha para um Interpretador
17.9. USES=shebangfix com a variável SHEBANG_REGEX
17.10. USES=shebangfix com a variável SHEBANG_GLOB
17.11. USES=shebangfix com a variável SHEBANG_FILES

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.