Estou usando um sistema Ubuntu 18/RHEL6 bastante desatualizado com ferramentas de construção antigas, estou tentando atualizá-lo, mas não quero destruir a instalação das ferramentas existentes. Criei o seguinte script que foi instalado autoconf
como alternativa, mas não tenho certeza de como trazer as autoconf
macros no arquivo share
.
autoreconf --version
autoreconf (GNU Autoconf) 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
Licença GPLv3+/Autoconf: GNU GPL versão 3 ou posterior
https://gnu.org/licenses/gpl.html , https:// gnu.org/licenses/exceptions.html
Este é um software livre: você é livre para alterá-lo e redistribuí-lo.
NÃO HÁ GARANTIA, na medida permitida por lei.
Escrito por David J. MacKenzie e Akim Demaille.
Então, quando tento executar autoreconf --install --force
, ele me diz que não foi possível encontrar a macro...
autoreconf --verbose --install --force
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: aclocal --force -I m4
autoreconf: running: /opt/autoconf/bin/autoconf --force
configure.ac:1040: error: possibly undefined macro: m4_ifdef
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: error: /opt/autoconf/bin/autoconf failed with exit status: 1
Existe uma maneira de realizar o que estou tentando fazer? Tendo automake
, autoconf
, libtool
, etc como alternativas?
O script (tenho um script semelhante para automake
,, pkgconf
etc):
#!/bin/bash
set -e
WHAT=autoconf
VERSION=2.71
function install() {
[ $# -eq 0 ] && { run_error "Usage: install <version>"; exit; }
local VERSION=${1}
local TARBALL=${WHAT}-${VERSION}.tar.xz
local URL=ftp://ftp.gnu.org/gnu/${WHAT}/${TARBALL}
local WHERE=/tmp/update-${WHAT}
echo "Downloading ${URL}"
mkdir -p ${WHERE}
cd ${WHERE}
curl -L --create-dirs -o ${TARBALL} ${URL}
if [ -f "${TARBALL}" ]; then
tar -xf ${TARBALL}
cd ${WHAT}-${VERSION}/
./configure --prefix="/opt/${WHAT}"
make
echo "Installing..."
sudo make install
echo -e "${TARBALL} installed \e[1;32mOK\e[39m"
else
echo -e "Cannot download ${URL}"
exit 1
fi
}
function install_alternatives() {
for fullpath in /opt/${WHAT}/bin/* ; do
local NAME="$(basename ${fullpath})"
#echo "sudo update-alternatives --install /usr/local/bin/${NAME} ${NAME} ${fullpath} 50"
sudo update-alternatives --install /usr/local/bin/${NAME} ${NAME} ${fullpath} 50
. ~/.profile
done
}
function remove_alternatives() {
for fullpath in /opt/${WHAT}/bin/* ; do
local NAME="$(basename ${fullpath})"
#echo "sudo update-alternatives --remove ${NAME} ${fullpath}"
sudo update-alternatives --remove ${NAME} ${fullpath}
. ~/.profile
done
}
if declare -f "$1" > /dev/null
then
"$@"
else
install ${VERSION}
install_alternatives
fi
Resolvi minha dúvida depois de tentar e depurar detalhadamente. Meu roteiro acertou em grande parte, só perdi isso em
install_alternatives
Essencialmente, coloquei a nova versão
/usr/share
para que o sistema pudesse procurá-la. Mais tarde, enfrentei algumas outras advertências de que a compilação me dizia que não foi possível encontrar determinados arquivos ou que PKG_CHECK_MODULES estava falhando, que foram corrigidos em meus scripts.Abaixo estão os 3 scripts que me permitiram ter o mais recente
automake
eautoconf
instalápkgconf
-los como alternativas sem destruir/alterar a instalação do sistema existente.atualização-automake.sh
atualização-autoconf.sh
atualizar-pkgconf.sh
Espero que isso possa ajudar alguém.