Usando um diretório diferente de / usr como padrão

1

Existe alguma possibilidade de usar um diretório diferente de /usr como o diretório padrão para instalar coisas? Eu estou perguntando, desde que eu tenho um sistema OS Endless, onde /usr é somente leitura, portanto, não ser capaz de fazer as coisas do jeito "padrão".

Em outras palavras: Existe uma maneira de criar outra pasta, digamos no meu diretório pessoal (vamos chamá-la de " user "), e "s hare " todos os comandos e dependências entre /usr e /home/user ? Então, por exemplo, quando eu quiser instalar o perl-tk no diretório /home/user -, posso fazer uso dos pacotes perl já instalados na pasta /usr/whatever durante a instalação?

Eu não posso mudar /usr (existe uma maneira com uma sobreposição, no entanto pela atualização do sistema, essas mudanças se foram), então eu preciso de alguma forma "trabalhar fora", mas de alguma forma "link" ainda. / p>

Mudar o sistema seria uma opção óbvia, mas também apenas eludir o desafio;)

    
por Osmium_Dresden 06.04.2018 / 20:10

2 respostas

5

Pode ser que Endless OS não seja a ferramenta certa para conseguir o que você deseja. Na página do Endless OS Developer ,

Endless OS

Not your typical Linux distribution. We don’t use rpm, apt, or any other packaging system. We use a read-only root file system managed by OSTree with application bundles overlaid on top. We have a different target user. Most desktop Linux distributions are oriented towards tech-savvy users and developers. Simplicity is the key, so we carefully pick and choose the best applications available for our users. A number of core technologies underlie our OS, in particular the Linux kernel, OSTree, systemd, GNU, X, GNOME, and Xapian.

    
por 06.04.2018 / 20:27
2

Sim, é possível instalar software em diretórios diferentes de /usr .

Um exemplo (todo o sistema) é /usr/local . (O que talvez ainda não o ajude diretamente, pois seu /usr é somente leitura.) O diretório /usr/local corresponde a /usr em seu layout (tem /bin , /lib etc.). Na maioria dos casos, Ele é usado para distinguir pacotes enviados como parte de seu SO base (que entrará em /usr ) daqueles instalados a partir da origem pelo administrador systemd (que entrará em /usr/local .)

Há também /opt , que serve para instalar pacotes em diretórios separados por pacote. Então, por exemplo, você poderia instalar o Perl 6 lá sob /opt/perl6 e isso só conteria Perl e nada mais. Você manteria diretórios separados para os pacotes separados, o que geralmente torna mais fácil "desinstalar" um pacote simplesmente removendo seu diretório. Você geralmente precisa definir $PATH apropriadamente para acessar os programas instalados lá, ou criar links simbólicos em algum outro diretório bin que já esteja em $PATH para acessá-los. O gerenciamento de /opt é normalmente destinado ao administrador, e considerando que você precisa atualizar $PATH para cada pacote instalado, pode não ser a melhor opção ...

Para instalar o software no diretório $HOME , uma abordagem possível é criar um subdiretório .local na parte superior dele e corresponder à hierarquia /usr ou /usr/local .

Então, talvez tente isso:

mkdir ~/.local

E, em seguida, use-o como --prefix ao instalar um novo pacote. Por exemplo, se o pacote usa um script de configuração no estilo autoconf, você pode construir e instalá-lo usando:

./configure --prefix="$HOME/.local"
make
make install

Você precisa adicionar ~/.local ao seu $PATH para poder acessar os programas. Então faça isso no seu ~/.bashrc :

PATH=$HOME/.local:$PATH
export PATH

Abra um novo shell (novo terminal, ou efetue logout e login novamente) para que a alteração tenha efeito. Ou apenas execute o mesmo comando no seu shell existente. Você deve ser capaz de executar os programas a partir de ~/.local/bin direcly agora.

Espero que isso ajude a responder sua pergunta ou, pelo menos, direcione você na direção certa!

    
por 06.04.2018 / 20:20