8.52.1. Installasjon av Python 3
Forbered Python for kompilering:
./configure --prefix=/usr \
--enable-shared \
--with-system-expat \
--enable-optimizations
Betydningen av konfigureringsalternativene:
-
--with-system-expat
-
Denne bryteren muliggjør kobling mot systemversjonen av
Expat.
-
--enable-optimizations
-
Denne bryteren muliggjør omfattende, men tidkrevende,
optimaliseringstrinn Tolken bygges to ganger; tester utført
på det første bygget brukes til å forbedre den optimaliserte
endelige versjonen.
Kompiler pakken:
make
Noen tester er kjent for iblant å henge på ubestemt tid. Så for å
teste resultatet, kjør testpakken, men sett en tidsbegrensning på 2
minutter for hvert testforsøk:
make test TESTOPTS="--timeout 120"
For et relativt tregt system må du kanskje øke tidsgrensen og 1 SBU
(målt når du bygger Binutils passerer 1 med én CPU kjerne) bør være
nok. Noen tester er rare, så testpakken vil automatisk kjøre
mislykkede tester på nytt. Hvis en test mislyktes, men deretter
består når den kjøres på nytt, bør den anses som bestått. En test,
test_ssl, er kjent for å mislykkes i chroot miljøet.
Installer pakken:
make install
Vi bruker pip3
kommandoen til å installer Python 3 programmer og moduler for alle
brukere som root
flere steder i
denne boken. Dette er i konflikt med Python utviklernes anbefaling:
å installere pakker i et virtuelt miljø eller inn i hjemmemappen
til en vanlig bruker (ved å kjøre pip3 som denne brukeren). En
advarsel med flere linjer utløses når pip3 er utstedt av root
brukeren.
Hovedgrunnen for anbefalingen er å unngå konflikter med systemets
pakkeansvarlig (dpkg,
for eksempel). LFS har ikke en systemomfattende pakkebehandling, så
dette er ikke et problem. Også pip3 vil se etter en ny versjon
av seg selv når den kjøres. Siden domenenavnoppløsning ikke er
konfigurert ennå i LFS chroot miljøet, pip3 kan ikke sjekke for en ny
versjon av seg selv, og vil produsere en advarsel.
Etter at vi har startet opp LFS systemet og satt opp en
nettverkstilkobling, en annen advarsel vil bli gitt, og ber
brukeren om å oppdatere pip3 fra et forhåndsbygd wheel på
PyPI (når en ny versjon er tilgjengelig). Men LFS vurderer
pip3 å være en del av
Python 3, så det burde ikke oppdateres separat. Dessuten vil en
oppdatering fra et forhåndsbygd wheel avvike fra vårt mål: å bygge
et Linuxsystem fra kildekoden. Så advarsel om en ny versjon av
pip3 bør ignoreres om
vi vil. Hvis du ønsker det, kan du undertrykke alle disse
advarslene ved å kjøre følgende kommando, som oppretter en
konfigurasjonsfil:
cat > /etc/pip.conf << EOF
[global]
root-user-action = ignore
disable-pip-version-check = true
EOF
Viktig
I LFS og BLFS bygger og installerer vi normalt Pythonmoduler med
pip3 kommandoen.
Vennligst pass på at pip3
install kommandoer i begge bøkene kjøres som
root
brukeren med mindre det er
for et virtuelt Python-miljø å kjøre en pip3 install som en
ikke-root
bruker kan synes å
fungerer fint, men det vil føre til at den installerte modulen
blir utilgjengelig av andre brukere.
pip3 install vil
ikke installere en allerede installert modul som standard. Når du
bruker pip3 install
kommandoen for å oppgradere en modul (for eksempel fra
meson-0.61.3 til meson-0.62.0), sett inn alternativet --upgrade
inn i kommandolinjen.
Hvis det virkelig er nødvendig å nedgradere en modul, eller
installer samme versjon på nytt av en eller annen grunn, sett inn
--force-reinstall
--no-deps
inn i kommandolinjen.
Hvis ønskelig, installer den forhåndsformaterte dokumentasjonen:
install -v -dm755 /usr/share/doc/python-3.13.0/html
tar --no-same-owner \
-xvf ../python-3.13.0-docs-html.tar.bz2
cp -R --no-preserve=mode python-3.13.0-docs-html/* \
/usr/share/doc/python-3.13.0/html
Betydningen av dokumentasjonsinstallasjons
kommandoene:
-
--no-same-owner
(tar) og --no-preserve=mode
(cp)
-
Sørger for at de installerte filene har riktig eierskap og
tillatelser. Uten disse alternativene, tar vil installere pakkefilene med
oppstrømsskaperens verdier og filer vil ha restriktive
tillatelser.