Я загружаю код с сайта python.org, извлекаю и запускаю rpmbuild с измененным файлом спецификации, чтобы иметь новое место установки и пара других незначительных изменений, таких как создание ссылок на новое место.
Rpm собирается и устанавливается правильно, без ошибок. Если я сделаю более новую версию, скажем -1 из -0, обновление запустится, все будет проверено, затем yum выдаст успешное сообщение и существует, но весь пользовательский каталог отсутствует. Yum все еще думает, что он установлен, но его нет.
Я долго ходил по кроличьей норе, думая, что файлы должны быть перечислены в разделе %files, но я перечислил все каталоги с подстановочными знаками и даже перечислил все 5212 файлов с абсолютными путями с одним и тем же результатом.
Недавно я попытался добавить раздел %config (без замены) в %files и перечислил файлы, но это дало тот же результат.
Я не понимаю, почему что-то, казалось бы, столь простое, вызывает у меня столько головной боли. Раньше я работал с Python9.18.1, и он делает то же самое.
Вот мой файл спецификации.
---
Код: Выделить всё
Name:
Version: 3.13.0
Release: 1
Summary:
Group: System Environment/Base
License:
Source: %{name}-%{version}-%{release}.tar.gz
Vendor:
Packager:
AutoReq: no
BuildArch: x86_64
BuildRoot: /home/hosting/rpmbuild
Provides: python = 3.13.0, python(x86-64) = 3.13.0
Obsoletes: python39-3.9.4
BuildRequires: zlib-devel, sqlite, sqlite-devel, openssl-devel, expat
%description
%global debug_package %{nil}
%prep
%setup
%build
./configure --prefix=/opt/oss/python313 --with-ensurepip=install --with-ssl-default-suites=openssl
make -j20 all
%install
%make_install
mkdir -p $RPM_BUILD_ROOT/etc/profile.d
install -m 644 python313.sh $RPM_BUILD_ROOT/etc/profile.d
chmod -R 750 $RPM_BUILD_ROOT/opt/oss/python313/lib/python3.13/venv
mkdir -p $RPM_BUILD_ROOT/opt/oss/python313/.config/pip
install -m 644 pip.conf $RPM_BUILD_ROOT/opt/oss/python313/.config/pip
install -m 644 readme_pip_config.txt $RPM_BUILD_ROOT/opt/oss/python313/bin
exit 0
%post
# Create the python to python3 link if it doesn't exist
if [ ! -f "/opt/oss/python313/bin/python" ]; then
ln -s "/opt/oss/python313/bin/python3" "/opt/oss/python313/bin/python"
else
echo "exists" >/dev/null
fi
/opt/oss/python313/bin/python -m ensurepip --upgrade
# Create the pip to pip3 link if it doesn't exist
if [ ! -f "/opt/oss/python313/bin/pip" ]; then
ln -s "/opt/oss/python313/bin/pip3" "/opt/oss/python313/bin/pip"
else
echo "exists" >/dev/null
fi
%postun
# Ensure anything left over is removed
rm -rf /opt/oss/python313/ 2>&1>/dev/null
rm -f /etc/profile.d/python313.sh 2>&1>/dev/null
#%clean
%files
/opt
/etc
%changelog
Подробнее здесь: https://stackoverflow.com/questions/791 ... -installed