Linux-kysymyksiä & yleistä keskustelua Linuxista

Tuntuu että tässä menee pari asiaa sekaisin. Dockerilla on palvelinprosessimalli, mutta käyttäjän ei tarvi olla root vaan docker-ryhmässä. Jos jollain muulla tekniikalla ajaa ilman root-oikeuksia (siis user namespace), niin eihän sillä voi tehdä samoja asioita ellei jotain kautta anneta root-oikeuksia. Esim. volume-mountit nyt ei taida toimia. Riippuu ihan käyttötapauksen vaatimuksista, miten kannattaa ajaa.
Tiedän että docker komentoja ajetaan normaalisti käyttäjänä joka on docker (tai vastaavassa) groupissa. Daemoni ajetaan silti oletuksena roottina ja jotkut asiat tehdään rootin oikeuksilla, tuon groupin kautta pääsee ainoastaan daemonin sockettiin käsiksi.

Hyvin on podmanilla toiminut volume mountitkin. Ja niinkuin olen tässä jankannut pitempään, minulla on toiminut kaikki, aivan kaikki, mitä olen podmanilla yrittänyt ajaa. Myös docker hubista otetut imaget.

Käyttäkää hyvänen aika dockeria jos siihen olette tyytyväisiä, minulle riittää tästä asiasta jankkaaminen.
 
Kokeilitko Condaa tai jotain sen sukulaista? Mä olen noilla aina saanut haluamani Python-version asennettua. Dokumentaatiota saattaa vähän joutua lukemaan kun asentaa Condan ekaa kertaa, mutta sen jälkeen kun itse Conda on asennettu, niin uusien ympäristöjen tekeminen haluamallasi Python-versiolla on helppoa.
Miten tuo asentaa uudemman Pythonin? Sehän pitää kääntää, joten asentaako se johonkin sandboxiin kaikki tarvittavat työkalut? Vai tuleeko tuolta kaikki mahdolliset Python-versiot valmiiksi käännettynä? Entä wheelit?

Debianissa muuten Python-paketit pitää käytännössä asentaa virtuaaliympäristöön muutenkin.
 
Tiedän että docker komentoja ajetaan normaalisti käyttäjänä joka on docker (tai vastaavassa) groupissa. Daemoni ajetaan silti oletuksena roottina ja jotkut asiat tehdään rootin oikeuksilla, tuon groupin kautta pääsee ainoastaan daemonin sockettiin käsiksi.

Hyvin on podmanilla toiminut volume mountitkin. Ja niinkuin olen tässä jankannut pitempään, minulla on toiminut kaikki, aivan kaikki, mitä olen podmanilla yrittänyt ajaa. Myös docker hubista otetut imaget.

Käyttäkää hyvänen aika dockeria jos siihen olette tyytyväisiä, minulle riittää tästä asiasta jankkaaminen.
En ottanut kantaa tuohon, mitä konttitekniikkaa käyttää. Pätee nspawniin ja muihinkin. Lähinnä vaan että podmanin konteksti on user namespace, niin se pakosti rajaa asioita. Yksinkertaiset bind mountit käyttäjän jo näkemiin polkuihin toimivat ja overlayt saadaan kai fusella. Parempihan se aina on, jos samat asiat saa tehtyä ilman pääkäyttäjäoikeuksia.
 
Miten tuo asentaa uudemman Pythonin? Sehän pitää kääntää, joten asentaako se johonkin sandboxiin kaikki tarvittavat työkalut? Vai tuleeko tuolta kaikki mahdolliset Python-versiot valmiiksi käännettynä? Entä wheelit?

Debianissa muuten Python-paketit pitää käytännössä asentaa virtuaaliympäristöön muutenkin.
Yksinkertaisimmillaan Python-sovelluksen asennuspaketti on "wheel", joka sisältää pakattuna sovelluksen lähdekoodin, tiedon sovelluksen ulkoisista vaatimuksista ja tiedon sovelluksen mahdollisista entry pointeista. Ulkoisia vaatimuksia ovat mm. Pythonin ja systeemikirjaston versio sekä muut tarvittavat kirjastot ja niiden versiot.

Etenkin linuxeissa distron mukana tullutta Pythonia ja sen kirjastoja ei pidä muokata. Moni asia voi särkyä. Siksi jokainen distron ulkopuolinen Python-sovellus joko pitää laatia niin, että se ei tarvitse mitään distro-Pythoniin kuulumatonta, tai sitten sovellukselle pitää rakentaa oma Python-ympäristö ("venv"), joka "aktivoidaan" (pannaan polun alkuun) sovellusta käynnistettäessä.

Yksinkertaisin tapa wheel-paketoidun sovelluksen asentamiseen käyttää pipx-nimistä sovellusta, siis esim:

$ sudo apt install pipx
$ pipx install sovellus.paketti.whl

jolloin pipx tekee sovellukselle oman ympäristön, kopioi/linkittää sinne distro-Pythonin systeemikirjastoineen, imuroi tarvittavat lisukkeet ja virittää komennot sovelluksen entry pointeille. Tämä onnistuu jos ja vain jos sovellukselle kelpaa distro-Pythonin versio ja jos distro-Pythonin systeemikirjastosta ei puutu mitään sovelluksen tarvitsemaa.

Distrojen Python saattaa olla melko vanha, ja systeemikirjastosta on usein jätetty jotain "turhaa" joko erikseen asennettavaksi tai kokonaan pois. Distro-Python siis on vain distron omaan käyttöön.

Tätänykyä muodikkain Python-projektien hallintaväline on tuote nimeltä uv, jonka voi asentaa monin tavoin, esimerkiksi pipx-ohjelman avulla:

$ pipx install uv

Kun tämä on tehty, voi wheel-paketin asentaa näin:

$ uv tool install sovellus.paketti.whl

tai jopa

$ uv tool install --python 3.14 sovellus.paketti.whl

jolloin sovellukselle luodaan täydellinen distrosta riippumaton Python-ympäristö.

Lisätietoja:

docs.astral.sh/uv/

---

Jos Python-sovelluksen laatija on nähnyt hiukan enemmän vaivaa, hän on tietysti käärinyt sovelluksen AppImage-pakettiin. Se onnistuu varsin helposti esim. cx_freeze -nimisellä välineellä.
 
Viimeksi muokattu:
Distrojen Python saattaa olla melko vanha, ja systeemikirjastosta on usein jätetty jotain "turhaa" joko erikseen asennettavaksi tai kokonaan pois. Distro-Python siis on vain distron omaan käyttöön.

Tätänykyä muodikkain Python-projektien hallintaväline on tuote nimeltä uv, jonka voi asentaa monin tavoin, esimerkiksi pipx-ohjelman avulla:
Pythoniin löytyy monta muutakin paketinhallintaa, josta valita:

egg, fades, pactivate, pae, pdm, pip, pipenv, pip-run, pipsi, pipx, poetry, pyenv, pypi, setup.py, setuptools, uv, uvenv, uvx, virtualenv, wheel.
 
Et nyt edelleenkään vastannut kysymyksiin. Jos nyt oletetaan että muutkin on joskus tehneet jotain Pythonilla niin kysymys on edelleen se, että jos asennan Condan, niin miten se distron Pythonia uudempi Python sinne saadaan? Esimerkiksi tässä koneessa on nyt 3.13.5. Mitäs jos haluaisin käyttää uusinta, joka näyttää olevan 3.14.2, niin miten tuon saa Condaan?
 
Et nyt edelleenkään vastannut kysymyksiin. Jos nyt oletetaan että muutkin on joskus tehneet jotain Pythonilla niin kysymys on edelleen se, että jos asennan Condan, niin miten se distron Pythonia uudempi Python sinne saadaan? Esimerkiksi tässä koneessa on nyt 3.13.5. Mitäs jos haluaisin käyttää uusinta, joka näyttää olevan 3.14.2, niin miten tuon saa Condaan?
Asentamalla condaan conda install-komennolla jonkun condan tarjoamista python-versioista. Mutta miksi asentaisit condan? Siis jos vain Pythonista on kysymys? Eikö uv riitä? Tai esim. Poetry? Oletko käyttänyt condaa joskus johonkin?
 
Miten tuo asentaa uudemman Pythonin? Sehän pitää kääntää, joten asentaako se johonkin sandboxiin kaikki tarvittavat työkalut? Vai tuleeko tuolta kaikki mahdolliset Python-versiot valmiiksi käännettynä? Entä wheelit?

Debianissa muuten Python-paketit pitää käytännössä asentaa virtuaaliympäristöön muutenkin.
Sitten kun conda/mamba/miniforge tms. on asennettu ja aktivoitu, niin esim. suorittamalla
Koodi:
conda create -n jokunimi python=3.13
conda activate jokunimi
saat käyttöösi Python 3.13:n.

Tähän ympäristöön voit sitten asennella Python-paketteja haluamallasi menetelmillä. Voi esim. käyttää condaa, tai voi käyttää pipä jos haluaa (ei ehkä kannata sekoittaa eri menetelmiä kuitenkaan).

Conda tai sen sukulaiset ei tietenkään ole ainut vaihtoehto, mutta mainitsin sen aiemmin, koska se on mulle tutuin.

uv:ta olen kuullut kehuttavan, mutta en ole sitä vielä koskaan kokeillut. Poetryä kokeilin joskus kauan sitten ja se oli jotenkin epäselvä. Ehkä se on nykyään parempi.
 
Miten tuo asentaa uudemman Pythonin? Sehän pitää kääntää, joten asentaako se johonkin sandboxiin kaikki tarvittavat työkalut? Vai tuleeko tuolta kaikki mahdolliset Python-versiot valmiiksi käännettynä? Entä wheelit?

Debianissa muuten Python-paketit pitää käytännössä asentaa virtuaaliympäristöön muutenkin.
A. En tiedä. En halua tietää condasta yhtään enempää kuin on pakko.

B. "Paketinhallinta". Debianissa on paketinhallintatyökalu (apt?) joka osaa ladata verkon "repository:stä" paketti-tiedostoja ja avata niistä ohjelmien tiedostot "oikeaan paikkaan" (eli "asentaa"). Repossa ei kuitenkaan (yleensä) ole "kaikkia ohjemia" (esim. Pythonin moduleita), eikä "oikean paikan" sekaan sovi tiputtaa ties mitä ettei paketinhallinta tipu kartalta.

Virtuaaliympäristö (venv) on mielivaltainen paikka "muualla", jonne "PyPI-reposta" saa asennettua Python moduuleja. Se 'pip' on paketinhallintatyökalu, joka osaa ladata PyPI:stä ja ymmärtää "Python-paketteja" (jotka ovat eri muodossa kuin esim. .deb-paketit), muttei tiedä mitään distron paketinhallinnasta.
Venv:iä luodessa luova Python-binääri (joka on jostain aiemmin asennettu) lisää symlinkit itseensä, jotta ympäristössä "python" käyttää juuri sitä versiota.

Conda on myöskin paketinhallintatyökalu. Käyttisriippumaton, eli ei tiedä distron paketeista. Sillä on kai omat reponsa. Se asentaa sekä Pythonin että moduuleita ja kaiken virtuaaliympäristöihin. Eli: luo venv (ilman Pythonia), hae ja asenna sinne Python (tarvittaessa), hae ja asenna moduuleja (kuin pip). Käännetäänkö joitain binäärejä, vai onko condalla repossa joka paikkaan sopivia? En tiedä. Sen tiedän, että jokainen conda-ympäristö -- pienikin -- sisältää ziljoona tiedostoa, eli conda lataa/asentaa tuhottomasti "paketteja". Kyllä siihen määrään build-työkalutkin hukkuvat.

Jälkimmäisen seurauksena esim. CSC:n HPC-ympäristöön ei saa suoraan asentaa condalla mitään, vaan jokainen conda-asennus pitää tunkea (Apptainer) konttiin. Ympäristön Lustre-tiedostojärjestelmä ei tykkää järjettömästä määrästä pieniä tiedostoja (varsinkin jos jokainen käyttäjä asentaa jotain condalla).
 
Sitten kun conda/mamba/miniforge tms. on asennettu ja aktivoitu, niin esim. suorittamalla
Koodi:
conda create -n jokunimi python=3.13
conda activate jokunimi
saat käyttöösi Python 3.13:n.

Tähän ympäristöön voit sitten asennella Python-paketteja haluamallasi menetelmillä. Voi esim. käyttää condaa, tai voi käyttää pipä jos haluaa (ei ehkä kannata sekoittaa eri menetelmiä kuitenkaan).

Conda tai sen sukulaiset ei tietenkään ole ainut vaihtoehto, mutta mainitsin sen aiemmin, koska se on mulle tutuin.

uv:ta olen kuullut kehuttavan, mutta en ole sitä vielä koskaan kokeillut. Poetryä kokeilin joskus kauan sitten ja se oli jotenkin epäselvä. Ehkä se on nykyään parempi.
Huomasin että conda-tietämykseni on päässyt hieman vanhenemaan, joten asensin semmoisen ubuntuun. Ja kyllä sillä tosiaan Python-version vaihto vaikkapa versioon 3.14.2 sujuu aivan kuten tässä on sanottu. Siis joko valitsemalla environmenttia create-komennolla luotaessa, tai myöhemmin install-komennolla vanhan päälle. Mutta noin muuten meistä ei kyllä tullut ystäviä. Kun ei tämä ole mikään Python-foorumi, en jatka tästä pitempään. Mutta suosittelen kaikille condaa käyttäville tai sitä harkitseville vaihtoehtoihin tutustumista.
 
Kun ei tämä ole mikään Python-foorumi, en jatka tästä pitempään. Mutta suosittelen kaikille condaa käyttäville tai sitä harkitseville vaihtoehtoihin tutustumista.
On tämä sikäli Linux-relevanttia, että Linuxissa näihin Python-temppuratoihin pääsee/joutuu tutustumaan mutta ehkä jatkot sopivat paremmin ohjelmointi-alueelle Ohjelmointi, pelikehitys ja muu sovelluskehitys

Yleisesti Linux-relevanttia on kyllä se, jos nämä aiheuttavat jotain ongelmia kuten rikkovat distroa tai vaarantavat tietoturvaa.
 

Uusimmat viestit

Statistiikka

Viestiketjuista
297 065
Viestejä
5 067 575
Jäsenet
81 250
Uusin jäsen
Tippaa

Hinta.fi

Back
Ylös Bottom