zypper, como instalar um pacote no diretório local ~ / bin

1

Como instalo um pacote no meu diretório ~/bin usando zypper ? Eu baixei o pacote pela primeira vez como root e tentei instalá-lo como não-raiz, mas dessa forma ele se depara com problemas de dependência.

# zypper in --download-only wireshark
...
$ zypper -R /home/ec2-user/bin in /var/cache/zypp/packages/SMT-http_smt-ec2_susecloud_net:SLE11-SDK-SP3-Updates/rpm/x86_64/wireshark-1.10.11-0.2.1.x86_64.rpm
Loading repository data...
Reading installed packages...
Resolving package dependencies...

Problem: nothing provides libadns.so.1()(64bit) needed by wireshark-1.10.11-0.2.1.x86_64
 Solution 1: do not install wireshark-1.10.11-0.2.1.x86_64
 Solution 2: break wireshark-1.10.11-0.2.1.x86_64 by ignoring some of its dependencies

Existe alguma opção zypper semelhante a --prefix? BTW eu só quero a função de análise de tshark . Obrigado.

    
por Dinesh 05.12.2014 / 01:16

3 respostas

2

Resposta curta é que você não faz. Eu não encontrei um jeito depois de ler as man pages, a seção de ajuda ou o site.

O que você pode fazer é baixar o rpm e instalá-lo em um diretório diferente.

Você deve conseguir fazer isso com o seguinte:

zypper in --download-only wireshark
rpm --prefix=/home/ec2-user/ -ivh /var/cache/zypp/packages/SMT-http_smt-ec2_susecloud_net:SLE11-SDK-SP3-Updates/rpm/x86_64/wireshark-1.10.11-0.2.1.x86_64.rpm

Não me pergunte por que, eu acho que isso tem algo a ver com o banco de dados interno do zypper e lidar com distro-upgades.

    
por 05.12.2014 / 02:07
1

Referindo-se ao manual, zypper tem uma opção --root :

-R, --root 
       Operates  on  a different root directory. This option influences
       the location of the repos.d directory  and  the  metadata  cache
       directory  and  also causes rpm to be run with the --root option
       to do the actual installation or removal of packages. Note  that
       the  ZYpp  lock is still created in the original system, as well
       as temporary files. See also the FILES section.

que implementa usando a opção --root de rpm . De acordo com essa página de manual :

--root DIRECTORY

    Use the system rooted at DIRECTORY for all operations. Note that
    this means the database will be read or modified under DIRECTORY
    and any %pre or %post scriptlet(s) are run after a chroot(2) to
    DIRECTORY. 

Em outras palavras, --root altera a localização do banco de dados RPM, mas não tem efeito sobre onde o pacote seria instalado.

Como zypper não possui suporte documentado para realocar um pacote, considere fazer o download dele. De volta ao seu manual:

-d, --download-only
       Only download the packages for later installation.

e

/var/cache/zypp/packages
       If  keeppackages property is set for a repository (see the modi-
       fyrepo command), all the RPM file downloaded during installation
       will be kept here. See also the clean command for cleaning these
       cache directories.

Alguns pacotes honram a opção --prefix , tornando-os relocáveis. Estas são mais uma exceção do que uma regra. A maioria dos pacotes não são relocáveis. Se este for um desses, você pode usar rpm2cpio para descompactar os arquivos em um diretório de sua escolha.

Leitura adicional:

por 11.04.2016 / 02:00
0

O zypper tem a opção --root <dir> , que corresponde a --prefix , conforme solicitado por você. No entanto, considere também a resposta da SailorCire

    
por 31.10.2015 / 13:41