Descontinuando pacotes

Sometimes a package is intended to be removed from Fedora, but it is kept in Fedora for some additional (often indeterminate) time for various reasons including maintaining backwards compatibility. In order to prevent new packages from depending on such a package, it can be marked as deprecated.

Pré-requisitos para descontinuação

Se nada no Fedora depende de um pacote, um mantenedor pode descontinuá-lo quando quiser. Um mantenedor (ou coleção de mantenedores) também pode descontinuar um conjunto de pacotes juntos se nenhum pacote naquele conjunto for uma dependência de qualquer pacote fora desse conjunto.

Se um pacote é uma dependência de outros pacotes na distribuição (que não devem ser descontinuados), então a descontinuação requer uma alteração no Fedora aprovada pelo FESCo. Um empacotador DEVE comunicar a descontinuação do pacote a outros mantenedores, de preferência através das listas de discussão devel ou devel-announce.

Marcando um pacote como descontinuado

Para marcar um pacote como descontinuado, um recurso virtual especial é adicionado:

Provides: deprecated()

Se o pacote tem subpacotes e o empacotador pretende descontinuar o pacote como um todo, o empacotador DEVE marcar todos os subpacotes como sendo descontinuados.

Name:      pacoteprincipal
...
Provides:  deprecated()

...

%package subpacote
...
Provides:  deprecated()

Alternativamente, um empacotador PODE decidir descontinuar apenas alguns subpacotes.

Um empacotador DEVE adicionar um comentário nas especificações explicando porque um pacote está sendo descontinuado. Por exemplo:

# net-tools (ifconfig etc.) have been obsoleted for ~20 years upstream.
# We want to get rid of it from Fedora in favor of the iproute package,
# however many sysadmins still expect ifconfig to be there, so we keep it
# around as a deprecated package.
Provides:  deprecated()

Se a data para a remoção final do pacote da distribuição for conhecida, PODE ser incluída da seguinte forma:

Provides:  deprecated() = YYYYMMDD

O "provide" especial deprecated() NÃO DEVE ser adicionado em nenhum branch lançado do Fedora. É aceitável descontinuar pacotes em rawhide (o branch master), o branch de uma próxima versão do Fedora (se houver) até o momento de Freeze Final, e para branches EPEL (a qualquer momento). Observe também que, como os pacotes podem existir em um estado descontinuado por algum tempo, eles podem eventualmente entrar nos branches de lançamento. A restrição está na adição inicial da tag deprecated().

Consequências de um pacote ser descontinuado

Tecnicamente, nada muda; um pacote obsoleto funciona e se comporta como antes. No entanto, outros pacotes no Fedora NÃO DEVEM adicionar uma dependência a um pacote descontinuado (que inclui Requires, BuildRequires, Recommends, Suggests, etc.). Isso se aplica tanto para atualizações de pacotes existentes quanto para novos pacotes adicionados ao Fedora. Aqueles que enviam novos pacotes, junto com os revisores de pacotes, DEVEM verificar se alguma dependência do pacote que estão enviando ou revisando foi descontinuada. (No entanto, é aceitável que um pacote descontinuado seja renomeado.)