
TL; DR: Haiku on spetsiaalselt personaalarvutite jaoks loodud operatsioonisĂŒsteem, seega on sellel mitmeid nippe, mis muudavad selle töölauakeskkonna teistest palju paremaks. Aga kuidas see toimib?
Avastasin Haiku, ĂŒllatavalt hea sĂŒsteemi. Olen siiani hĂ€mmastunud, kui sujuvalt see töötab, eriti vĂ”rreldes töölauakeskkondadega LinuxTĂ€na heidan pilgu kapoti alla. Vajadusel teen sĂŒgavama arusaamise huvides vĂ”rdlusi algse Macintoshi, Mac OS X-i ja töölauakeskkondadega. Linux (XDG standard saidilt freedesktop.org).
Ressursid ELF-i failides
Eile sain teada, et IconOMatic saab salvestada ikoone ELF-i kÀivitatavates failides rdef-ressurssidesse. TÀna tahan nÀha, kuidas see tegelikult töötab.
Ressursid? pÀrit , Macintoshi Finderi algne autor ja Macintoshi ressursihalduri "isa":
Olen mures traditsioonilise kodeerimise jĂ€ikuse pĂ€rast. Minu jaoks on juba idee koodiga kĂŒlmutatud rakendusest ilma vĂ”imaluseta midagi dĂŒnaamiliselt muuta kĂ”ige metsikum. KĂ€itusajal peaks olema vĂ”imalik vĂ”imalikult palju muuta. Rakenduse koodi ennast muidugi muuta ei saa, aga kindlasti saab midagi muuta ilma koodi uuesti kompileerimata?
Algses Macintoshis tegid nad nendele failidele andmejaotise ja ressursside sektsiooni, mis muutis selliste asjade salvestamise nagu ikoonid, tÔlked jms uskumatult lihtsaks. kÀivitatavates failides.
Macis kasutatakse seda , graafiline programm ressursside ootamatuks redigeerimiseks.

ResEdit algsel Macintoshil
TĂ€nu sellele sai vĂ”imalikuks muuta ikoone, menĂŒĂŒelemente, tĂ”lkeid jne. piisavalt lihtne, kuid nad siiski "reisivad" koos rakendustega.
Igal juhul oli sellel lĂ€henemisviisil suur puudus: see töötas ainult Apple'i failisĂŒsteemides, mis oli ĂŒks pĂ”hjusi, miks Apple loobus Mac OS X-ile ĂŒleminekul "ressursside sektsioonist".
Mac OS X-is soovis Apple failisĂŒsteemist sĂ”ltumatut lahendust, mistĂ”ttu nad vĂ”tsid kasutusele pakettide kontseptsiooni (alates NeXT-st), kataloogidest, mida failihaldur kĂ€sitleb "lĂ€bipaistmatute objektidena", nagu failid, mitte kataloogid. Iga pakett, millel on vormingus rakendus .app on muu hulgas ka fail Info.plist (mingis Apple'i ekvivalendis JSON-ile vĂ”i YAML-ile), mis sisaldab rakenduse metaandmeid.

VÔtmed faili Info.plist jaoks Mac OS X rakenduspaketist.
Ressursid, nagu ikoonid, kasutajaliidese failid ja muud, salvestatakse paketti failidena. Kontseptsioon naasis tegelikult NeXTis oma juurteni.

Mathematica.app versioonis NeXTSTEP 1.0 1989. aastal: kuvatakse terminalis failide kataloogina, kuid graafilises failihalduris ĂŒhe objektina.
Naaskem BeOS-i juurde, kontseptsioonide juurde, millel Haiku pĂ”hineb. Selle arendajad, kui nad PEF-ilt (PowerPC) ELF-ile (x86) (sama, mida kasutati...) lĂŒlitusid Linux) otsustasid ELF-failide lĂ”ppu lisada ressursisektsiooni. Selleks ei kasutanud nad omaenda ELF-sektsiooni, vaid lisasid selle lihtsalt ELF-faili lĂ”ppu. Selle tulemusel programm strip ja teised binutils'i utiliidid, sellest teadmata, lihtsalt kĂ€rpisid seda. SeetĂ”ttu on pĂ€rast ELF-failile ressursside lisamist BeOS-is kĂ”ige parem seda tööriistadega mitte manipuleerida. Linux.
Mis Haikuga praegu toimub? PÔhimÔtteliselt enam-vÀhem sama.
Teoreetiliselt oleks vÔimalik paigutada ressursse ELFi soovitud sektsiooni. Irc.freenode.net kanali #haiku arendajate sÔnul:
ELFi puhul oleks sektsioon mÔttekam... ainus pÔhjus, miks me seda nii ei tee, on see, et me tegime seda BeOS-is."
Ja seda pole mÔtet praegu muuta.
Ressursside haldamine
Ressursid on kirjutatud struktureeritud "ressursside" vormingus: sisuliselt ressursside loend koos suuruste ja seejÀrel nende sisuga. Mulle meenus .
Kuidas kontrollida Haiku ressursse? Kas on midagi sellist nagu ResEdit?
Vastavalt :
Rakenduspaketis pakutavate ressursside vaatamiseks saate kÀivitatava faili lohistada mÔnele programmile nagu . VÔite minna ka terminali ja kÀivitada kÀsu
listres ĐžĐŒŃ_ŃаĐčла.
Resourcer on HaikuDepotis saadaval, kuid minu jaoks jookseb see lihtsalt kokku.
Kuidas hallata ELF-failides olevaid ressursse? Kasutades rsrc О rdef. rdef failid on kogutud rsrc. Fail rdef on salvestatud lihtteksti vormingus, nii et sellega on palju lihtsam töötada. Failiformaat rsrc lisatud ELF faili lÔppu. Proovime mÀngida:
~> rc -h
Haiku Resource Compiler 1.1To compile an rdef script into a resource file:
rc [options] [-o <file>] <file>...To convert a resource file back into an rdef script:
rc [options] [-o <file>] -d <file>...Options:
-d --decompile create an rdef script from a resource file
--auto-names construct resource names from ID symbols
-h --help show this message
-I --include <dir> add <dir> to the list of include paths
-m --merge do not erase existing contents of output file
-o --output specify output file name, default is out.xxx
-q --quiet do not display any error messages
-V --version show software version and licenseSaate programmi kasutada xres kontrollimiseks ja kontrollimiseks:
/> xres
Usage: xres ( -h | --help )
xres -l <file> ...
xres <command> ...The first form prints this help text and exits.The second form lists the resources of all given files.The third form manipulates the resources of one or more files according to
the given commands.
(...)Olgu, proovime?
/> xres -l /Haiku/system/apps/WebPositive/Haiku/system/apps/WebPositive resources:type ID size name
------ ----------- ----------- --------------------
'MIMS' 1 36 BEOS:APP_SIG
'APPF' 1 4 BEOS:APP_FLAGS
'MSGG' 1 421 BEOS:FILE_TYPES
'VICN' 101 7025 BEOS:ICON
'VICN' 201 91 kActionBack
'VICN' 202 91 kActionForward
'VICN' 203 300 kActionForward2
'VICN' 204 101 kActionStop
'VICN' 206 243 kActionGoStart
'MSGG' 205 1342 kActionGo
'APPV' 1 680 BEOS:APP_VERSIONLisateavet ressursside ja vormingu kohta rdef sa oskad lugeda .
Standardsed ressursitĂŒĂŒbid
Kuigi saate ressurssidesse lisada mida iganes, on olemas mĂ”ned mÀÀratletud standardtĂŒĂŒbid:
app_signature: MIME-rakenduse tĂŒĂŒp, faili avamise kaardistamiseks, kĂ€ivitamiseks, IPC-ks jne.app_name_catalog_entry: Kuna rakenduse nimi on tavaliselt inglise keeles, saate mÀÀrata kohad, kus tĂ”lgitud nimed asuvad, et erinevate keelte kasutajad nĂ€eksid soovi korral tĂ”lgitud rakenduse nime.app_version: tĂ€pselt see, mida sa arvasidapp_flags: nĂ€itabregistrarkuidas taotlust menetleda. Ma arvan, et selles on rohkem kui esmapilgul paistab. NĂ€iteks on olemasB_SINGLE_LAUNCH, mis sunnib sĂŒsteemi kĂ€ivitama uue rakendusprotsessi iga kord, kui kasutaja seda taotleb (sama pĂ”himĂ”tet kasutatakse enamiku rakenduste puhul) Linux). SööB_MULTIPLE_LAUNCH, mis pĂ”hjustab protsessi kĂ€ivitamise iga faili. LĂ”puks on olemasB_EXCLUSIVE_LAUNCH, mis sunnib sĂŒsteemi korraga kĂ€ivitama ainult ĂŒhte protsessi, olenemata sellest, kui tihti kasutajad seda kĂ€ivitavad (nĂ€iteks töötab Firefox nii Linux; sama tulemuse saab saavutada Qt rakendustes funktsiooni abil ). Rakendused koosB_EXCLUSIVE_LAUNCHsaavad teate, kui kasutaja proovib neid uuesti kĂ€ivitada: nĂ€iteks saavad nad faili tee, mida kasutaja soovib nende abiga avada.vector_icon: Vektorrakenduse ikoon (BeOS-il ei olnud vektorikoone, enamiku rakenduste kĂ€ivitatavates failides oli selle asemel kaks rasterikooni).
Loomulikult saate lisada soovitud ID-de ja tĂŒĂŒpidega ressursse ning seejĂ€rel lugeda neid rakenduses endas vĂ”i teistes klassi kasutavates rakendustes BResources. Kuid kĂ”igepealt vaatame ikoonide pĂ”nevat teemat.
Haiku stiilis vektorikoonid
Muidugi pole ainult Haiku see, mis on valinud parima ikoonivormingu, ka töölauakeskkondadega on olukord selles osas erinev. Linux kaugel ideaalist:
me@host:~$ ls /usr/share/icons/hicolor/
128x128 256x256 512x512 index.theme
160x160 28x28 64x64 scalable
16x16 32x32 72x72 symbolic
192x192 36x36 8x8
22x22 42x42 96x96
24x24 48x48 icon-theme.cacheSeda vaadates on juba tunda, mis tĂŒkk see on.
Muidugi on olemas skaleeritav, mis, nagu arvata vĂ”ib, sisaldab vektorikoone. Miks siis midagi muud on? Sest vektorgraafika renderdamine vĂ€ikeste suuruste korral ei pruugi olla ideaalne. Soovitav on, et erinevate suuruste jaoks oleksid optimeeritud erinevad valikud. Töölauakeskkondades Linux See saavutatakse erineva suurusega ikoonide hajutamisega kogu failisĂŒsteemis.
me@host:~$ find /usr/share/icons/ -name 'firefox.*'
/usr/share/icons/HighContrast/16x16/apps/firefox.png
/usr/share/icons/HighContrast/22x22/apps/firefox.png
/usr/share/icons/HighContrast/24x24/apps/firefox.png
/usr/share/icons/HighContrast/256x256/apps/firefox.png
/usr/share/icons/HighContrast/32x32/apps/firefox.png
/usr/share/icons/HighContrast/48x48/apps/firefox.png
/usr/share/icons/elementary-xfce/apps/128/firefox.png
/usr/share/icons/elementary-xfce/apps/16/firefox.png
/usr/share/icons/elementary-xfce/apps/22/firefox.png
/usr/share/icons/elementary-xfce/apps/24/firefox.png
/usr/share/icons/elementary-xfce/apps/32/firefox.png
/usr/share/icons/elementary-xfce/apps/48/firefox.png
/usr/share/icons/elementary-xfce/apps/64/firefox.png
/usr/share/icons/elementary-xfce/apps/96/firefox.png
/usr/share/icons/hicolor/128x128/apps/firefox.pngPange tĂ€hele: Firefoxi erinevate versioonide kontseptsioon puudub. Seega ei ole vĂ”imalik graatsiliselt kĂ€sitleda olukorda, kus sĂŒsteemis on mitu rakenduse versiooni.

Firefoxi ikoonid on eri versioonides erinevad. Seda pole veel vÔimalik Firefoxis hallata. Linux ilma mitmesuguste karkudeta.
Mac OS X kÀsitleb seda veidi peenemalt:
Mac:~ me$ find /Applications/Firefox.app | grep icns
/Applications/Firefox.app/Contents/MacOS/crashreporter.app
/Contents/Resources/crashreporter.icns
/Applications/Firefox.app/Contents/MacOS/updater.app/Contents/Resources/updater.icns
/Applications/Firefox.app/Contents/Resources/document.icns
/Applications/Firefox.app/Contents/Resources/firefox.icnsOn nĂ€ha, et on ĂŒks fail firefox.icns pakendis Firefox.app, mis sisaldab kĂ”iki suurusi, nii et sama rakenduse erinevatel versioonidel on erinevad ikoonid.
Palju parem! Ikoonid liiguvad koos rakendusega, kĂ”ik ressursid on ĂŒhes failis.
Tuleme tagasi Haiku juurde. HĂ€mmastav lahendus, eranditeta. Vastavalt :
Töötati vÀlja spetsiaalne HVIF-vorming, mis on optimeeritud vÀikeste suuruste ja kiire renderdamise jaoks. SeetÔttu on meie ikoonid enamasti palju vÀiksemad kui raster- vÔi laialdaselt kasutatavas SVG-vormingus.
Ja need on endiselt optimeeritud:

Ikoonide suurused HVIF-is vÔrreldes teiste vormingutega.
Erinevus on suurusjÀrgus!
Kuid maagia ei lÔpe siin. Sama HVIF vÔib sÔltuvalt kuvatavast suurusest nÀidata erinevat detailsuse taset, kuigi tegemist on vektorvorminguga.

Erinevad detailsuse tasemed (LOD) olenevalt renderdamise suurusest
NĂŒĂŒd miinustest: te ei saa vĂ”tta SVG-d, visata seda ImageMagicki ja kutsuda seda pĂ€evaks; HVIF-vormingus ikooni loomiseks peate lĂ€bima mitu tsĂŒklit. selgitused. Kuid IconOMatic suudab SVG-d importida ĂŒsna ebatĂ€iuslikult; umbes 90% SVG ĂŒksikasjadest imporditakse teatud tĂ”enĂ€osusega, ĂŒlejÀÀnud 10% tuleb kĂ€sitsi konfigureerida ja muuta. Lugege lĂ€hemalt, kuidas HVIF oma vĂ”lu teeb blogis
Ikooni lisamine rakendusele
NĂŒĂŒd saan loodud paketile ikooni lisada , vĂ”ttes arvesse kogu saadud teavet.
Kuna ma ei soovi praegu oma QtQuickAppi "Tere, maailm" jaoks oma ikooni joonistada, tÔmban selle Qt Creatorist vÀlja.
/Haiku/home> xres /Haiku/system/apps/QtCreator/bin/Qt Creator -o /Haiku/home/QtQuickApp/QtQuickApp -a VICN:101:BEOS:ICON /Haiku/system/apps/QtCreator/bin/Qt CreatorKontrollime, kas ikoon on kopeeritud:
/Haiku/home> xres -l /Haiku/home/QtQuickApp/QtQuickApp/Haiku/home/QtQuickApp/QtQuickApp
resources:type ID size name
------ ----------- ----------- --------------------
'VICN' 101 152238 BEOS:ICONNÀeb hea vÀlja, aga miks on nii, et uue ikooni kopeerimisel seda ei kuvata?

Kopeeritud VICN:101:BEOS:ICONs ei ole veel failihalduris rakenduse ikoonina kasutusel
Millest ma ilma jÀin?
Arendaja kommentaar:
Peame looma faili
rdefkĂ”igi ressurssidega, seejĂ€rel kĂ€ivitage kĂ€skrc ĐžĐŒŃ.rdef, loob see faili.rsrc. SeejĂ€rel peate kĂ€su kĂ€ivitamaresattr -o ĐžĐŒŃ_Đ±ĐžĐœĐ°ŃĐœĐžĐșа ĐžĐŒŃ.rsrc. VĂ€hemalt kasutan selliseid kĂ€ske oma skriptidele ikoonide lisamiseks.
Noh, ma tahtsin luua ressurssi, mitte atribuuti. Ma olen tÔesti segaduses.
Nutikas vahemĂ€llu salvestamine failisĂŒsteemi abil
ELF-i atribuutide avamine ja lugemine on aeglane. Nagu ma eespool kirjutasin, on ikoon kirjutatud ressursina faili endasse. See meetod on usaldusvÀÀrsem ja vĂ”imaldab teil teise failisĂŒsteemi kopeerimise ĂŒle elada. SeejĂ€rel kopeeritakse see aga ka nĂ€iteks failisĂŒsteemi atribuuti BEOS:ICON. See töötab ainult teatud failisĂŒsteemides, nagu BFS. SĂŒsteemi kuvatavad ikoonid (Trackeris ja Deskbaris) loetakse sellest laiendatud atribuudist, kuna see lahendus töötab kiiresti. MĂ”nes kohas (kus kiirus pole oluline, nĂ€iteks tĂŒĂŒpiline âTeaveâ aken) saab sĂŒsteem ikooni otse failis olevast ressursist. Kuid see pole veel lĂ”pp. Pidage meeles, et Macis vĂ”ivad kasutajad asendada rakenduste, kataloogide, dokumentide ikoonid enda omadega, kuna Macis on vĂ”imalik teha nĂ€iteks neid "olulisi" asju. . Haiku puhul peaksite kĂ€sitlema ressurssi (failis) kui rakendusega kaasas olevat algset ikooni ja atribuuti (BFS-failisĂŒsteemis) kui midagi, mis vĂ”imaldab kasutajal teha soovi korral muudatusi (kuigi vihje, GUI kohandatud ikooni ikooni ĂŒlaossa lisamiseks on valikuline). pole veel vaikimisi rakendatud).
FailisĂŒsteemi atribuutide kontrollimine
Koos resaddr FailisĂŒsteemi atribuute on vĂ”imalik kontrollida ja seadistada.
/> resattr
Usage: resattr [ <options> ] -o <outFile> [ <inFile> ... ]
Reads resources from zero or more input files and adds them as attributes
to the specified output file, or (in reverse mode) reads attributes from
zero or more input files and adds them as resources to the specified output
file. If not existent the output file is created as an empty file.
(...)See on sisuliselt "liim", mis teostab (usaldusvÀÀrsete) ressursside ja (kiirete) failisĂŒsteemi atribuutide vahelise edasi-tagasi teisendamise. Ja kuna sĂŒsteem eeldab ressursside vastuvĂ”tmist ja kopeerib automaatselt, siis ma selle pĂ€rast enam ei muretse.
hpkg pakettide vÔlu
Praegu kasutatakse (enamasti) Haiku programmide hankimiseks pakette .hpkg. Ărge laske end eksitada lihtsast nimest: .hpkg-vorming toimib tĂ€iesti erinevalt teistest sarnaste nimedega vormingutest, mida olete kohanud, sellel on tĂ”elised supervĂ”imed.
Traditsiooniliste paketivormingute puhul olin ma pikka aega Ă€rritunud selle asjaolu pĂ€rast: laadite alla ĂŒhe asja (paketi) ja sĂŒsteemi installitakse teine ââââ(paketi sees olevad failid). Traditsioonilisel viisil paketi installimisel on failide haldamine (nĂ€iteks kustutamine) ĂŒsna keeruline. Ja seda kĂ”ike pakendi sisu tĂ”ttu laiali kogu failisĂŒsteemis, sealhulgas kohad, kus tavakasutajal ei pruugi olla kirjutamisĂ”igust. See tekitab terve klassi programme - paketihalduridKuid juba installitud tarkvara ĂŒlekandmine nĂ€iteks teisele masinale, eemaldatavale draivile vĂ”i failiserverisse muutub veelgi keerulisemaks, kui mitte tĂ€iesti vĂ”imatuks. TavapĂ€rases sĂŒsteemis, mis pĂ”hineb Linux SĂŒsteemis vĂ”ib kergesti eksisteerida sadu tuhandeid kuni miljoneid eraldi faile. Loomulikult on see nii habras kui ka aeglane, nĂ€iteks sĂŒsteemi esmase installimise ajal, tavaliste pakettide installimisel, vĂ€rskendamisel ja eemaldamisel ning alglaadimismahu (juurpartitsiooni) teisele kettale kopeerimisel.
Ma töötan AppImage projekti kallal, mis on osaline lahendus lĂ”ppkasutaja rakendustele. See on tarkvara levitamise vorming, mis koondab rakenduse ja kĂ”ik selle sĂ”ltuvused ĂŒhte failisĂŒsteemi kujutisesse, mis paigaldatakse rakenduse kĂ€ivitamisel. See lihtsustab asju mĂ€rkimisvÀÀrselt, kuna samast ImageMagickist saab jĂ€rsku ĂŒks fail, mida saavad failihalduris hallata pelgalt surelikud. Kavandatud lĂ€henemisviis töötab ainult tarkvara puhul, nagu projekti nimigi ĂŒtleb, ja sellel on ka omad probleemid, kuna inimesed, kes levitavad tarkvara... Linux, nad nĂ€itavad alati nĂ€puga minu peale.
Tuleme tagasi Haiku juurde. Kas on suudetud leida optimaalne tasakaal traditsiooniliste paketisĂŒsteemide ja pildipĂ”hise tarkvara edastamise vahel? Tema pakid .hpkg tegelikult tihendatud failisĂŒsteemi kujutised. Kui sĂŒsteem kĂ€ivitub, ĂŒhendab kernel kĂ”ik installitud ja aktiivsed paketid ligikaudu jĂ€rgmiste kerneliteadetega:
KERN: package_daemon [16042853: 924] active package: "gawk-4.2.1-1-x86_64.hpkg"
KERN: package_daemon [16043023: 924] active package: "ca_root_certificates_java-2019_01_23-1-any.hpkg"
KERN: package_daemon [16043232: 924] active package: "python-2.7.16-3-x86_64.hpkg"
KERN: package_daemon [16043405: 924] active package: "openjdk12_default-12.0.1.12-1-x86_64.hpkg"
KERN: package_daemon [16043611: 924] active package: "llvm_libs-5.0.0-3-x86_64.hpkg"Lahe, jah? Oodake, siis lÀheb veel lahedamaks!
Seal on vÀga eriline pakett:
KERN: package_daemon [16040020: 924] active package: "haiku-r1~beta1_hrev53242-1-x86_64.hpkg"See sisaldab vĂ€ga minimalistlikku operatsioonisĂŒsteemi, sealhulgas tuuma. Uskuge vĂ”i mitte, isegi kernelit ennast ei eemaldata alglaadimisköitest (juurpartitsioonist), vaid laaditakse ettevaatlikult pakendist oma kohale .hpkgVau! Ma juba mainisin, et minu arvates tuleneb osa Haiku ĂŒldisest keerukusest ja sidususest asjaolust, et kogu sĂŒsteemi, alates kernelist ja aluseks olevast kasutajaruumist kuni paketihalduse ja töölaua infrastruktuurini, arendab ĂŒhiselt ĂŒks meeskond. Kujutage ette, kui palju erinevaid gruppe ja meeskondi oleks vaja millegi sellise kĂ€ivitamiseks, mis pĂ”hineb... Linux [Ma kujutan ette kutsikaprojektiLinux, â tĂ”lkija mĂ€rkus]SeejĂ€rel kujutage ette, kui kaua aega vĂ”tab selle lĂ€henemisviisi rakendamine distributsioonides. Ăeldakse: vĂ”tke lihtne ĂŒlesanne, jagage see erinevate arendajate vahel ja see muutub nii keeruliseks, et seda pole enam vĂ”imalik lahendada. Haiku oli antud juhul minu jaoks silmiavav kogemus. Ma arvan, et just see toimubki. Linux ŃĐ”ĐčŃĐ°Ń (Linux sel juhul on see virna tĂ€histav kollektiivne termin Linux/GNU/dpkg/apt/systemd/Xorg/dbus/Gtk/GNOME/XDG/Ubuntu).
SĂŒsteemi tagasipööramine hpkg abil
Kui sageli juhtub jĂ€rgmine olukord: vĂ€rskendus Ă”nnestus ja siis selgub, et midagi ei tööta nii nagu peaks? Kui kasutate tavalisi paketihaldureid, on keeruline taastada sĂŒsteemi olekut ajahetkele enne uute pakettide installimist (nĂ€iteks juhul, kui midagi lĂ€ks valesti). MĂ”ned sĂŒsteemid pakuvad lahendusi failisĂŒsteemi hetktĂ”mmiste kujul, kuid need on ĂŒsna tĂŒlikad ja neid ei kasutata kĂ”igis sĂŒsteemides. Haiku lahendab selle pakettide abil .hpkg. Kui paketid sĂŒsteemis muutuvad, siis vanu pakette ei kustutata, vaid need salvestatakse sĂŒsteemi alamkataloogidesse nagu /Haiku/system/packages/administrative/state-<...>/ pidevalt. LĂ”petamata toimingud salvestavad oma andmed alamkataloogidesse /Haiku/system/packages/administrative/transaction-<...>/.

Sisu /Haiku/system/packages/administrative. Kataloogid âState...â sisaldavad tekstifaile aktiivsete pakettide nimedega ja kataloogid âTehing...â sisaldavad pakette endid.
"Vana aktiivne olek", s.o. nimekirja .hpkg enne muudatusi aktiivsed paketid salvestatakse pÀrast iga toimingut failihalduris tekstifailis /Haiku/system/packages/administrative/state-<...>/activated-packages. Sarnaselt kirjutatakse tekstifaili uus "aktiivne olek". /Haiku/system/packages/administrative/activated-packages.
Kataloog /Haiku/system/packages/administrative/state-<...>/ sisaldab ainult tekstifaili selle oleku aktiivsete pakettide loendiga (pakettide eemaldamiseta installimise korral) ja kui paketid eemaldati vÔi vÀrskendati, sisaldab olekukataloog pakettide vanu versioone.
Kui sĂŒsteem kĂ€ivitub, tehakse pakettide loendi pĂ”hjal otsus pakettide aktiveerimise (ĂŒhendamise) kohta. Nii lihtne see ongi! Kui allalaadimise ajal lĂ€heb midagi valesti, vĂ”ite allalaadimishalduril kĂ€skida kasutada teist, vanemat loendit. Probleem lahendatud!

Haiku allalaadija. Iga sisenemispunkt kuvab vastava "aktiivse oleku"
Mulle meeldib lĂ€henemine, et aktiivse oleku loendina on lihtsad tekstifailid, mille nimed on kergesti mĂ”istetavad .hpkg. See on teravas kontrastis masinatele-mitte-inimestele ehitatud olemusega. OSTree vĂ”i Flatpak failisĂŒsteemist (samal tasemel Microsoft GUID-iga).

Iga ajahetke aktiivsete pakettide loend
Konfiguratsiooniandmed
Ilmselt kataloogis /Haiku/system/packages/administrative/writable-files sisaldab pakettide konfiguratsioonifaile, kuid need on kirjutatavad. LÔppude lÔpuks, nagu mÀletate, .hpkg monteeritud kirjutuskaitstud. Seega tuleb need failid enne kirjutamist pakettidest kopeerida. Omab tÀhendust.
GUI integratsioon .hpkg sĂŒsteemi jaoks
Vaatame nĂŒĂŒd, kuidas need lĂ€ikivad kotid .hpkg tulla toime kasutaja töökeskkonda (UX) integreerimisega. Haiku on ju mĂ”eldud isiklikuks kasutamiseks. Isiklikult seadsin lati kĂ”rgele, kui vĂ”rrelda kasutajakogemust pakettidega .app sama kogemusega Macintoshis .hpkgMa ei hakka seda olukorda isegi töökeskkondadega vĂ”rdlema. Linux, sest see on kĂ”igi teistega vĂ”rreldes tĂ€iesti kohutav.
Meelde tulevad jÀrgmised stsenaariumid:
- Soovin nÀha paki sisu
.hpkg - Soovin installida paketti
- Soovin pakendi eemaldada
- Ma tahan eemaldada midagi, mis tuli sĂŒsteemi osana paketist
- Ma tahan kopeerida midagi, mis tuli sĂŒsteemi paketi osana
- Soovin alla laadida kĂ”ik paketi sĂ”ltuvused, mis ei pruugi iga Haiku installi osaks olla (nĂ€iteks mul on fĂŒĂŒsiliselt isoleeritud masin, millel puudub Interneti-ĂŒhendus.)
- Ma tahan oma paketid (vÔi osa neist) eraldi teisaldada teise asukohta, eraldi alglaadimisköitest (juurpartitsioonist) (sest mul nÀiteks pole sellel piisavalt ruumi).
See peaks hÔlmama enamikku minu igapÀevase töö suurematest juhtumitest. Noh, alustame.
Pakendi sisu kontrollimine
Aga Mac ParemklĂ”psan lihtsalt pakendil, et see avada ja Finderis sisu vaadata. LĂ”ppude lĂ”puks on see tegelikult lihtsalt varjatud kataloog! (Ma tean, et seal on pakid .pkg sĂŒsteemi osa jaoks, mis ei ole rakendused, kuid tavakasutajad nendega enamasti ei suhtle).
Haiku peal ParemklÔpsan pakendil ja seejÀrel "Sisu", et nÀha, mis seal sees on. Kuid siin on ainult failide loend, ilma vÔimaluseta neid topeltklÔpsuga avada.
Oleks palju parem, kui oleks vĂ”imalus (ajutiselt) pakett paigaldada .hpkg vaadata failihalduri kaudu ja kasutaja ei peaks juurutamise ĂŒksikasjade pĂ€rast muretsema. (Muide, saate avada .hpkg pakkida sisse Expander, mis saab selle lahti pakkida nagu mis tahes muu arhiivi).

HaikuDepoti liides vÔimaldab vaadata paketifailide loendit, kuid sisu pole vÔimalik vaadata nÀiteks topeltklÔpsuga README.md
Mac vÔidab selles kategoorias, kuid soovitud HaikuDepoti funktsioonide lisamine ei tohiks olla liiga keeruline.
Paketi installimine GUI kaudu
Aga Mac, enamik kettakujutisi .dmg sisaldavad pakke .app. TopeltklĂ”psake ketta kujutist ja seejĂ€rel kopeerige pakett, nĂ€iteks lohistades selle sisse /Applications Finderis. See on minu jaoks ĂŒtlematagi selge, kuid olen kuulnud, et mĂ”ned algajad ei pruugi sellega hakkama saada. Vaikimisi "soovitab" Apple kogu sĂŒsteemi hĂ”lmavat kataloogi /Applications (NeXT-is oli see nii vĂ”rgus kui ka individuaalne), kuid saate hĂ”lpsalt oma rakendused failiserverisse vĂ”i alamkataloogi panna $HOME/Applications, kui sulle nii meeldib.
Haiku peal, topeltklĂ”psake paketil ja seejĂ€rel klĂ”psake nuppu âInstallâ â see ei saaks olla lihtsam. Mind aga huvitab, mis juhtub, kui paketil on HaikuPortsis sĂ”ltuvused saadaval, aga see pole veel installitud. Linux Nad tĂ”esti ei tea, mida sellises olukorras teha, aga lahendus on ilmne: kĂŒsida kasutajalt, kas ta peab sĂ”ltuvusi alla laadima ja installima. Just seda Haiku teebki.

Laadisin kĂ€sitsi alla paketi âsanityâ ja klĂ”psasin sellel; paketihaldur teab, kust oma sĂ”ltuvused hankida (eeldusel, et repositooriumid on sĂŒsteemis juba registreeritud). Mitte iga distributsioon... Linux Ta saab seda teha.
Teine vĂ”imalus on kasutada failihaldurit, lihtsalt lohistades .hpkg pakendis vĂ”i sisse /Haiku/system/packages (vaikimisi kogu sĂŒsteemi hĂ”lmava installi jaoks) vĂ”i sisse /Haiku/home/config/packages (individuaalseks paigalduseks; topeltklĂ”psamisel pole saadaval â mind ikka ajab nĂ€rvi selles kohas olev sĂ”na "config", mis minu jaoks on antud juhul "seadete" sĂŒnonĂŒĂŒm). Ja mitme kasutaja kontseptsioon pole isegi Haiku jaoks veel saadaval (tĂ”enĂ€oliselt sellepĂ€rast see nii lihtne ongi â ma ei tea, vĂ”ib-olla teevad mitme kasutaja vĂ”imalused töölaua töökeskkonna jaoks asja asjatult keeruliseks).
Haiku vĂ”idab selles kategoorias, sest see vĂ”ib töötada mitte ainult rakendustega, vaid ka sĂŒsteemiprogrammidega.
Paketi eemaldamine GUI-st
Aga Mac, peate rakenduse ikooni prĂŒgikasti lohistama ja see on kĂ”ik. Lihtsalt!
Haiku peal, esiteks peate leidma, kus pakett sĂŒsteemis asub, kuna installite selle harva Ă”igesse kohta (sĂŒsteem teeb kĂ”ik). Tavaliselt peate sisse vaatama /Haiku/system/packages (ĂŒlesĂŒsteemi hĂ”lmava vaikeinstalliga) vĂ”i sisse /Haiku/home/config/packages (Kas ma mainisin, et "config" on vale nimetus?). SeejĂ€rel lohistatakse rakendus lihtsalt prĂŒgikasti ja ongi kĂ”ik.
Lihtsalt! Seda ma siiski ei ĂŒtleks. Siin on see, mis tegelikult toimub:

See juhtub, kui lohistate rakenduse prĂŒgikasti /Haiku/system/packages
Ăritasin just oma eilse QtQuickAppi rakenduse "Tere maailm" prĂŒgikasti teisaldada. Ma ei proovinud sĂŒsteemikataloogi teisaldada, ja kuna kĂ”ik paketid on installitud sĂŒsteemikataloogi, on paketti vĂ”imatu eemaldada .hpkg ilma muutusteta "selle sisu". Tavakasutaja ehmuks ja vajutaks vaikimisi mÀÀratud nuppu "TĂŒhista".
Selgitab :
See postitus on ĂŒle 10 aasta vana. TĂ”enĂ€oliselt peame selle konfigureerima nii, et hoiatus ilmuks ainult siis, kui pakett ise teisaldatakse. Tavakasutajad ei pea seda niikuinii tegema.
Olgu, vĂ”ib-olla peaksin seda tegema HaikuDepotiga? Ma topeltklĂ”psan pakendil /Haiku/system/packages, oodates nupu âDesinstalliâ ilmumist. Ei, seal on (ainult) "Install". "Desinstalli", kus sa oled?
LÔbu pÀrast proovisin nÀha, mis juhtuks, kui klÔpsan juba installitud paketil "Install". See selgub nii:

See juhtub siis, kui proovite installida juba installitud paketti.
Ilmub jÀrgmine:

Kui klÔpsate eelmises aknas "Rakenda muudatused", nÀeb see vÀlja selline
Eeldan, et tegemist on tarkvaraveaga, rakenduse link on juba olemas. [autor linki ei andnud - u. tÔlkija]
Kiire lahendus: lisage nupp "Desinstalli", kui pakett on juba sees
/Haiku/system/packagesvÔi sisse/Haiku/home/config/packages.
HaikuDepotis installitud pakettide loendit vaadates nÀen nimekirjas oma paketti ja saan selle eemaldada.
Selles kategoorias vĂ”idab Mac. Kuid ma kujutan ette, et Ă”ige hÀÀlestuse korral on Haiku kasutajakogemus parem kui Macis. (Ăks arendajatest hindas seda nii: "VĂ€hem kui tund aega HaikuDepotile mÀÀratud funktsionaalsuse lisamiseks, kui oskate natuke C++-i, kas on vabatahtlikke?)
Millegi pakendist eemaldamine
Proovime eemaldada rakendust ennast, mitte paketti .hpkg, millest see tuli (ma kahtlen, et "lihtsurelike" jaoks on vahet).
Aga Mac, töötab kasutaja tavaliselt failiga .dmgkust rakenduspakett pĂ€rineb .app. Tavaliselt pildid .dmg kogutakse allalaadimiste kataloogi ja kasutaja kopeerib paketid sinna /Applications. Arvatakse, et paljud kasutajad ise ei tea, mida nad teevad, seda hĂŒpoteesi kinnitab endine Apple'i töötaja. (Ăks asi, mis mulle Macis ei meeldi. Ja nĂ€iteks AppImage'i puhul pole rakendusel ja paketil, milles see oli, vahet. Lohistage ikoon prĂŒgikasti = see on kĂ”ik. Lihtne!)
Haiku peal, on ka jaotus apps/ Đž packages/, seega kahtlen, kas see muutis selle kasutajatele selgemaks. Aga mis juhtub, kui lohistate rakenduse sealt apps/ Lisa ostukorvi:

See juhtub, kui proovite failist vÔetud rakendust eemaldada .hpkg
Tehniliselt on see Ă”ige (rakendus majutatakse ju esiteks kirjutuskaitstud failisĂŒsteemis), kuid see pole kasutajale eriti kasulik.
Kiire lahendus: soovitage kustutamiseks kasutada GUI-d
.hpkg
LĂ”bu pĂ€rast proovisin rakendust dubleerida, vajutades Alt+D. Sain teate "Kirjutuskaitstud köitel objekte ei saa teisaldada ega kopeerida." Ja kĂ”ik sellepĂ€rast /system (Pealegi /system/packages Đž /system/settings) on packagefsi ĂŒhenduspunkt (pidage meeles, kuidas see vĂ€ljundis kuvatakse df?). Kahjuks kĂ€su vĂ€ljund mount ei selgita olukorda (nagu ĂŒhes eelmises artiklis öeldi), mountvolume ei nĂ€ita seda, mida otsite (ilmselt silmuse kaudu paigaldatud paketid .hpkg ei peeta "köideteks") ja unustasin ka alternatiivsed kĂ€sud.
Selles kategoorias ei vÔitnud keegi peale AppImage'i (aga kui tÀiesti aus olla, on see kallutatud arvamus). Siiski vÔib ette kujutada, et pÀrast nÀpistamist on Haiku kasutajakogemus parem kui Macil.
MÀrkus: peate vÀlja selgitama, mis on "maht" seoses jaotisega. See on ilmselt sarnane "kausta" ja "kataloogi" suhtega: enamik katalooge kuvatakse failihalduris kaustadena, kuid mitte kÔik (nÀiteks failidena kÀsitletavad paketid). Kas selline vÀljapanek teeb minust ametliku nohiku?
Paketi sisu kopeerimine teise sĂŒsteemi
Aga Mac, lohistan pakki rumalalt .app, ja kuna sÔltuvused on pakendi sees, liiguvad need koos.
Haiku peal, lohistan rakendust, kuid sĂ”ltuvusi ei töödelda ĂŒldse.
Kiire lahendus: selle asemel soovitame lohistada kogu pakett `.hpkg koos vÔimalike sÔltuvustega.
Mac vĂ”idab selles kategoorias selgelt. VĂ€hemalt minu jaoks, nende paradigma armastaja jaoks. Peaksin selle Haikule kopeerima .hpkg rakenduse asemel, aga sĂŒsteem mulle seda ei paku...
Laadige alla pakett koos kÔigi selle sÔltuvustega
Mitte iga masin pole kogu aeg internetiga ĂŒhendatud. Tegelikult on mĂ”ned masinad (jah, ma vaatan teid, moodsad) Windows, Mac ja Linux) unusta see Ă€ra. Minu jaoks on oluline, et saaksin minna nĂ€iteks internetikohvikusse, laadida tarkvara eemaldatavale draivile, sisestada selle draivi oma koduarvutisse ja olla kindel, et kĂ”ik töötab [riskantne tĂŒĂŒp, et sellist asja teha Windows⊠â tĂ”lkija mĂ€rkus].
Selle tulemusel satun ma tavapÀrasest veidi sagedamini rahulolematutesse sÔltuvustesse Windows О Linux.
Aga Mac see on tavaliselt ĂŒks fail, peate vaid alla laadima .dmg. Enamasti pole sellel muid sĂ”ltuvusi peale nende, mille MacOS ise pakub vaikimisi. Erandiks on keerulised rakendused, mis nĂ”uavad sobivat tĂ€itmiskeskkonda, nĂ€iteks java.
Haiku peal paketi allalaadimine .hpkg NĂ€iteks sama rakenduse jaoks javas ei pruugi piisata, kuna java vĂ”ib sihtmasinas olemas olla vĂ”i mitte. Kas antud paketi kĂ”iki sĂ”ltuvusi on vĂ”imalik kuidagi alla laadida? .hpkg, vĂ€lja arvatud need, mis on vaikimisi installitud Haikusse ja peaksid seetĂ”ttu olema igas Haiku sĂŒsteemis?
Mac vĂ”idab selle kategooria vĂ€ikese ĂŒlekaaluga.
Kommentaarid Mr. waddlesplash:
Programmi kirjutamine, mis kogub pakettidena kÔik rakenduse sÔltuvused
.hpkginimesele, kes tunneb Haiku sisemist tööd, piisab umbes 15 minutist. Selle toetuse lisamine polegi nii keeruline, kui selleks on reaalne vajadus. Kuid minu jaoks on see haruldane olukord.
Hoiame hinge kinni kuni selle sarja jÀrgmise artiklini.
Pakkide teisaldamine eraldi kohta
Nagu ma varem kirjutasin, tahan oma pakid paigutada .hpkg (hĂ€sti vĂ”i osa neist) spetsiaalsesse kohta, mis on tavapĂ€rasest alglaadimismahu (juurpartitsiooni) paigutusest eraldi. Tavalisel (mitte nii teoreetilisel) juhul on selle pĂ”hjuseks see, et mul saab (sisseehitatud) ketastelt pidevalt vaba ruumi, ĂŒkskĂ”ik kui suured need ka poleks. Ja tavaliselt ĂŒhendan vĂ€lised draivid vĂ”i vĂ”rgujagamised seal, kus minu rakendused asuvad.
Aga Mac Ma lihtsalt kolin pakke .app irdkettale vÔi vÔrgukataloogile Finderis ja ongi kÔik. Saan endiselt topeltklÔpsata, et rakendus avada, nagu tavaliselt alglaadimismahust. Lihtsalt!
Haiku peal, nagu mulle öeldi, saab seda saavutada minu liigutamisega .hpkg paketid irdkettale vĂ”i vĂ”rgukataloogile, kuid siis peate kasutama konsoolis mĂ”nda dokumenteerimata kĂ€sku, et need sĂŒsteemi ĂŒhendada. Ma ei tea, kuidas seda teha ainult GUI-ga.
Selles kategoorias vÔidab Mac.
Vastavalt hr. waddlesplash:
See on tavakasutusel pĂ”hinev optimeerimine. Kui nĂ”udlust on rohkem kui ĂŒhelt kasutajalt, siis rakendame seda. Igal juhul on kolmanda osapoole juurutamise vĂ”imalus.
Sellest rÀÀgime jÀrgmises artiklis.
VÔrgukataloogidest rÀÀkides oleks tore (ma arvan, et LAN-i osapooled), kui oleks olemas lihtsad, leitavad, kogu vÔrku hÔlmavad rakendused (nagu Zeroconf), mida saab kopeerida kohalikku arvutisse vÔi kÀivitada otse kohalikust vÔrgust. Loomulikult on arendajatel vÔimalus loobuda kaudu app_flags.
LĂ”pparuanne hpkg sĂŒsteemi integreerimise kohta GUI-ga
Arvan, et eelkÔige lÔimumise suhtelise uudsuse tÔttu .hpkg GUI jÀtab endiselt soovida. Igatahes on paar asja, mida saaks UX-i osas parandada...
Veel ĂŒks asi: Kerneli silumismaa
Oleks tore, kui saaks nÀiteks kerneli paanika ajal kÀske sisestada syslog | grep usb. Noh, haikul on see vÔimalik tÀnu Kernel Debug Landile. Kuidas nÀete seda maagiat tegevuses, kui kÔik töötab nii, nagu peab, ilma tuumapaanikasse sattumata? Lihtne, vajutades Alt+PrintScn+D (silumismnemoonika). kohe meenub , mis vÔimaldas algsetel Macintoshi arendajatel silurisse siseneda (muidugi, kui see oli installitud).
JĂ€reldus
Hakkan mĂ”istma, et Haiku sĂŒsteemi keerukus tuleneb sellest, et tööd teeb ĂŒks vĂ€ike meeskond, keskendudes selgelt töökeskkonnale, kusjuures kĂ”ik sĂŒsteemi kihid on ligipÀÀsetavad.
Terav kontrast maailmaga Linux/GNU/dpkg/apt/systemd/Xorg/dbus/Gtk/GNOME/XDG/Ubuntu, kus kĂ”ik on sedavĂ”rd vĂ€ikesteks tĂŒkkideks purustatud, et abstraktsioon istub abstraktsiooni peal ja sĂ”idab karkudega.
Samuti oli arusaamine, kuidas sĂŒsteem .hpkg ĂŒhendab traditsiooniliste paketihaldurite, Snappy, Flatpaki, AppImage'i ja isegi btrfsi parimad tavad ja ĂŒhendab need Maci "lihtsalt töötab" lĂ€henemisviisiga.
Miski justkui "lĂŒlitus" mu peas ja ma sain aru, kuidas sĂŒsteem .hpkg teab, kuidas minema veereda, lihtsalt talle otsa vaadates. Kuid see pole mina, vaid sĂŒsteemi ilu ja lihtsus. Suur osa sellest on inspireeritud algse Maci vaimust.
Jah, brauseris sirvimine vĂ”ib olla tĂ”mblev ja töötada nagu tigu, rakendused vĂ”ivad puududa (ei ole Gtk, Electron - arendajad jĂ€reldasid, et need ei lĂ€he hĂ€sti keerukaks), video ja 3D-kiirendus vĂ”ivad tĂ€iesti puududa, kuid ma siiski meeldib see sĂŒsteem. Neid asju saab ju parandada ja need ilmnevad varem vĂ”i hiljem. See on ainult aja kĂŒsimus ja vĂ”ib-olla ka pisut punasilm.
Abi pakkuda ei oska, aga ma arvan, et see hakkab nĂŒĂŒdsest peale aasta haiku töölaual.
Juhuslikud probleemid
VÔib-olla on taotlused juba olemas vÔi peaksin need avama?
- BeScreenCapture peaks saama eksportida GIF-i nagu Peek. Seda saab teha ffmpeg-iga, mis on juba Haiku jaoks saadaval. .
- Ekraanipildi tarkvara ei suuda jÀÀdvustada modaalset akent, vaid jÀÀdvustab kogu ekraani
- Ekraanipilte ei saa kÀrpida WonderBrushi kÀrpimistööriistaga ja seejÀrel tulemust faili salvestada
- Mulle ei meeldi Haiku kĂ€sikursor eriti, aga arvan, et see on seotud sooja nostalgilise tundega. See on eriti tĂŒĂŒtu Kritas kĂ€rpimistööriista kasutamisel, kuna selle tulemuseks on ebatĂ€pne kĂ€rpimine (vt kĂ€esoleva artikli modaaldialoogide ekraanipilte). Ristkursor oleks suurepĂ€rane. .
Proovi ise! LÔppude lÔpuks pakub Haiku projekt loodud pilte DVD-lt vÔi USB-lt kÀivitamiseks . Installimiseks laadige lihtsalt pilt alla ja kirjutage see mÀlupulgale
Kas teil on kĂŒsimusi? Kutsume teid venekeelsesse .
Vea ĂŒlevaade:
PÀrit tÔlge: see on Haiku-teemalise sarja kuues artikkel.
Artiklite loend:
Allikas: www.habr.com
