Software instalado a partir da fonte, como dizer yum para não instalá-lo no pacote?

14

No CentOS 7, instalei a versão 2 do foobar , compilada a partir de fontes.

Como posso informar o yum dessa instalação para que não instale o foobar versão 1 por dependência?


Instalação de foobar

$ git clone https://example.com/foobar.git
[...]
$ cd foobar
$ make && sudo make install
[...]
$ foobar --version
foobar v2

Instalação de um pacote que requer foobar

$ sudo yum install baz
[...]
---> Package baz.x86_64 0:3.14.15-9 will be installed
--> Processing Dependency: foobar >= 1 for package: baz-3.14.15-9.x86_64
[...]
Dependencies Resolved

==============================================================
 Package           Arch      Version      Repository   Size
==============================================================
Installing:                  
 baz               x86_64    3.14.15-9    example      1.1 M
Installing for dependencies: 
 foobar            x86_64    1.0.0-0.el7  example      4.5 M

Eu gostaria de saber yum foobar 2 está instalado e desde baz requer foobar >= 1ou simplesmente foobar, foobar-1.0.0-0.el7.x86_64.rpm não deve ser instalado.

YSC
fonte
1
Possível duplicado de make dependências rpm encontrar em um local específico
Chris Maes

Respostas:

27

"Instalei o foobar versão 2, compilado a partir de fontes"

Faça um esforço extra ao adicionar software personalizado ao seu sistema e empacote suas adições em um RPM . Consulte Martin Streicher, 12-01-2010, Construindo e distribuindo pacotes , IBM, sobre como fazer isso.

Em seguida, instalar esse RPM resultando por isso pode e vai jogar bonito com a manipulação de conflito e dependência do seu gerenciador de pacotes, atualizar os procedimentos de downgrade e remoção e relatórios de segurança.

HBruijn
fonte
10

Outra opção (embora definitivamente não seja a melhor resposta): crie um arquivo rpm fictício com o nome em questão.

Você precisará rpmbuildinstalado e um tarball fictício.

mkdir ~/rpmbuild/{RPMS,SOURCES}
touch empty.txt
tar -zcf ~/rpmbuild/SOURCES/example.tar.gz empty.txt

Escreva o arquivo de especificação fictícia. Este funciona para mim no Fedora 29. Também deve ser bom no CentOS 7.

Name:           example
Version:        0.0.0
Release:        1%{?dist}
Summary:        Dummy package

Group:          Dummy
License:        CC-BY-SA 3.0
URL:            http://example.com
Source0:    example.tar.gz
BuildArch:  noarch

#BuildRequires:
#Requires:

%description
Dummy for example

%prep
:

%build
:

%install
:

%files
%doc

%changelog

Ajuste o nome do pacote e o número da versão conforme necessário e, em seguida, crie o pacote.

rpmbuild -ba example.spec

O arquivo rpm "binário" de saída será ~/rpmbuild/RPMS/noarch/example-0.0.0-1.fc29.x86_64.rpm

bgStack15
fonte
6

Não é assim que rpmfunciona.

rpmusa um banco de dados onde armazena quais rpms estão instalados no sistema. Se você instalar alguns arquivos manualmente, rpmnão o saberá.

A melhor maneira de resolver isso é instalar o foobar 2 com uma rpm. Outras soluções seriam apenas alternativas e não funcionariam a longo prazo.

Chris Maes
fonte
5
Você não pode substituir manualmente uma verificação de dependência? Porque parece que é assim que se resume, o que o OP quer.
Mast
Sim, pode, mas então você substituir todas as verificações de dependência ... E você terá que atualizar problemas depois
Chris Maes
3

Pode rpm --nodepsser a resposta que você está procurando? Foi discutido em um tópico mais antigo aqui no Serverfault.

( diga ao yum para ignorar uma única dependência )

Mikael H
fonte
5
Isso pode levar a problemas futuros e, basicamente, apenas adia o problema. Ao atualizar o sistema ou instalar outro pacote posteriormente, pode acontecer que alguns pacotes desejem extrair o foobar 1 como uma dependência, possivelmente substituindo o foobar 2 construído e instalado manualmente e causando problemas de compatibilidade.
Jiri Valenta