Programas são pacotes?

Já uso Linux há um tempo, mas essa dúvida é bem iniciante então resolvi colocar por aqui…

Estava pensando aleatoriamente hoje enquanto lavo a louça (meu momento de filosofar) e me surgiu essa dúvida: é correto dizer que todos os programas em Linux são pacotes?

Porque uma vez utilizando um comando no terminal, o qual não lembro agora, fui capaz de listar todos e ainda pesquisar alguns pacotes em específico, como no caso de todos os que possuíam “libre” no nome. Então fiquei pensando se é correto dizer que um programa é uma junção de pacotes.

Além disso, se eu quero digamos que desinstalar um programa de maneira forçada e completa, poderia simplesmente remover todos os pacotes onde este programa é “citado” via terminal e tudo funcionaria sem problema algum?

1 curtida

De forma geral sim, a maioria são pacotes, mas tem alguns que podem não ser, pois não vai ser contado como um pacote, tipo o DaVinci Resolve

2 curtidas

Eu não diria que os programas são pacotes, mas que os pacotes são as “embalagens” para os programas.

Os programas são empacotados em determinados formatos (.deb, .rpm, flatpak, snap, etc…), e dessa forma são distribuídos entre as distros.

Então pacotes e programas não são a mesma coisa, pacotes são a forma com que os programas são distribuídos. Os programas que você instala através da compilação, por exemplo, não estão empacotados em nenhum formato. Por isso precisam ser compilados manualmente para serem instalados na sua máquina. Pacotes podem conter mais de um programa dentro deles. Alguns possuem também inclusas no mesmo pacote as dependências para os programas em questão. E assim por diante.

Basicamente, os programas estão dentro dos pacotes.

7 curtidas

O @Jedi_Fonseca explicou bem, mas acho que ainda faltaram alguns detalhes…

Acho que a pergunta certa seria: Por quê programas vem dentro de pacotes?

Os binários, que são os programas efetivamente, nem sempre podem ser executados de forma autônoma, ou seja, sem a necessidade de arquivos de configuração ou bibliotecas de acesso à determinados serviços e informações, por esse motivo, os programas são empacotados junto com esses arquivos todos, dentro de um formato desses que o Jedi citou.

Outro motivo pros programas serem empacotados é para que haja padronização na localização dos arquivos dentro do sistema de arquivos da sua distro, ou seja, todos os binários vão pra uma determinada pasta(/usr/bin) e as bibliotecas que vem com eles vão pra outra pasta(/usr/lib) e por aí vai.

Claro, eu estou citando só exemplos de informações relacionadas aos pacotes, cada tipo de empacotamento tem seus respectivos caminhos e padrões.

6 curtidas

Resposta curta:

Não


Resposta longa:

Primeiro você precisa entender que pacotes são qualquer forma de agrupar arquivos, por exemplo arquivos ZIP são um tipo de pacote, quanto a softwares existem basicamente dois tipos:

standalones

São programas que basta apenas o executável por si só, geralmente os programas standalone são CLI, no linux eu não conheço nenhum software standalone GUI, ouvocê não precisa de nenhum programa ou biblioteca pra funcionar, como exemplo eu posso citar o Nano

softwares dependentes

Ao contrario dos standalones esses programas possui as chamadas “dependências” programas assim precisam de várias bibliotecas para funcionar


Pra você não ter dor de cabeça os softwares dependentes passaram a ser distribuídos em pacotes especiais que só podem ser extraídos (ou seja, instalados) se outro pacote que o software depende tiver sido extraído e assim sucessivamente, ou seja o conteúdo do pacote são partes do software (ou o software inteiro se for stand alone), atualmente Snaps (parcialmente) e AppImages trazem para os softwares dependentes uma funcionalidade próxima a dos standalones transformando o software em apenas um único pacote auto executável

1 curtida

Acho que talvez valha adicionar aqui uma discussão que vi num vídeo de uma conferência do Debian, num coiso daqueles que ficaram mandando pergunta pro chefe (Linus).

No momento (isso era em 2014, mas ainda vale) não existem “arquivos executáveis” pra GNU/Linux, existem pacotes que carregam flags de uso, flags de compilação, dependências e binários, existem executáveis em windoes e maq, mas nós ainda não desfrutamos disso.

Basicamente usamos todos o mesmo kernel, o Linux, mas cada distribuição (que não deve ser chamada de “Linux” em si, mas de distribuição/distro) é uma coleção de pacotes e utilitários afinada pra um certo público. Pra você ver tem o Debian que é o mais “hardcore” no quesito Software Livre, que não inclui nenhum proprietário na versão básica (existe a possibilidade mas já é o usuário fazendo), até o próprio Ubuntu, Manjaro, que na hora da instalação te deixam escolher se quer apenas livre ou proprietário também.

E cada distribuição vai precisar de flags e dependências específicas, por isso a dificuldade de ter um “executável” no nosso ecossistema. Os flatpaks e appImages estão aí pra tentar mudar isso mas ainda vai ser um longo caminho.

1 curtida

Entendi!!

Faz muito sentido mesmo, o próprio nome ‘pacote’ já dá uma dica do que seja então…

Valeu pelas respostas, galera!!

1 curtida

Não é bem assim, no OS X é a mesma coisa você precisa dar permissão de execução, pacotes autorxecutaveis seriam como os sfx mas não tem motivos (eu acho) pra existir