Como instalo um aplicativo por arquivo DEB para um único usuário?

32

Ao instalar aplicativos através do centro de software ou por um arquivo DEB, eles geralmente serão instalados em todo o sistema para todos os usuários.

Existe uma maneira de instalar um aplicativo apenas para um único usuário?

    
por Takkat 01.03.2011 / 19:32

6 respostas

5

Dependendo do que você deseja realizar, pode haver maneiras diferentes de fazer isso funcionar (ou pelo menos dar uma aparência hacky da funcionalidade desejada).

A instalação de software de várias maneiras se resume a disponibilizar recursos ou permitir acesso a coisas que já estão presentes no sistema.

Se você está falando sobre conceder acesso a impressoras, ou permitir que um usuário execute programas em um determinado diretório, existem maneiras de fazer isso, e embora eles possam ser nativos do Ubuntu, esses tipos de soluções são geralmente ) será adicionado após o fato de uma instalação .deb.

Aqui estão duas classes gerais de controle de pós-instalação que podem ser adicionadas. Note que, dado o ambiente certo, por exemplo quando uma política de grupo rigidamente controlada estiver em vigor, isso pode ser mais fácil quando você tiver o sistema básico em vigor. Esse tipo de permissão pode até mesmo ser vinculado ao LDAP ou a um sistema semelhante que pode fornecer autenticação e autorização por usuário ou grupo.

Controle de visibilidade
Eu tive uma situação talvez um pouco semelhante, mas no meu caso, os usuários não eram (ainda) muito sofisticados (todos com menos de 7 anos de idade). Para mim, apenas esconder os menus do Gnome e remover os lançadores de desktop funcionou.

Remover o bit executável dos diretórios elimina a capacidade dos processos de pesquisá-los ou percorrê-los. Ele pode efetivamente torná-las invisíveis e, ao usuário, torná-las indisponíveis. Se você tiver uma diretiva de sistema padrão que crie menus com base no acesso a arquivos, por exemplo, você pode obter esse tipo de solução cosmética e, em seguida, fazer com que ela funcione para instalações subseqüentes com pouco esforço adicional.

Controle de execução
O controle do recurso pode ser feito por meio de permissões do Unix, perfis do apparmor, permissões do SELinux e assim por diante. Pode haver outros níveis de filtragem de controle que podem entrar em jogo dependendo da aplicação. Na ausência de soluções mais direcionadas, talvez seja necessário escrever wrappers em torno de determinados programas para controlar o acesso do usuário ou do processo.

    
por belacqua 02.03.2011 / 06:58
10

Bem, dpkg não irá ajudá-lo, já que este não é seu objetivo de design. Ele quer ser um censo único de pacotes instalados em um sistema.

A única coisa que vem à mente é apenas extrair o pacote e tentar colocar os arquivos manualmente no diretório home.

No entanto, isso só funcionará para algumas coisas. Muitos pacotes são divididos em partes (arquivos executáveis ou scripts em /usr/bin , bibliotecas em /lib e outras garb em /usr/share , etc) e esses locais são codificados pelos scripts de compilação. Assim, se você tentar colocar algo assim em ~ , ele será quebrado. Você poderia passar horas desenrolando as dependências, mas você poderia estar fazendo algo útil com seu tempo, como encontrar a cura para o câncer ou absorver um pouco da beleza do mundo.

Você faria muito melhor apenas para pegar uma versão não-embalada de quem escreve o software. Quase todo o software livre está disponível em alguma forma de arquivo compactado como fonte, então pegue isso e simplesmente construa-o. Você não faz a etapa make install . Seu aplicativo foi criado, basta colocá-lo onde você quiser.

    
por Oli 01.03.2011 / 23:42
6

Eu não sei muito sobre esse assunto, mas parece que das outras respostas você pode instalar um pacote em outro diretório em vez de / com dpkg , usando o parâmetro --root , e então faça um chroot para o diretório em que o pacote foi "instalado" (o que pode ser um diretório no diretório home do usuário).

Para instalar um pacote para um usuário diferente de root , talvez seja possível usar o processo acima com fakechroot em vez de chroot .

Aviso de isenção de responsabilidade : eu não tentei isso e não tenho muita experiência no momento em que escrevo com dpkg ou chroot , mas pelo que faço saber sobre essas ferramentas, esse processo só pode funcionar.

Links com informações que podem ser úteis para pessoas que desejam alcançar o efeito de chroot sem recursos de root :

Atualizar

Eu agora fiz um pouco de coisas que tocam neste assunto, e descobri um pouco mais ...

Fragmentos (blocos de construção do ambiente local):

Completo (provedores de ambiente locais completos):

  • Modo de usuário linux - roda outro sistema linux como um processo / programa regular
  • Qemu - Execute um computador virtual completo
  • PRoot - Fornece funcionalidades de chroot(1) , mount --bind , binfmt_misc e execução de binários de outras arquiteturas usando qemu- espaço do usuário
  • Espaços para nome do Linux - Permite ter raiz completa dentro de um ambiente local, ao usar namespaces de usuário , um recurso que está disponível nas versões 3.8 e posteriores do kernel Linux.

Resumo : Ao emular ou ter privilégios de root localmente, os pacotes DEB podem ser instalados para um ambiente local.

    
por Abbafei 02.03.2011 / 03:25
4

Você provavelmente pode usar a opção --root de dpkg para instalar em outro diretório. Mas provavelmente terá problemas se o aplicativo procurar por coisas em lugares fixos como /etc .

Em suma, não acho que haja um caminho fácil.

    
por Dariel Dato-on 01.03.2011 / 19:44
2

Você pode alterar a propriedade do arquivo executável para que apenas um usuário possa executá-lo. Em seguida, se necessário, você poderá remover o aplicativo dos menus de outros usuários.

    
por arrange 01.03.2011 / 20:01
1

Duvidoso.

Os deb's são principalmente archives que são extraídos para a raiz do seu sistema de arquivos quando instalados (além de algumas configurações). Se você quisesse instalá-los apenas para um usuário, seria necessário instalá-los de alguma forma na pasta / home / user. Mesmo se você fizesse isso, eles não funcionariam, como por exemplo. os binários da aplicação não vão parar em / usr / bin (ou sth similar), e o sistema não os encontrará se você tentar iniciá-los. Da mesma forma, bibliotecas etc. seriam inúteis, pois o sistema não saberia que há algum lugar no / home. Você poderia tentar a abordagem de força bruta , e ajustar a variável PATH para apontar para onde você extraiu os arquivos do arquivo deb, mas isso não seria apenas MUITO inseguro, mas pode causar problemas de compatibilidade (as entradas do menu não funcionariam, já que o GNOME extende os arquivos .desktop para que estejam em / usr / share / applications).

Além disso, se você instalou um pacote apenas para alguns usuários, ele pode causar problemas de dependência, se qualquer outro pacote instalado em um usuário entrar em conflito com outro que você instalou apenas para você - e possivelmente muitos outros problemas relacionados ao gerenciamento de pacotes apareceria.

Todos esses problemas tornam extremamente difícil gerenciar pacotes separadamente para os usuários, então parece que não é possível instalá-los apenas para um usuário, porque a idéia por trás do .debs não permite isso.

    
por Rafał Cieślak 01.03.2011 / 19:47