De minha pesquisa, pareço perceber que todos os gerenciadores de pacotes insistem em serem usados como usuários privilegiados e devem ser instalados /
.
Normalmente, o que eu gosto de fazer é criar uma conta descartável, compilar algum software e instalar $HOME
nessa conta. Posso experimentar várias configurações e, quando terminar, apenas destrua a conta.
No entanto, compilar software se torna tedioso.
Minha experiência é realmente apenas limitada a yum
, mas não entendo por que não seria possível soltar um arquivo de repo ~/etc/yum.repos.d
e fazer com que yum instalasse tudo em uma conta doméstica.
Existe alguma razão pela qual os gerenciadores de pacotes devem ser usados como um usuário privado para instalar o software?
/bin
) ou pode assumir que ele está instalado no local especificado pelo --prefix. Embora o último possa ser contornado por esses projetos, o primeiro requer correções no código fonte./
Isso soa como um requisito que poderia ser justificado talvez 30 anos atrás, mas não agora. Por exemplo, oenv
programa não pretende solucionar esse tipo de problema? Caso contrário, é fácil criar um esquema para configurar qualquer binário para procurar outros binários em locais específicos./etc
ou (de acordo com o meu conhecimento)/usr/lib/<packagename>/
ou/usr/libexec/<packagename>/
./usr/share
pode ser alterado por variáveis XDG que foram lançadas em algum momento deste século e não são necessariamente adotadas para programas mais antigos.Há um projeto de gerenciador de pacotes - Nix - com uma ideia fundamental interessante (um gerenciador de pacotes " funcional "), que também suporta uma operação por usuário:
UMA NOTA QUE EU QUERO ADICIONAR:
Nix
deve ser utilizável em um sistema semelhante ao Unix de sua escolha (por exemplo, uma distribuição Linux).Também há uma grande coleção de pacotes associados que podem ser instalados com o gerenciador de pacotes Nix - Nixpkgs --built para várias plataformas :
e uma distribuição associada-- NixOS :
e um sistema de construção "contínuo" associado - Hydra .
fonte
nix
eguix
. Como agora estou realmente usandonix
meu trabalho, quero saber se posso considerarguix
outra implementação da ferramenta necessária. Posso ler um resumo das diferenças em algum lugar? Talvez você possa até escrever uma resposta com esse resumo aqui, anunciando mais uma solução alternativa?Primeiro de tudo, é devido a dependências. Alguns pacotes podem não ser instalados pelo PolicyKit, como o usuário. Portanto, seria necessário um encargo adicional para o empacotador que doar seu tempo livre e geralmente instalar o programa é tão fácil quanto digitar
sudo
(estação de usuário único) ou administrador persistente.Existem opções para instalação no $ HOME
./configure --prefix=$HOME/sandbox --enable-cool-feature && make all install
(ou variedades como jhbuild).fonte
Eu uso o JuJu, que basicamente permite ter uma distribuição linux realmente minúscula (contendo apenas o gerenciador de pacotes) dentro do diretório $ HOME / .juju.
Ele permite que seu sistema personalizado dentro do diretório inicial seja acessível via proot e, portanto, você pode instalar qualquer pacote sem privilégios de root. Ele será executado corretamente em todas as principais distribuições Linux, a única limitação é que o JuJu pode ser executado no kernel Linux com a versão mínima recomendada 2.6.32.
fonte
Outro com um modelo bastante diferente é o 0install . É baseado na idéia de que você realmente não instala pacotes, mas apenas os executa a partir de um espaço de nomes global que baixa, compila, se necessário, e armazena em cache o software que você deseja usar.
fonte
Se você está bem com a compilação a partir da origem e a resolução de dependências, querendo principalmente que o gerenciador de pacotes lide com as operações de implantação / remoção da implementação / atualização, você pode dar uma olhada no GNU Stow ou no XStow um pouco aprimorado . Com eles, você prepara a instalação para um diretório separado (normalmente abaixo
$PREFIX/stow
) e, em seguida, armazena links simbólicos para o software a partir do seu prefixo real. Isso facilita a remoção completa do software. Uso-o com êxito para gerenciar meu software instalado na minha universidade.fonte
Os principais gerenciadores de pacotes do Linux veem o mundo como um administrador de sistemas ... onde a máquina é uma entidade única. Isso permite que você obtenha respostas para perguntas como "quais erratas pendentes se aplicam ao sistema X" e "como o sistema X e o sistema Y diferem". Isso também permite que o yum tenha "um histórico" que seja utilizável, tenha versões rpmdb e faça coisas como "yum --security update" etc.
Existem alguns gerenciadores de pacotes, como a instalação zero, que tentam ver o mundo como um usuário faria ... ie. o que aplicações fazer eu ter acesso.
Você pode pensar que o posterior é um modelo melhor, mas IMNSHO há um motivo pelo qual você nunca ouviu falar de instalação zero, mas ouviu falar do yum.
fonte
Há um garoto novo no bloco: " JuNest ( Jailed User NEST) - a distribuição baseada no Arch Linux que roda em qualquer distribuição Linux sem acesso root." @ https://github.com/fsquillace/junest O Advantage é que ele não introduz um novo tipo de formato de pacote; portanto, após uma instalação muito fácil (no mínimo: cerca de 320 milhões), o repositório completo do Arch Linux (mais de 13.000 pacotes ATM) está ao seu alcance.
fonte
As ferramentas usadas pelo Slackware, especificamente
installpkg
, podem. Na página do manual:No entanto, eu não conheço nenhuma das melhores interfaces que são capazes de fazer isso (por exemplo
slapt-get
, tanto quanto eu sei, não é possível). Teoricamente, você deve ser capaz de criar um aliasinstallpkg
parainstallpkg --root ~/Apps
- no entanto, acho que a maioria dos frontends exige root para executar, o que derrota o ponto.fonte
Eu sugiro http://linuxbrew.sh/
É basicamente uma bifurcação para o macOS e possui binários pré-compilados para uso ...
Especialmente bom para lidar com versões mais antigas do gcc.
Se você realmente deseja instalar manualmente, um guia útil é http://www.linuxfromscratch.org/
fonte
O Yum precisa gravar no banco de dados, que é próprio da raiz. Por isso, você não pode usá-lo como um usuário normal.
Você pode tentar descompactar arquivos rpm (rpm2cpio package.rpm | cpio -idmv) dentro de um diretório de sua escolha.
Porém, quando você executar o seu programa, precisará modificar o LD_LIBRARY_PATH para carregar as bibliotecas dependentes. Além disso, isso não cuidará de nenhuma dependência.
Exemplo:
O acima não tem bibliotecas dependentes, caso contrário você teria que usar algo como:
fonte