aboutsummaryrefslogtreecommitdiff
path: root/documentation/content/pt-br/books/porters-handbook/pkg-files/_index.adoc
blob: 11ab3f84dd4fe5ba913aceb17de17e18f011dc67 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
---
title: Capítulo 9. pkg-*
prev: books/porters-handbook/plist
next: books/porters-handbook/testing
showBookMenu: true
weight: 9
path: "/books/porters-handbook/"
---

[[pkg-files]]
= [.filename]#pkg-*#
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 9
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/porters-handbook/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

Existem alguns truques que ainda não foram mencionamos sobre os arquivos [.filename]#pkg-*# que são úteis às vezes.

[[porting-message]]
== [.filename]#pkg-message#

Para exibir uma mensagem quando o pacote é instalado, coloque a mensagem no [.filename]#pkg-message#. Esse recurso é geralmente útil para exibir etapas adicionais de instalação a serem executadas após o `pkg install` ou `pkg upgrade`.

[IMPORTANT]
====
* [.filename]#pkg-message# deve conter apenas informações _vitais_ de setup e operação no FreeBSD, e isso é único para o port em questão.
* As informações de configuração devem ser mostradas apenas na instalação inicial. As instruções de atualização devem ser exibidas apenas ao atualizar a versão relevante.
* Não coloque as mensagens entre espaços em branco ou linhas de símbolos (como `----------`, `**********`, ou `==========`). Deixe a formatação com o man:pkg[8].
* Os committers têm aprovação implícita para restringir as mensagens existentes na hora da instalação ou em intervalos de atualização, usando as especificações do formato UCL.
====

pkg-message suporta dois formatos:

raw::
Um arquivo de texto simples comum. Sua mensagem é exibida apenas na instalação.

UCL::
Se o arquivo começar com "`[`" será considerado como um arquivo UCL. O formato UCL é descrito na https://github.com/vstakhov/libucl[página libucl no GitHub].

[NOTE]
====
Não adicione uma entrada para o [.filename]#pkg-message# ao [.filename]#pkg-plist#.
====

[[porting-message-ucl]]
=== UCL no [.filename]#pkg-message#

O formato é o seguinte. Deve ser uma matriz de objetos. Os objetos em si podem ter essas palavras-chave:

`message`::
A mensagem atual a ser exibida. Esta palavra-chave é obrigatória.

`type`::
Quando a mensagem deve ser exibida.

`maximum_version`::
Somente se `type` for `upgrade`. Exibe se estiver atualizando de uma versão inferior que a versão especificada.

`minimum_version`::
Somente se `type` for `upgrade`. Exibe se estiver atualizando de uma versão maior que a versão especificada.

As palavras-chave `maximum_version` e `minimum_version` podem ser combinadas.

A palavra-chave `type` pode ter três valores:

`install`::
A mensagem só deve ser exibida quando o pacote é instalado.

`remove`::
A mensagem só deve ser exibida quando o pacote é removido.

`upgrade`::
a mensagem só deve ser exibida durante uma atualização do pacote.

[IMPORTANT]
====
Para preservar a compatibilidade com arquivos [.filename]#pkg-message# não UCL, a primeira linha de um arquivo [.filename]#pkg-message# UCL DEVE ter um simples "`[`", e a última linha DEVE ter um simples "`]`".
====

[[porting-message-ucl-short-ex]]
.Strings Curtas UCL
[example]
====
A mensagem é delimitada por aspas duplas `"`, isto é utilizado em strings simples de linha única:

[.programlisting]
....
[
{ type: install
  message: "Simple message"
}
]
....

====

[[porting-message-ucl-multiline-ex]]
.Strings de Múltiplas Linhas UCL
[example]
====
Strings de múltiplas linhas utiliza o padrão here de documento de notação. O delimitador de múltiplas linhas _deve_ iniciar logo após os símbolos `<<` sem espaço em branco, e ele _deve_ ser apenas em letras maiúsculas. Para finalizar uma sequência de múltiplas linhas, adicione o delimitador em uma linha única, sem nenhum espaço em branco. A mensagem de <<porting-message-ucl-short-ex>> pode ser escrita como:

[.programlisting]
....
[
{ type: install
  message: <<EOM
Simple message
EOM
}
]
....

====

[[porting-message-ucl-ex2]]
.Exibir uma Mensagem na Instalação/Desinstalação
[example]
====
Quando uma mensagem precisa ser exibida apenas na instalação ou na desinstalação, defina o tipo:

[.programlisting]
....
[
{
  type: remove
  message: "package being removed."
}
{ type: install, message: "package being installed."}
]
....

====

[[porting-message-ucl-ex3]]
.Exibir uma Mensagem na Atualização
[example]
====
Quando um port é atualizado, a mensagem exibida pode ser ainda mais adaptada às necessidades do port.

[.programlisting]
....
[
{
  type: upgrade
  message: "Package is being upgraded."
}
{
  type: upgrade
  maximum_version: "1.0"
  message: "Upgrading from before 1.0 need to do this."
}
{
  type: upgrade
  minimum_version: "1.0"
  message: "Upgrading from after 1.0 should do that."
}
{
  type: upgrade
  maximum_version: "3.0"
  minimum_version: "1.0"
  message: "Upgrading from > 1.0 and < 3.0 remove that file."
}
]
....

[IMPORTANT]
======
Ao exibir uma mensagem na atualização, é importante limitar até quando ela será mostrada ao usuário. Na maioria das vezes, é usado o `maximum_version` para limitar seu uso a atualizações anteriores a uma certa versão, quando algo específico precisa ser feito.
======

====

[[pkg-install]]
== [.filename]#pkg-install#

Se o port precisa executar comandos quando o pacote binário é instalado com o `pkg add` ou com o `pkg install`, use o [.filename]#pkg-install#. Este script será automaticamente adicionado ao pacote. Será executado duas vezes pelo `pkg`, a primeira vez como `${SH} pkg-install ${PKGNAME} PRE-INSTALL` antes que o pacote seja instalado e uma segunda vez como `${SH} pkg-install ${PKGNAME} POST-INSTALL` depois dele ter sido instalado. O valor de `$2` pode ser testado para determinar em que modo o script está sendo executado. A variável de ambiente `PKG_PREFIX` será definida para o diretório de instalação do pacote.

[IMPORTANT]
====
Este script está aqui para ajudá-lo a configurar o pacote para que ele esteja tão pronto quanto possível para ser usado. Ele _não deve_ ser abusado para iniciar serviços, interromper serviços ou executar quaisquer outros comandos que modificarão o sistema em execução no momento.
====

[[pkg-deinstall]]
== [.filename]#pkg-deinstall#

Este script é executado quando um pacote é removido.

Este script será executado duas vezes pelo `pkg delete`. A primeira vez como `${SH} pkg-deinstall ${PKGNAME} DEINSTALL` antes que o port seja desinstalado e a segunda vez como `${SH} pkg-deinstall ${PKGNAME} POST-DEINSTALL` após o port ter sido desinstalado. O valor de `$2` pode ser testado para determinar em que modo o script está sendo executado. A variável de ambiente `PKG_PREFIX` será definida para o diretório de instalação do pacote

[IMPORTANT]
====
Este script está aqui para ajudá-lo a configurar o pacote para que ele esteja tão pronto quanto possível para ser usado. Ele _não deve_ ser abusado para iniciar serviços, interromper serviços ou executar quaisquer outros comandos que modificarão o sistema em execução no momento.
====

[[pkg-names]]
== Mudando os nomes dos [.filename]#pkg-*#

Todos os nomes de [.filename]#pkg-*# são definidos usando variáveis ​​que podem ser alteradas no [.filename]#Makefile# se necessário. Isso é especialmente útil ao compartilhar os mesmos arquivos [.filename]#pkg-*# entre vários ports ou quando é necessário gravar em um desses arquivos. Veja <<porting-wrkdir,escrevendo em lugares que não o `WRKDIR`>> para entender por que é uma má ideia escrever diretamente no diretório que contém os arquivos [.filename]#pkg-*#.

Aqui está uma lista de nomes de variáveis e seus valores padrão. (O valor padrão do `PKGDIR` é `${MASTERDIR}`.)

[.informaltable]
[cols="1,1", frame="none", options="header"]
|===
| Variável
| Valor padrão

|`DESCR`
|`${PKGDIR}/pkg-descr`

|`PLIST`
|`${PKGDIR}/pkg-plist`

|`PKGINSTALL`
|`${PKGDIR}/pkg-install`

|`PKGDEINSTALL`
|`${PKGDIR}/pkg-deinstall`

|`PKGMESSAGE`
|`${PKGDIR}/pkg-message`
|===

[[using-sub-files]]
== Fazendo uso de `SUB_FILES` e `SUB_LIST`

O `SUB_FILES` e o `SUB_LIST` são úteis para valores dinâmicos em arquivos do port, como o `PREFIX` de instalação dentro do [.filename]#pkg-message#.

A `SUB_FILES` especifica uma lista de arquivos a serem modificados automaticamente. Cada [.filename]#arquivo# na lista `SUB_FILES` deve ter um [.filename]#arquivo.in correspondente# presente no `FILESDIR`. Uma versão modificada será criada como [.filename]#${WRKDIR}/arquivo#. Os arquivos definidos como um valor de `USE_RC_SUBR` são automaticamente adicionados ao `SUB_FILES`. Para os arquivos [.filename]#pkg-message#, [.filename]#pkg-install# e [.filename]#pkg-deinstall#, a variável Makefile correspondente é automaticamente definida para apontar para a versão processada.

A `SUB_LIST` é uma lista de pares `VAR=VALUE`. Para cada par, `%%VAR%%` será substituído por `VALUE` em cada arquivo listado em `SUB_FILES`. Vários pares comuns são definidos automaticamente: `PREFIX`, `LOCALBASE`, `DATADIR`, `DOCSDIR`, `EXEMPLESDIR`, `WWWDIR` e `ETCDIR`. Qualquer linha que comece com `@Comment` seguido por um espaço, será excluído dos arquivos resultantes após uma substituição de variável.

Este exemplo substitui `%%ARCH%%` com a arquitetura do sistema em um [.filename]#pkg-message#:

[.programlisting]
....
SUB_FILES=	pkg-message
SUB_LIST=	ARCH=${ARCH}
....

Note que para este exemplo, o [.filename]#pkg-message.in# deve existir no `FILESDIR`.

Exemplo de um bom [.filename]#pkg-message.in#:

[.programlisting]
....
Now it is time to configure this package.
Copy %%PREFIX%%/shared/examples/putsy/%%ARCH%%.conf into your home directory
as .putsy.conf and edit it.
....