Ignorando dependências ao instalar com o yum (Scientific Linux)

2

Como posso ignorar as dependências de um único pacote que estou tentando instalar usando yum no Scientific Linux? A resposta seria presumivelmente a mesma para o CentOS / RHEL.

Para elaborar, estou procurando obter o utilitário lsb_release , que eu sei que seria colocado em /usr/bin/lsb_release . O comando yum whatprovides /usr/bin/lsb_release me diz que faz parte dos redhat-lsb packages (para as arquiteturas respectivas), mas eles têm um monte de dependências, incluindo algumas relacionadas ao X11.

Como estou apenas após o programa lsb_release , gostaria de evitar o "crud" que vem com as dependências. Como posso conseguir isso?

    
por 0xC0000022L 15.02.2013 / 18:19

2 respostas

1

Você não pode. A instalação do material X provavelmente não tem sentido, a menos que você tenha uma pequena quantidade de armazenamento e todas as contagens de MB, ou se incluir um DE inteiro (o que provavelmente não faz), pois isso pode incluir alguma configuração de sistema que você não deseja.

Se você ainda não quer seguir esse caminho, você deve ser capaz de encontrar um .rpm apropriado (você pode ser capaz de usar o yum para obter o do repositório sem uma instalação, veja aqui ; eu não tentei isso e não sei se dependências serão um incômodo; a coisa mais fácil pode ser apenas use rpmfind . Você pode então descompactar o rpm usando rpm2cpio e instalar o binário lsb_release você mesmo; verifique primeiro com ldd lsb_release para garantir que as bibliotecas necessárias estejam disponíveis. Também pode haver outras pequenas peças na rpm que você precisa.

Já existem explicações do rpm2cpio online, por isso não vou repetir tudo isso. Se você usar o mc filebrowser, poderá usá-lo em vez de rpm2cpio - ele permitirá que você navegue pelo interior de um rpm da mesma maneira que faria com um arquivo tarball ou zip.

    
por 15.02.2013 / 18:59
2

Com base nas dicas da resposta de Cilindros Dourados, eu criei este pequeno script que faz exatamente o que eu quero e não mais. Ele foi escrito e testado no Scientific Linux 6.3, mas pode funcionar em outros derivados do RHEL. Eu nomeei o script redhat-lsb.sh (como não criativo).

#!/usr/bin/env bash
WKPKG=redhat-lsb
WKDIR=$HOME/$WKPKG
[[ -d "$WKDIR" ]] && [[ "x$1" != "x-f" ]] && { echo "ERROR: not removing $WKDIR. Use -f to force it."; exit 1; }
(
    [[ -d "$WKDIR" ]] &&  rm -rf "$WKDIR"
    mkdir "$WKDIR" && \
        cd "$WKDIR" && \
        yumdownloader $WKPKG && \
        cd / && \
        rpm2cpio "$WKDIR"/redhat-lsb-*.$(uname -m).rpm | cpio -idmv
) && rm -rf "$WKDIR"

Chame como sudo ./redhat-lsb.sh ou sudo ./redhat-lsb.sh -f (o último remove o diretório de trabalho, se já existir).

O que isto faz é:

  1. usa uma pasta $HOME/redhat-lsb para trabalhar.
  2. usa yumdownloader para baixar o pacote.
  3. usa o globo de concha para escolher o% correto.rpm: redhat-lsb-*.$(uname -m).rpm
  4. muda para / porque é aqui que queremos instalá-lo
  5. usa rpm2cpio para descompactá-lo para stdout
  6. cpio pega e descompacta no diretório atual (essa é a etapa que requer sudo )
  7. finalmente remove a pasta de trabalho

E depois disso, grande sucesso ... funciona ... sem todas as dependências:

$ lsb_release -a
LSB Version:    :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: Scientific
Description:    Scientific Linux release 6.3 (Carbon)
Release:        6.3
Codename:       Carbon

Acontece que o pacote em si contém apenas um único executável vinculado estaticamente. O resto são scripts de shell e dados.

    
por 15.02.2013 / 19:42

Tags