Eu preciso de um pacote para minha versão do RHEL/EPEL/CentOS/Fedora, mas só está empacotado para outras versões do Redhatoids
772
Muitas vezes estou na situação em que faço backport de algum software empacotado no Fedora para o CentOS, ou encaminhei algo de uma versão mais antiga do EPEL para o Fedora, ou vice-versa.
Ótimo, neste momento temos tudo o que precisamos para construir pacotes! Vamos ao guile22site distgit como encontramos com a busca, e clique no botão "clone"; somos apresentados ao URL https://src.fedoraproject.org/rpms/guile22.git.
pkgname=guile22
# clone the distgit
git clone "https://src.fedoraproject.org/rpms/${pkgname}.git"
cd "${pkgname}"
## Ask dnf to install build dependencies
### if this fails, read diligently – packages might have changed names and you might
### need to slightly edit the .spec file, or you might need to build the missing
### dependencies yourself, just like you're building this package, before you can
### continue.
sudo dnf builddep "${pkgname}.spec"
## build
### `fedpkg local` executes the build "unisolatedly" on this very distro.
### Instead of that, you could also omit the `dnf builddep` step above and do a
### `fedpkg mockbuild`. This will take a bit longer, as it needs to set up a clean
### build chroot. Often it's worth it.
fedpkg local
## install
### `fedpkg local` put the RPMs into $arch subdirs, so on my machine those are `x86_64`
### and `noarch`, but if you build for e.g. ppc64, that might be different.
sudo rpm -i x86_64/${pkgname}-*.rpm
Em essência, é para isso que serve o distgit: manter as especificações do pacote coordenadas e disponíveis. Então, vamos usá-lo.
Precisaremos configurar nosso sistema para poder construir pacotes:
Primeiro, encontre seu pacote em https://src.fedoraproject.org/browse/projects/ . Estou usando
guile22
como exemplo:Ótimo, neste momento temos tudo o que precisamos para construir pacotes! Vamos ao
guile22
site distgit como encontramos com a busca, e clique no botão "clone"; somos apresentados ao URLhttps://src.fedoraproject.org/rpms/guile22.git
.E é isso!