Todas as keywords também podem ter argumentos opcionais entre parênteses. Os argumentos são owner, group e mode. Esse argumento é usado no arquivo ou diretório referenciado. Para alterar o dono, o grupo e o modo de um arquivo de configuração, use:
@sample(games,games,640) etc/config.sample
Os argumentos são opcionais. Se apenas o grupo e o modo precisarem ser alterados, use:
@sample(,games,660) etc/config.sample
Se uma keyword for utilizada em uma entrada de opção, ela precisa ser adicionada após o assistente:
%%FOO%%@sample etc/orbit.conf.sample
Isso é porque os assistentes plist das opções são utilizados para comentar as linhas, e por isso eles precisam ser inseridos no início. Veja Seção 5.13.3.1, “OPTIONS_SUB
” para maiores informações.
Irá executar o update-desktop-database -q
após a instalação e desinstalação. Nunca use diretamente, adicione USES=utilitários de arquivo de desktop
ao Makefile
.
Adiciona uma entrada @dir
para o diretório passado como um argumento, e executa fc-cache -fs
nesse diretório após a instalação e desinstalação.
Adiciona uma entrada @dir
para o diretório passado como um argumento, e executa fc-cache -fs
, mkfontscale
e mkfontdir
nesse diretório após a instalação e desinstalação. Além disso, na desinstalação, ele remove os arquivos de cache fonts.scale
e fonts.dir
, se estiverem vazios. Esta keyword é equivalente a adicionar o diretório @fc
e o diretório
@fontsdir
.
Adiciona um entrada @dir
para o diretório passado como um argumento, e executa mkfontscale
e mkfontdir
nesse diretório após a instalação e desinstalação. Além disso, na desinstalação, ele remove os arquivos de cache fonts.scale
e fonts.dir
, se estiverem vazios.
Adiciona o arquivo passado como argumento ao plist e atualiza o índice do documento info na instalação e desinstalação. Além disso, ele remove o índice se estiver vazio na desinstalação. Isso nunca deve ser usado manualmente, mas sempre INFO
. Veja Seção 5.12, “Arquivos de Informação” para maiores informações.
Executa o kldxref
no diretório na instalação e desinstalação. Além disso, na desinstalação, ele removerá o diretório se estiver vazio.
O arquivo será removido na desinstalação, e não dará um erro se o arquivo não estiver lá.
Isso é usado para lidar com a instalação de arquivos de configuração, através de arquivos de exemplo empacotados com o pacote. O arquivo “atual”, não-amostra, ou é o segundo nome do arquivo, se presente, ou o primeiro nome de arquivo sem a extensão .sample
.
Isso faz três coisas. Primeiro, adiciona o primeiro arquivo passado como argumento, o arquivo de exemplo, ao plist. Então, na instalação, se o arquivo real não for encontrado, copia o arquivo de exemplo para o arquivo real. E, finalmente, na desinstalação, remove o arquivo atual se ele não tiver sido modificado. Veja Seção 8.3, “Arquivos de Configuração” para maiores informações.
Executa update-mime-database
no diretório na instalação e desinstalação.
Adiciona o arquivo passado como argumento ao plist.
Na instalação, adiciona o caminho completo do file
em /etc/shells
, certificando-se que não é adicionado duas vezes. Na desinstalação, remove-o de /etc/shells
.
Não use sozinho. Se o port for instalar arquivos
, adicione USES=terminfo no seu *
.terminfoMakefile
.
Na instalação e desinstalação, se o tic
estiver presente, atualize o ${PREFIX}/share/misc/terminfo.db
a partir dos arquivos
disponíveis em *
.terminfo${PREFIX}/share/misc
.
Existem algumas keywords que são codificadas e documentadas em pkg-create(8). Por uma questão de completude, elas também estão documentadas aqui.
A keyword vazia é um espaço reservado para ser usado quando o proprietário, grupo ou modo do arquivo precisam ser alterados. Por exemplo, para definir o grupo de um arquivo como games
e adicionar o bit setgid, adicione:
@(,games,2755) sbin/daemon
Executa o command
como parte do processo de instalação ou desinstalação.
@preexec
command
Executar o command
como parte dos scripts pre-install
.
@postexec
command
Executar o command
como parte dos scripts post-install
.
@preunexec
command
Executar o command
como parte dos scripts pre-deinstall
.
@postunexec
command
Executar o command
como parte dos scripts post-deinstall
.
E se o command
contém qualquer uma dessas sequências em algum lugar, elas são expandidas em linha. Para estes exemplos, assuma que @cwd
está configurado para /usr/local
e o último arquivo extraído foi bin/emacs
.
%F
Expandir para o último nome de arquivo extraído (conforme especificado). No caso do exemplo bin/emacs
.
%D
Expandir para o prefixo do diretório atual, como definido no @cwd
. No caso do exemplo /usr/local
.
%B
Expandir para o nome de base do nome completo do arquivo, ou seja, o prefixo do diretório atual mais o último arquivo, menos o nome do arquivo final. No exemplo, isso seria /usr/local/bin
.
%f
Expandir para a parte do nome do arquivo do nome totalmente qualificado, ou o inverso de %B
. No caso do exemplo, emacs
.
Essas keywords estão aqui para ajudá-lo a configurar o pacote para que ele esteja tão pronto quanto possível. Elas não devem ser abusadas para iniciar serviços, interromper serviços ou executar quaisquer outros comandos que modificarão o sistema em execução.
Define a permissão padrão para todos os arquivos extraídos posteriormente para mode
. O formato é o mesmo usado por chmod(1). Use sem um argumento para voltar às permissões padrão (modo do arquivo enquanto estava sendo empacotado).
Este deve ser um modo numérico, como 644
, 4755
ou 600
. Não pode ser um modo relativo comou+s
.
Define a propriedade padrão para todos os arquivos subsequentes para user
. Use sem um argumento para voltar à propriedade padrão (root
).
Define a propriedade de grupo padrão para todos os arquivos subsequentes para group
. Use sem um argumento para retornar à propriedade do grupo padrão (wheel
).
Declara o nome do diretório. Por padrão, os diretórios criados sob PREFIX
por uma instalação de pacote são automaticamente removidos. Use isto quando um diretório vazio sob PREFIX
precisa ser criado ou quando o diretório precisa ter proprietário, grupo ou modo não padrão. Diretórios fora de PREFIX
precisam ser registrados. Por exemplo, /var/db/${PORTNAME}
precisa ter uma entrada @dir
enquanto ${PREFIX}/share/${PORTNAME}
não, se contiver arquivos ou usar o proprietário, grupo e modo padrão.
Executa o command
como parte do processo de instalação ou desinstalação. Por favor, use Seção 8.6.13.2, “@preexec
command
, @postexec
command
, @preunexec
command
, @postunexec
command
” no lugar.
Declara o nome do diretório a ser excluído na desinstalação. Por padrão, os diretórios criados sob PREFIX
por uma instalação de pacote são excluídos quando o pacote é desinstalado.
Os arquivos da lista de pacotes podem ser estendidos por keywords definidas no diretório ${PORTSDIR}/Keywords
. As configurações de cada keyword são armazenadas em um arquivo UCL chamado
. O arquivo deve conter pelo menos uma destas seções:keyword
.ucl
attributes
action
pre-install
post-install
pre-deinstall
post-deinstall
pre-upgrade
post-upgrade
Altera o dono, grupo ou modo usado pela keyword. Contém uma matriz associativa em que as chaves possíveis são owner
, group
e mode
. Os valores são, respectivamente, um nome de usuário, um nome de grupo e um modo de arquivo. Por exemplo:
attributes: { owner: "games", group: "games", mode: 0555 }
Define o que acontece com o parâmetro da keyword. Contém uma matriz onde os valores possíveis são:
setprefix
Define o prefixo para as próximas entradas do plist.
dir
Registra um diretório para ser criado na instalação e removido na desinstalação.
dirrm
Registra um diretório a ser excluído na desinstalação. Descontinuado.
dirrmtry
Registra um diretório para tentar deletar na desinstalação. Descontinuado.
file
Registra um arquivo.
setmode
Define o modo para as próximas entradas do plist.
setowner
Define o dono para as próximas entradas do plist.
setgroup
Define o grupo para as próximas entradas do plist.
comment
Não faz nada, é o equivalente a não entrar em uma seção action
.
ignore_next
Ignora a próxima entrada no plist.
Se definido para true
, adiciona manipulação de argumentos, dividindo toda a linha, %@
, em argumentos numerados,%1
, %2
, e assim por diante. Por exemplo, para esta linha:
@foo some.content other.content
%1
e %2
irão conter:
some.content other.content
Também afeta como a entrada action
funciona. Quando há mais de um argumento, o número do argumento deve ser especificado. Por exemplo:
actions: [file(1)]
Essas keywords contêm um script sh(1) a ser executado antes ou depois da instalação, desinstalação, ou atualização do pacote. Além do habitual placeholder @exec
%
descrito em Seção 8.6.13.2, “foo
@preexec
command
, @postexec
command
, @preunexec
command
, @postunexec
command
”, há um novo %@
, que representa o argumento da keyword.
@dirrmtryecho
Esta keyword faz duas coisas, adiciona uma linha @dirrmtry
na lista de empacotamento, e escreve no log quando o diretório é removido ao desinstalar o pacote.directory
actions: [dirrmtry] post-deinstall: <<EOD echo "Directory %D/%@ removed." EOD
@sample
é implementadoEsta keyword faz três coisas. Ela adiciona o primeiro filename
passado como um argumento para @sample
na lista de empacotamento, ele adiciona instruções ao script de post-install
para copiar o exemplo para o arquivo de configuração real, se ele ainda não existir, e adiciona instruções ao script post-deinstall
para remover o arquivo de configuração se ele não tiver sido modificado.
actions: [file(1)] arguments: true post-install: <<EOD case "%1" in /*) sample_file="%1" ;; *) sample_file="%D/%1" ;; esac target_file="${sample_file%.sample}" set -- %@ if [ $# -eq 2 ]; then target_file=${2} fi case "${target_file}" in /*) target_file="${target_file}" ;; *) target_file="%D/${target_file}" ;; esac if ! [ -f "${target_file}" ]; then /bin/cp -p "${sample_file}" "${target_file}" && \ /bin/chmod u+w "${target_file}" fi EOD pre-deinstall: <<EOD case "%1" in /*) sample_file="%1" ;; *) sample_file="%D/%1" ;; esac target_file="${sample_file%.sample}" set -- %@ if [ $# -eq 2 ]; then set -- %@ target_file=${2} fi case "${target_file}" in /*) target_file="${target_file}" ;; *) target_file="%D/${target_file}" ;; esac if cmp -s "${target_file}" "${sample_file}"; then rm -f "${target_file}" else echo "You may need to manually remove ${target_file} if it is no longer needed." fi EOD
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>.