Por que os gerenciadores de pacotes não têm instalações e registros por usuário?

23

Tanto o Apt quanto o DNF / Yum, os dois esquemas de gerenciamento de pacotes mais populares para distribuições Linux, suportam apenas a instalação de pacotes em todo o sistema: arquivos pertencentes ao root, binários entram (/usr)?/s?bin, configurações entram /etce assim por diante.

No entanto, em sistemas nos quais existem vários usuários individuais que não têm privilégios de root, muitas vezes - se não sempre - acontece que um usuário deseja instalar alguns aplicativos ou utilitários disponíveis para essa distribuição; e ele está bem com uma instalação pessoal e incomum para muitos / todos os usuários.

Agora, não parece uma idéia absurda ou até incrivelmente complicada que os pacotes sejam adaptáveis, no momento da instalação, com um diretório raiz ou conjunto de diretórios raiz diferente, para que os usuários possam fazer isso. Também não é um problema gerenciar um registro específico de usuário de pacotes instalados (se um usuário individual tem ou não seu próprio banco de dados de pacotes).

Então, por que essa funcionalidade não foi adicionada a esses sistemas / esquemas comuns de gerenciamento de pacotes?

Nota: Esta é uma pergunta informativa, ou seja, estou perguntando sobre o que as pessoas sabem sobre o passado , e não o que as pessoas pensam sobre esse recurso.

einpoklum - restabelece Monica
fonte
3
Se tivesse sido fornecido, pouparia muito do meu tempo compilando software da fonte em computadores que não tenho privilégios de superusuário. Estou ansioso para saber a resposta.
Weijun Zhou
1
É certo que meu conhecimento sobre isso não é o maior, mas poderia ter sido feito para impedir que os usuários preenchessem os discos rígidos com as dependências do software que instalaram pessoalmente. Se o apt não for executado como root, ele não poderá atualizar as bibliotecas do sistema; portanto, o usuário agora possui uma versão mais nova que o sistema. Repita o procedimento para todos os usuários e discos rígidos menores e mais antigos estaria enchendo muito rapidamente.
Thegs
1
@ Thegs: duvido que essa tenha sido a consideração. Poucos projetos de software evitam recursos significativos devido a considerações como "se as pessoas fizessem isso, elas encheriam sua unidade de disco". Se fosse algum tipo de risco à segurança, talvez. Além disso, em sistemas multiusuário, haveria cotas; e poucas pessoas jamais usariam isso de qualquer maneira. Além disso, isso é tudo especulação ...
einpoklum - restabelece Monica
2
Resumindo: não é tarefa do gerente de pacotes do sistema mexer nos dados do usuário. ~ / bin, ~ / lib, etc são, do ponto de vista do sistema, "dados do usuário".
cas
1
Eu vi alguns pacotes distribuídos via pip, npme gopkg- parcialmente porque eles são-distro independente e parcialmente porque eles geralmente permitem a instalação específica do usuário.
29417 Bob

Respostas:

15

Embora os gerenciadores de pacotes comuns não tratem desse caso de uso, existem vários projetos que fazem isso:

Meu melhor palpite sobre por que os gerenciadores de pacotes tradicionais não abordam esse caso de uso é que isso complica muito o processo de criação e instalação de pacotes, pois os mantenedores de pacotes precisam ter muito cuidado para garantir que seus pacotes suportem corretamente um diretório de instalação dinâmico. De fato, muitos formatos comuns de pacotes, como o RPM, oferecem suporte a um diretório de instalação dinâmico, mas quase nenhum mantenedor tira proveito desse recurso ao criar pacotes devido à alta sobrecarga adicional.

jayhendren
fonte
Então, o RPM suporta isso, mas, digamos, o dpkg não?
einpoklum - reinstala Monica
1
Não sei sobre o dpkg para ser sincero, pois nunca criei pacotes .deb. Eu acho que o dpkg suporta diretórios de instalação dinâmica, mas duvido que muitos mantenedores de pacotes .deb o façam.
Jayhendren #
Outra coisa ... eles normalmente são construídos a partir do zero, iniciados ou dependem do que está instalado no nível do sistema?
einpoklum - reinstala Monica
1
O gerenciamento de pacotes em todo o sistema assume que nada está disponível se não o tiver instalado, portanto, procurar dependências em termos de arquivos é equivalente a procurar dependências em termos de pacotes instalados que contêm esses arquivos. Mas com um gerenciador de pacotes secundário, existem os pacotes / arquivos em todo o sistema e os pacotes / arquivos específicos do usuário. Os gerenciadores de pacotes geralmente dependem apenas do que foram baixados e / ou construídos?
einpoklum - reinstala Monica
2
Depende. Aqueles que compilam a partir de fontes como Homebrew e Emerge geralmente apenas tentam criar o pacote sem muito rastreamento de dependência. Outros empacotam dependências com os pacotes (é assim que a maioria das ferramentas de estilo da App Store funciona, além do Flatpak e Snaps). Outros, como o Zero Install, instalam todas as dependências como pacotes individuais no nível do usuário.
Jayhendren #
6

Então, por que essa funcionalidade não foi adicionada a esses sistemas / esquemas comuns de gerenciamento de pacotes?

Porque aumenta a complexidade do gerenciamento de sistemas além do necessário.

Elshar
fonte