Erinevus lehekülje "FreeBSD pakihaldus" redaktsioonide vahel
(→Mõned abikäsud tööks paigaldatud tarkvaraga) |
(→FreeBSD portsud) |
||
(ei näidata sama kasutaja 2 vahepealset redaktsiooni) | |||
263. rida: | 263. rida: | ||
# portsnap fetch update | # portsnap fetch update | ||
− | Selleks, et kasutada portsnapi läbi cache tuleb anda käsk | + | Selleks, et kasutada portsnapi läbi cache tuleb bashi korral anda käsk (nimeserver peab olema samuti seadistatud) |
# export http_proxy='http://cache.eenet.ee:3128' | # export http_proxy='http://cache.eenet.ee:3128' | ||
+ | |||
+ | Või kui bashi pole | ||
+ | |||
+ | # setenv HTTP_PROXY http://cache.eenet.ee:3128 | ||
+ | |||
+ | Alternatiivina võib proovida ka svnist uuendamist | ||
+ | |||
+ | # svnlite checkout http://svn0.us-east.FreeBSD.org/ports/head /usr/ports | ||
Portsudest süsteemi tarkvara lisamine toimub praktiliselt selliselt, et valite Kogumikus sobiva programmi välja, sisenete vastavasse kataloogi ning annate korralduse | Portsudest süsteemi tarkvara lisamine toimub praktiliselt selliselt, et valite Kogumikus sobiva programmi välja, sisenete vastavasse kataloogi ning annate korralduse |
Viimane redaktsioon: 10. juuni 2015, kell 16:59
Sisukord
- 1 Sissejuhatus
- 2 Binaarsed paketid 10.x süsteemis ehk PKG käsk
- 3 Binaarsed paketid kuni 9.x süsteemis
- 4 Mõned abikäsud tööks paigaldatud tarkvaraga
- 5 FreeBSD portsud
- 6 Deemonite start FreeBSD operatsioonisüsteemis
- 7 Portide abivahendid
- 8 Linuxi binaarfailide käivitamine FreeBSD süsteemis
- 9 Iseseisvatest lähtetekstidest kompileerimine
- 10 Lingid
Sissejuhatus
FreeBSD süsteemile saab tarkvara lisada kolmel erineval moel
- Binaarsed paketid - neid pakette sisaldub omajagu näiteks FreeBSD CD/DVD, samuti saab neid Internetist FreeBSD serveritest kopeerida. Sel juhul harutatakse programmid teie süsteemi sobivatesse kataloogidesse lahti kusjuures kontrollitakse ka sõltuvusi ja vajadusel installeeritakse vastavad muud programmid.
- FreeBSD portsud - see on eelistatud tarkvara lisamise moodus. Portse kasutades kopeeritakse Internetist vajalikud programmid ning kompileeritakse kohapeal; lisaks installeeritavale tarkvarale kontrollitakse sõltuvusi, so et olemas oleks ka kõik paketid, mida see konkreetne tarkvara kasutab.
- iseseisvatest lähtetekstid - kui kuskil tarkvara kirjutatakse, siis on võimalik, et autorid näevad ette, et seda võidakse soovida ka kompileerida FreeBSD platvormil. Näiteks on lähtetekstidega kaasas configure skript mis moodustab sobiva Makefile.
Binaarsed paketid 10.x süsteemis ehk PKG käsk
Pealkiri on tegelikult mõnesmõttes eksitav. Tegelikult on võimalik paigaldada pkh utiliit ka 9.1 versioonist alates.
PKG kasutama hakkamiseks tuleb sisestada käsk pkg
# pkg The package management tool is not yet installed on your system. Do you want to fetch and install it now? [y/N]: y Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/freebsd:10:x86:64/latest, please wait... Verifying signature with trusted certificate pkg.freebsd.org.2013102301... done Installing pkg-1.2.5... done If you are upgrading from the old package format, first run: # pkg2ng
Järgmisena tasub vana pkg formaat ümber konvertida
# pkg pkg2ng
Paketi paigaldamiseks vaja kõigepealt uuendada repositooriumit
# pkg update
pakettide otsimine
# pkg search mysql | grep server aolserver-nsmysql-1.0_3 geoserver-mysql-plugin-2.1.1 mysql51-server-5.1.73 mysql55-server-5.5.35 mysql56-server-5.6.15
Päringud
# pkg query "Package name = %n, Version = %v, Size = %sh" nano Package name = nano, Version = 2.2.6, Size = 1.43MB
Lihtne on nt teada saada mis paketile mingi fail kuulub.
# pkg which /usr/local/lib/libcurl.so /usr/local/lib/libcurl.so was installed by package curl-7.33.0_2
# pkg version -v apr-1.4.8.1.5.3 = up-to-date with port autoconf-2.69 = up-to-date with port gdbm-1.11 = up-to-date with port gdisk-0.8.8 = up-to-date with port gettext-0.18.3.1 = up-to-date with port gio-fam-backend-2.28.8_1 ? orphaned: devel/gio-fam-backend ...
paigaldamine
# pkg install nano Updating repository catalogue ...
Paketi info vaatamiseks
# pkg info nano nano-2.2.6 Name : nano Version : 2.2.6 Origin : editors/nano Architecture : freebsd:10:x86:64 Prefix : /usr/local Categories : editors Licenses : GPLv3 Maintainer : eadler@FreeBSD.org WWW : http://www.nano-editor.org/ Comment : Nano's ANOther editor, an enhanced free Pico clone Shared Libs required: libintl.so.9 Flat size : 1.36MiB Description : nano is a small, free and friendly editor which aims to replace Pico, the default editor included in the non-free Pine package. Rather than just copying Pico's look and feel, nano also implements some missing (or disabled by default) features in Pico, such as "search and replace" and "goto line number". WWW: http://www.nano-editor.org/
Pakettide uuendamine on muutunud väga "debianilikuks"
# pkg update
ja uuendamine
# pkg upgrade
Täiesti võimalik, et esimesel korral upgradedes süsteemi 9.x ja vana formaadi pealt uuele võib nt vana ruby ja perl ette jääda ning vajada -f võtmega eemaldamist.
Portauditi võimalused on põhimõtteliselt juba pkg sees olemas
# pkg audit -F vuln.xml.bz2 100% 428KB 427.7KB/s 267.7KB/s 00:01 samba35-3.5.14_1 is vulnerable: samba -- multiple vulnerabilities CVE: CVE-2013-4408 CVE: CVE-2012-6150 WWW: http://portaudit.FreeBSD.org/613e45d1-6154-11e3-9b62-000c292e4fd8.html samba35-3.5.14_1 is vulnerable: samba -- incorrect permission checks vulnerability CVE: CVE-2012-2111 WWW: http://portaudit.FreeBSD.org/0fa15e08-92ec-11e1-a94a-00215c6a37bb.html samba35-3.5.14_1 is vulnerable: samba -- ACLs are not checked on opening an alternate data stream on a file or directory CVE: CVE-2013-4475 WWW: http://portaudit.FreeBSD.org/a4f08579-516c-11e3-9b62-000c292e4fd8.html samba35-3.5.14_1 is vulnerable: samba -- denial of service vulnerability CVE: CVE-2013-4124 WWW: http://portaudit.FreeBSD.org/e21c7c7a-0116-11e3-9e83-3c970e169bc2.html 1 problem(s) in the installed packages found.
# pkg stats Local package database: Installed packages: 30 Disk space occupied: 147 MB Remote package database(s): Number of repositories: 1 Packages available: 22613 Unique packages: 22613 Total size of packages: 99 GB
Binaarsed paketid kuni 9.x süsteemis
Binaarsetest pakettidest tarkvara lisamine on kõige lihtsam, sest sisuliselt harutakse arhiiv sobivatesse kataloogidesse lahti ja tekitatakse vajalikud lingid. Seda moodust sobib kasutada näiteks FreeBSD CD-plaadil olevate iseseisvate programmide installeerimiseks, mida vaikimisi ei installeerita või mis unusid süsteemi installeerimise ajal näidata, näiteks Bash koorik, Joe tekstiredaktor, Less pager. Tavaliselt on pakid kompileeritud väga konservatiivse seadistusega, kuna nad peavad töötama võimalikult paljudel süsteemidel nii on sageli vajalik programmi mingi lisafunktsiooni kasutamiseks kompileerida ta vastavate võtmete abil ports süsteemi kaudu
Paigaldamine toimub käsude pkg_add, fetch. Näiteks installeerime Bash kooriku CD kettalt (ketas peab olema eelnevalt mounditud)
# pkg_add /cdrom/packages/All/bash-2.03.tgz
Soovides näha pakettidest lisatud programmide nimesid, kasutage käsku pkg_info ilma arumendita; soovides näha konkreetse paketi kohta enam, kasutage paketi nime argumendina, näiteks
# pkg_info joe-2.8
Prekompileeritud pakette on aga võimalik installeerida ka kasutades FreeBSD süsteemi konfiguratsiooniprogrammi /stand/sysinstall -> Configuration -> Packages. Seejuures saate installeerida samadel meediumitelt nagu süsteemi ennastki so FTP, NFS, CD-plaat jne.
Lisades pkg_add käsule võtme -r tõmmatakse binaarsed paketid üle interneti
# pkg_add -r joe
Kui bashi asemel kasutuses mõni muu kest (shell) siis, et mitte uuesti sisse logida, andke selleks, et joe tööle läheks, alljärgnev käsk:
# rehash
Paketi installimine kindlasse kataloogi. Installime näiteks joe nano kataloogi /home/tarkvara
# pkg_add -rRP /home/tarkvara joe
Mõned abikäsud tööks paigaldatud tarkvaraga
Installitud pakettide nimekirja näeb käsuga
# pkg_info
seejuures sisaldab nimetatud käsk hulka abistavaid võtmeid, näiteks soovides vaadata kõike paketi poolt paigaldatud faile aitab
# pkg_info -L joe | less
Installitud tarkvara versioone ja seda kas neist on uuemaid versioone näeb käsuga, eelnevalt oleks vaja uuendada muidugi ports tee nt portsnap abil
pkg_version
näiteks
# pkg_version -v 915resolution-0.5.3_1,1 = up-to-date with port ImageMagick-6.4.4.1_1 < needs updating (port has 6.5.4.10_1) OpenEXR-1.6.1_1 = up-to-date with port
Teises tulbas asuvad sümbolid näitavad installitud versiooni suhtelist vanust ning kohalikust portsude puust saadaolevat versiooni.
= Installitud paki versioon on sama, mis antud paki versioon kohalikus portsude puus. < Installitud versioon on vanem kui see, mis saadaval portsude puust. > Installitud versioon on uuem kui see, mis leidub kohalikus portsude puus (mis on arvatavasti vananenud). ? Installitud pakki ei leidu portsude nimekirjas. (See võib näiteks juhtuda, kui installitud ports eemaldatakse kollektsioonist või nimetatakse ümber.) * Pakist leidub mitu versiooni.
Pakettide kustutamine käib käsu pkg_delete abil.
# pkg_delete joe
Sooves alustada puhtalt lehelt võib näiteks anda käsu pkg_delete -a mis puhastab operatsioonisüsteemi kõigist paigaldatud lisaprogrammidest
Kui on vajalik teha mõni installitud pakett tagasi installifailiks näiteks juhtumil kui enne uue tarkvara installi tahaks säilitada lihtsa võimaluse see uuesti tagasi panna aitab järgnev käsk
# pkg_create -b joe
Mis tekitab aktiivsesse kausta faili joe.tbx
Orvuks jäänud faile saab otsida käsuga
# find /usr/local/ -type f -exec sh -c 'a=`pkg_info -W "$0" 2> /dev/null`; [ "$a" ] || echo "$0" ' {} \;
See käsk võrdleb reaalselt eksisteerivate failide seoseid pakettidega. Automaatselt kõike kustutada ei tasu kui on kasutuses olnud ka cpan või ruby gem kuna nende failid ei paista välja.
Teatud portsude downgrademiseks, et saaks vanemat versiooni paigaldada on olemas töövahend ports-mgmt/portdowngrade
Selleks, et näha erinevate revisioonide nimekirja
# portdowngrade net/freeradius2
Selleks, et uuendada ports ühele teatud revisioonile
# portdowngrade net/freeradius2 r340742 A freeradius2/files A freeradius2/pkg-plist A freeradius2/Makefile .... Checked out revision 340742. You should be done-- now cd into freeradius2 and you can run # make deinstall install clean
Downgradetud ports paigutatakse kausta
/usr/ports/freeradius2
FreeBSD portsud
Reeglina eeldab portsude kasutamine kompileerimisvahendite ja võrguühenduse olemasolu ning seda, et Portsude Kogumik (ingl. k. Ports Collection) on installeeritud.
Kogumik ise võtab ca 100 MB ruumi ning sisaldab andmeid praktiliselt kõigi vabalt kasutada olevate FreeBSD programmide kohta. Portsude Kogumik asub vaikimisi kataloogis /usr/ports moodustades teemadeks jaotatud kataloogistruktuuri. Igale programmile vastab üks kataloog infot millistest teistest pakettidest kõnealune programm sõltub ning kust veebi või FTP serverist Internetist seda programmi kopeerida.
Tüüpiline portsus leiduva tarkvara (nt joe) kaust koosneb järgnevatest failidest
- Makefile - kuidas antud tarkvara paigaldada e kompileerida, kuhu teda paigaldada jne ehk iseäralised nõksud FreeBSD jaoks
- distinfo - failide nimekiri mida tuleb portsu jaoks alla laadida ning nende kontrollsummad
- files - patchid paigaldamiseks
- pkg-descr - tarkvara kirjeldus
- pkg-plist - nimekiri kõigist failidest mida tarkvara paigaldab
Portsude Kogumik ei sisalda programmide lähtetekste, vaid ainult viiteid Interneti serveritele kust vajaduselt tarkvara lähtetekstid kopeeritakse ning seejärel teie masinas kompileeritakse ja ära installeeritakse.
cvs'ist portide kogumiku paigaldamine ja uuendamine on FreeBSDs korraldatud portsnap vahendiga. Esimenekord käivitamisel tasuks anda käsk
# portsnap fetch extract
Mis tõmbab viimase portside snapshoti ja pakib selle /usr/ports alla lahti Edaspidi kui on vaja uuendada portse piisab kui anda käsk
# portsnap fetch update
Selleks, et kasutada portsnapi läbi cache tuleb bashi korral anda käsk (nimeserver peab olema samuti seadistatud)
# export http_proxy='http://cache.eenet.ee:3128'
Või kui bashi pole
# setenv HTTP_PROXY http://cache.eenet.ee:3128
Alternatiivina võib proovida ka svnist uuendamist
# svnlite checkout http://svn0.us-east.FreeBSD.org/ports/head /usr/ports
Portsudest süsteemi tarkvara lisamine toimub praktiliselt selliselt, et valite Kogumikus sobiva programmi välja, sisenete vastavasse kataloogi ning annate korralduse
# make install
Seejärel kontrollitakse kas süsteemis leiduvad muud programmid, mille olemasolu installeeritav programm eeldab. Vajadusel kopeeritakse Internetist esmalt nende lähtetekstid ning nad kompileeritakse ja installeeritaks. Seejärel kopeeritakse installeeritava programmi lähtetekstid ning tarkvara kopileeritakse ja installeeritakse.
Seesugune asjakorraldus teeb tarkvara lisamise ja sõltuvuste lahendamise kasutaja jaoks põhimõtteliselt väga mugavaks. Kuivõrd programmide lähtetekste kopeeritakse otse võrgust, siis on lihtne tarkvara arendajatel teha kasutajale kättesaadavaks värsked versioonid.
Portsudest installeeritud tarkvara eemaldamiseks sisnege taas Kogumiku vastavasse kataloogi ning andke korraldus
# make deinstall
Kuna programmide lähtetekstid kopeeritakse võrgust veebi või FTP serveritest, siis on mõistlik näidata keskkonnamuutujale HTTP_PROXY sobiv väärtus, sarnaselt
# export HTTP_PROXY="cache.zoo.tartu.ee:3128"
Võimalik on see lisada ka järgneval kujul faili make.conf
FETCH_ENV=HTTP_PROXY=http://cache.zoo.tartu.ee:3128
Võimalik on kasutada ka mirroreid ,et kiirendada tarkvara tõmbamist või võimaldades saada tarkvara kätte ka siis kui selle originaalne allikas on kättesaamatu. Näiteks ,et kasutada EENet'i mirrorit tuleb lisada /etc/make.conf faili rida
MASTER_SITE_OVERRIDE?=http://ftp.eenet.ee/pub/FreeBSD/distfiles/${DIST_SUBDIR}/
Mille puhul pöördutakse alati kui pordist mingit tarkvara kompileeritakse antud softi algkoodi otsima ftp.eenet.ee nimelise masina poole.
NB kõik allatõmmatud paketid paigaldatase portsude puhul lahtipakkimiseks kausta /usr/ports/difstfiles Seda võib aegajalt käsitsi kustutada või teha seda käsuga portsclean -DD
Portsud on muide standardina tänapäeval sageli varustatud pseudograafilise liidesega kust saab valida erinevaid kompileerimise võtmeid jms. See info salvestatakse kõik kausta /var/db/ports/
Näiteks rsynci kohta on seal samanimelises kaustas järgnev fail
cat /var/db/ports/rsync/options # This file is auto-generated by 'make config'. # No user-servicable parts inside! # Options for rsync-3.0.4 _OPTIONS_READ=rsync-3.0.4 WITHOUT_POPT_PORT=true WITH_SSH=true WITHOUT_FLAGS=true WITHOUT_ATIMES=true WITHOUT_ACL=true WITHOUT_ICONV=true WITH_TIMELIMIT=true
Nii saab vaadata näiteks järgi mis võtmetega on tarkvara paigaldatud Soovides paigaldada uues serveris tarkvara täpselt samade võtmetega tasub see kaust koos alamkataloogidega varundada ning kopeerida ümber teise masinasse
Deemonite start FreeBSD operatsioonisüsteemis
Teenuste startimise osas tasub meeles pidada ,et puuduvad nö tavapärased /etc/init.d/serverinimi käivitusskriptid (mis on tegelikult üks nn BSD-line ilming; õigupoolest on ses mõttes Linux ja Solaris System V legacy'ga) vaikimisi on teenused pigem chroot'itud
Portsud, mis peaksid alglaadimise ajal käivituma (näiteks internetiserverid), installeerivad enamasti stardiskripti kausta /usr/local/etc/rc.d Need skriptid tuleb kirja panna rc.conf faili. Näiteks kui apache paigaldab rc.d kausta skripti nimega apache2.sh siis rc.conf faili tuleb kirjutada rida apache2_enable="YES". Sageli tasub vaadata ka nende käivitatavate rc.d kausta failide sisse, kuna need sisaldavad enda alguses abiinfot võtmetest, mida võib rc.confi täiendavalt lisada.
Näidef failide ja startiskriptide asukohtadest FreeBSD's openntpd baasil
- /usr/local/sbin/ntpd OpenNTPD binaarne käivitusfail
- /usr/local/etc/rc.d/openntpd - OpenNTPD käivitamise ja seiskamise skript, vajab kasutuseks /etc/rc.conf skripti täiendamist
- /usr/local/etc/ntpd.conf - OpenNTPD konfiguratsioonifail
Portide abivahendid
Kaks mõistlikumat ja kõige rohkem abiks olevat vahendit oleksid portupgrade ja portaudit süsteemis
portupgrade
Tegemist automaatse pordi uuendamise vahendiga.
# cd /usr/ports/ports-mgmt/portupgrade && make install
Kasutamine
# portupgrade pordinim
Või siis kõigi ühetüübiliste portsude uuendamiseks (nt mitukümmend erinevat php moodulit)
# portupgrade php\*
Selleks ,et vaadata mis pordid omavad uuemaid versioone sobib lihtne käsk
# pkg_version -v | grep "<"
Soovides aga teada saada portide erinevaid märkusi st mida uus versioon endaga kaasa toob ja miks ta vajalik jms võib uurida käsu pkg_updating väljundit kust saab ka kasulikku infot selle uuendamiseks vajalikest toimingutest, tuuakse ära nt vajalikud käsud
Üldiselt ei tasu uisapäisa tormata kõiki porte uuendama sest sageli võib näiteks portupgrade -a lõppeda mitme mittetöötava tarkvara vaid uuendada mõistlikult vastavalt vajadusele ja juhul kui tarkvaras on avastatud ohtlik viga. Vigade avastamiseks on järgnev soft
portaudit
Portaudit kontrollib kõiki installitud tarkvara versioone vastu keskset andmebaasifaili mille ta igal käivitamisel alla tõmbab ning teatab antud tarkvaras asuvaid turvavigu. Kui portaudit on süsteemi installitud siis lisatakse selle väljund automaatselt igaöisele meiliteel root kasutajale saadetavale raportile
# cd /usr/ports/ports-mgmt/portaudit && make install
kasutamine
# portaudit -F -a
Kuna portaudit ei luba portupgrade või make install käsuga süsteemi isegi paigaldada vigast tarkvara kuid vahel siiski peab olude sunnil seda kasutama saab piirangust mööda hiilida näiteks portupgradel käsuga
# portupgrade -m "DISABLE_VULNERABILITIES=yes" tarkvara
Või portsudes
# make "DISABLE_VULNERABILITIES=yes"
pkg_replace
Üldiselt on portupgrade ilus ja tore, aga kui installeeritud pakkide arv on juba neljakohaline, siis kipub portupgrade venima. Ja kui kasutajal on lühike kannatus, siis jäävad pakid uuendamata.
Aga õnneks on olemas pkg_replace, mis on portupragradega üsna sarnane (käsurea võtmed ja väljund on peaaegu samasugused). Üks suur erinevus on selles, et pkg_replace toimib _jubedalt_ kiiremini.
Esimese asjana peale installeerimist võiks näppida /usr/local/sbin/pkg_replace faili, rida 778:
uri_path="/pub/FreeBSD/ports/${ARCH}/packages-${subdir}/All/"
ja seal rõõmsalt kustutada ära -${subdir}, et alles jääks
uri_path="/pub/FreeBSD/ports/${ARCH}/packages/All/"
Võibolla saab seda ka konfiguratsioonifailist näppida, aga mina laisa inimesena ei viitsinud asja inimlikult lahendada. Tavaliselt tahab pkg_replace tõmmata pakke ainult /blalba/packages-BSDVERSIOON/ kataloogist. Aga niimoodi jäävad saamata uuemad pakid ning paljud asjad tuleks käsitsi kompileerida.
Järgmisena tuleks tekitada konffail ja seal näperdada. Mina näiteks keelasin pordist openoffice'i ja firefoxi updatemise.
Ja nüüd kogu süsteemi uuendamiseks:
pkg_replace -Pa (enne updateme kõik, mis saab pakkidest) pkg_replace -a (ja siis need, mis jäid uuendamata, need laseme ise kokku)
libchk
Installida saab portsust /usr/ports/sysutils/libchk Otsib süsteemist mitte viidatud lib'e.
Linuxi binaarfailide käivitamine FreeBSD süsteemis
FreeBSD on võimeline ka käivitama Linux operatsioonisüsteemi jaoks mõeldud binaarfaile
Esmalt tuleb laadida Linuxi tugi
Selleks vajalik lisada rc.conf faili rida
linux_enable="YES"
Ja teha reboot või anda käsk
# kldload linux
seejärel võib paigaldada emulaatorite alt paketi linux_base mis sisaldab vajalikke programme nii i386 kui amd64 arhidektuurile
juhul kui Linuxi binaari käivitamisel tekib veateade
ELF binary type not known Abort
Siis probleem selles ,et ELF binaarfail vajab lisaks spetsiaalset nimetamist selleks ,et aidata FreeBSD kernelil teha vahet FreeBSD binaaril ja Linuxi omal. Seda saab teha brandelf käsuga
# brandelf -t Linux binaarfail
Kui endiselt ei tööta, näiteks teatab ELF interpreter /lib/ld-linux.so.2 not found võib proovida paigaldada paketi /usr/ports/emulators/linux_base-f10
Iseseisvatest lähtetekstidest kompileerimine
Soovides oma FreeBSD tundmise ja programmeerimise oskust proovile panna, või kuid teid huvita programmi portsu ega paketti pole, siis ei jää muud üle kui asuda otse lähtetekste kompileerima.
Näiteks kopeerige lähtetekstid kataloogi /usr/src ja pakkige lahti. Seejärel talitage tarkvaraga kaasas olevate juhiste kohaselt.
Lähtetekstidest paigaldatud tarkvara eemaldamiseks ei paku süsteem automaatseid mooduseid. Võimalik, et tarkvaraga on ühes sellised vahendid või tuleb teha seda tõepoolest käsitsi.
Lingid
Põhjalik tekst bsd.ee wikis tarkvara uuendamisest ja installimisest
http://bsd.ee/dwiki/doku.php?id=bsdeesti:securefest.workshop