Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan

TL; DR: Haiku mangrupikeun sistem operasi anu dirarancang khusus pikeun PC, janten gaduh sababaraha trik anu ngajantenkeun lingkungan desktopna langkung saé tibatan anu sanés. Tapi kumaha gawéna?

cikeneh Kuring manggihan Haiku, hiji sistem disangka alus. Kuring masih heran kumaha lancarna jalanna, khususna dibandingkeun sareng lingkungan desktop Linux. Dinten ieu kuring bakal ningali handapeun tiung. Dimana dipikabutuh pikeun pamahaman anu langkung jero, kuring bakal ngabandingkeun sareng lingkungan desktop Macintosh, Mac OS X sareng Linux asli (standar XDG ti freedesktop.org).

Sumberdaya dina file ELF

Kamari kuring diajar yén IconOMatic tiasa nyimpen ikon dina sumber rdef dina executable ELF. Dinten abdi hoyong ningali kumaha eta bener jalan.

Sumberdaya? Fikmin от Bruce Horn, panulis asli Macintosh Finder sareng "bapa" Manajer Sumberdaya Macintosh:

Abdi hariwang ngeunaan sifat kaku tina coding tradisional. Pikeun kuring, ideu aplikasi anu beku dina kode, tanpa kamampuan pikeun ngarobih naon waé sacara dinamis, nyaéta keganasan anu paling liar. Sakuduna mungkin pikeun ngarobah saloba mungkin dina runtime. Tangtu, kodeu aplikasi sorangan teu bisa dirobah, tapi pasti hal bisa dirobah tanpa recompiling kode?

Dina Macintosh asli, aranjeunna ngadamel file ieu ngagaduhan "bagian data" sareng "bagian sumber daya," anu ngajantenkeun gampang pisan pikeun ngahemat hal-hal sapertos ikon, tarjamahan, sareng anu sanésna. dina file laksana.

Dina Mac ieu dianggo Édit deui, program grafis pikeun - dumadakan - sumberdaya ngédit.

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
ResEdit dina Macintosh aslina

Hasilna, dimungkinkeun pikeun ngédit ikon, item ménu, tarjamahan, jsb. cukup gampang, tapi aranjeunna tetep "ngumbara" sareng aplikasi.
Dina naon waé, pendekatan ieu ngagaduhan kalemahan anu ageung: éta ngan ukur dianggo dina sistem file Apple, anu mangrupikeun salah sahiji alesan kunaon Apple ngantunkeun "bagian sumberdaya" nalika ngalih ka Mac OS X.
Dina Mac OS X, Apple hoyong solusi sistem file anu mandiri, ku kituna aranjeunna ngadopsi konsép bungkusan (tina NeXT), diréktori anu dianggap "obyek opak" ku pangatur file, sapertos file tinimbang diréktori. Sakur pakét sareng aplikasi dina formatna .app ngabogaan, diantara hal séjén, file Info.plist (dina sababaraha jinis Apple sarimbag JSON atanapi YAML) ngandung metadata aplikasi.

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Konci pikeun file Info.plist tina pakét aplikasi Mac OS X.

Sumberdaya, sapertos ikon, file UI, sareng anu sanésna, disimpen dina pakét salaku file. Konsép sabenerna balik deui ka akar na di NeXT.

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Mathematica.app on NeXTSTEP 1.0 taun 1989: nembongan salaku diréktori file dina terminal, tapi salaku hiji objek dina manajer file grafis.

Hayu urang balik deui ka BeOS, konsép anu dumasar kana Haiku. Pamekarna, nalika ngalih tina PEF (PowerPC) ka ELF (x86) (sarua sareng anu dianggo dina Linux), mutuskeun pikeun nambihan bagian sumber ka tungtung file ELF. Éta henteu nganggo bagian ELF anu leres, éta ngan saukur ditambah kana tungtung file ELF. Salaku hasil tina program strip jeung batur-batur ti binutils, teu nyaho kana ieu, kantun dipotong. Ku alatan éta, nalika nambahkeun sumberdaya kana file ELF on BeOS, leuwih hade teu ngamanipulasi eta kalawan parabot Linux Ubuntu.

Aya naon jeung Haiku ayeuna? Dasarna, kurang leuwih sarua.

Dina tiori, éta bakal mungkin pikeun nempatkeun sumberdaya di bagian dipikahoyong tina ELF nu. Numutkeun pamekar dina saluran #haiku on irc.freenode.net:

Kalayan ELF bagian éta bakal langkung raos ... hiji-hijina alesan urang henteu ngalakukeun éta ku cara éta kusabab éta dilakukeun ku cara éta di BeOS.
Sareng henteu aya gunana pikeun ngarobih ieu ayeuna.

Manajemén sumberdaya

Sumberdaya ditulis dina format "sumberdaya" terstruktur: dasarna daptar sumberdaya kalawan ukuran lajeng eusina. Abdi émut ar format.
Kumaha pariksa sumberdaya di Haiku? Naha aya anu sapertos ResEdit?
nurutkeun dokuméntasi:

Pikeun ningali sumber daya anu disayogikeun dina pakét aplikasi, anjeun tiasa nyéred file anu tiasa dieksekusi kana program sapertos Resourcer. Anjeun oge bisa buka terminal jeung ngajalankeun paréntah listres имя_файла.

Resourcer sayogi di HaikuDepot, tapi ngan ukur ngadat kanggo kuring.

Kumaha carana ngatur sumberdaya dina file ELF? Ngagunakeun rsrc и rdef. rdef file dikumpulkeun dina rsrc. File rdef disimpen dina format téks polos, janten langkung gampang dianggo. Format file rsrc ditambahkeun kana tungtung file ELF. Hayu urang coba maén:

~> 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 license

Anjeun tiasa nganggo program xres pikeun mariksa jeung kontrol:

/> 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.
(...)

Oké, hayu urang coba?

/> 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_VERSION

Langkung seueur ngeunaan sumber sareng format rdef anjeun tiasa maca di dieu.

Jenis sumberdaya baku

Sanaos anjeun tiasa nempatkeun naon waé kana sumber daya, aya sababaraha jinis standar anu ditetepkeun:

  • app_signature: Jenis aplikasi MIME, pikeun pemetaan muka file, peluncuran, IPC, jsb.
  • app_name_catalog_entry: Kusabab nami aplikasi biasana dina basa Inggris, anjeun tiasa netepkeun tempat dimana nami anu ditarjamahkeun, ku kituna pangguna tina basa anu béda bakal ningali nami aplikasi anu ditarjamahkeun upami hoyong.
  • app_version: kahayang anjeun pikir
  • app_flags: nunjukkeun registrar kumaha ngolah aplikasi. Jigana aya leuwih ti eta ti meets panon. Contona, aya B_SINGLE_LAUNCH, anu maksakeun sistem pikeun ngaluncurkeun prosés aplikasi anyar unggal waktos pangguna naroskeunana (prinsip anu sami dianggo pikeun kalolobaan aplikasi dina Linux). Dahar B_MULTIPLE_LAUNCH, ngabalukarkeun prosés ngajalankeun pikeun unggal file. Tungtungna aya B_EXCLUSIVE_LAUNCH, nu maksa sistem pikeun ngajalankeun ngan hiji prosés dina hiji waktu, euweuh urusan sabaraha sering pamaké ngajalankeun eta (contona, ieu kumaha Firefox ngajalankeun on Linux Ubuntu; hasilna sarua bisa dihontal dina aplikasi Qt ngagunakeun fungsi. QtSingleApplication). Aplikasi sareng B_EXCLUSIVE_LAUNCH dibéjakeun nalika pangguna nyobian ngajalankeun deui: contona, aranjeunna nampi jalur file anu hoyong dibuka ku pangguna kalayan bantosanana.
  • vector_icon: Ikon aplikasi Véktor (BeOS henteu ngagaduhan ikon vektor, kalolobaan aplikasi ngagaduhan dua ikon raster dina file anu tiasa dieksekusi).

Tangtosna, anjeun tiasa nambihan sumber sareng ID sareng jinis anu dipikahoyong, teras baca dina aplikasi sorangan atanapi aplikasi anu sanés nganggo kelas. BResources. Tapi ke heula, hayu urang nempo topik matak ikon.

Ikon vektor dina gaya Haiku

Tangtosna, sanés ngan ukur Haiku anu milih format ikon anu pangsaéna; dina bagian ieu, kaayaan lingkungan desktop Linux jauh tina idéal:

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.cache

Ningali ieu anjeun geus bisa ngarasakeun naon sapotong éta.

Tangtu, aya scalable, nu ngandung, anjeun tiasa ngartos, ikon vektor. Naha teras aya anu sanés? Kusabab hasil ngagambar grafik vektor dina ukuran leutik bisa jadi kirang ti idéal. Abdi hoyong gaduh pilihan béda dioptimalkeun pikeun ukuran béda. Dina lingkungan desktop Linux, ieu dihontal ku paburencay ikon tina ukuran anu béda dina sistem file.

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.png

Punten dicatet: teu aya konsép vérsi Firefox anu béda. Ku kituna, teu mungkin mun gracefully nanganan kaayaan ngabogaan sababaraha versi tina hiji aplikasi dina sistem.

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Ikon Firefox anu béda dina vérsi anu béda. Ayeuna teu mungkin pikeun nanganan ieu dina Linux tanpa sababaraha crutches.

Mac OS X nanganan éta sakedik langkung halus:

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.icns

Ieu bisa ditempo yén aya hiji file firefox.icns di paket Firefox.app, ngandung sadaya ukuran supados vérsi anu béda tina aplikasi anu sami gaduh ikon anu béda.
Hadé pisan! Ikon ngarambat sareng aplikasi, sadaya sumber aya dina hiji file.

Hayu urang balik deui ka Haiku. Solusi anu pikaresepeun, henteu aya pengecualian. Numutkeun kana dokuméntasi:

A format HVIF husus, kacida dioptimalkeun pikeun ukuran leutik sarta rendering gancang, dimekarkeun. Ku alatan éta, ikon kami sabagéan ageung langkung alit tibatan dina raster atanapi dina format SVG anu seueur dianggo.

Sareng aranjeunna tetep dioptimalkeun:

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Ukuran ikon dina HVIF dibandingkeun sareng format anu sanés.

Bédana téh urutan gedéna!

Tapi sihir teu mungkas di dieu. HVIF anu sami tiasa nunjukkeun tingkat detil anu béda-béda gumantung kana ukuran anu ditampilkeun, sanaos éta mangrupikeun format vektor.

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Tingkat detil anu béda (LOD) gumantung kana ukuran rendering

Ayeuna ngeunaan kalemahan: anjeun moal tiasa nyandak SVG, buang kana ImageMagick sareng nyauran sadinten; anjeun kedah ngaliwat sababaraha siklus pikeun nyiptakeun ikon dina format HVIF. di dieu katerangan. Sanajan kitu, IconOMatic bisa ngimpor SVG rada imperfectly; kira-kira 90% rinci SVG diimpor kalawan sababaraha kamungkinan, sésana 10% bakal perlu ngonpigurasi sarta dirobah sacara manual. Baca leuwih seueur tentang kumaha HVIF ngalakukeun magic na bisa dina blog Leah Ganson

Nambahkeun ikon kana aplikasi

Ayeuna kuring tiasa nambihan ikon kana pakét anu didamel panungtungan waktu, nyandak kana akun sadaya inpormasi anu ditampi.
sumur, saprak Kaula teu utamana hayang pisan ngagambar ikon sorangan pikeun kuring "Halo, Dunya" QtQuickApp ayeuna, Kuring narik eta kaluar tina Qt Creator.

/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 Creator

Hayu urang pariksa yen ikon geus disalin:

/Haiku/home> xres -l /Haiku/home/QtQuickApp/QtQuickApp/Haiku/home/QtQuickApp/QtQuickApp
resources:type           ID        size  name
------ ----------- -----------  --------------------
'VICN'         101      152238  BEOS:ICON

Sigana alus, tapi naha éta lamun ikon anyar ieu disalin teu muncul?

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
VICN:101:BEOS:ICONs anu disalin teu acan dianggo salaku ikon aplikasi dina pangatur file.

Naon anu kuring sono?

Komentar pamekar:

Urang kudu nyieun file rdef kalayan sagala sumber, teras laksanakeun paréntahna rc имя.rdef, ieu bakal nyieun file .rsrc. Teras anjeun kedah ngajalankeun paréntah resattr -o имя_бинарника имя.rsrc. Sahenteuna, kuring nganggo paréntah sapertos ieu pikeun nambihan ikon kana skrip kuring.

Nya, kuring hoyong nyiptakeun sumber daya, sanés atribut. Abdi leres-leres bingung.

Caching pinter ngagunakeun sistem file

Muka sareng maca atribut ELF lambat. Salaku I wrote luhur, ikon ditulis salaku sumberdaya dina file sorangan. Metoda ieu langkung dipercaya sareng ngamungkinkeun anjeun salamet nyalin kana sistem file anu sanés. Nanging, teras ogé disalin kana atribut sistem file, contona BEOS:ICON. Ieu ngan ukur dianggo dina sistem file anu tangtu, sapertos BFS. Ikon anu dipidangkeun ku sistem (dina Tracker sareng Deskbar) dibaca tina atribut ngalegaan ieu, sabab solusi ieu gancang dianggo. Di sababaraha tempat (dimana speed teu penting, contona, jandela has "Ngeunaan"), sistem narima ikon langsung ti sumberdaya dina file. Tapi ieu sanés tungtungna. Émut, dina Mac, pangguna tiasa ngagentos ikon aplikasi, diréktori, dokumén sorangan, sabab dina Mac anjeun tiasa ngalakukeun hal-hal "penting" ieu, contona. ngagentos ikon Slack énggal sareng anu sateuacana. Dina Haiku, anjeun kedah nganggap sumber daya (dina file) salaku ikon asli anu hadir sareng aplikasi, sareng atribut (dina sistem file BFS) salaku hal anu ngamungkinkeun pamaké pikeun ngalakukeun parobahan anu dipikahoyong (sanaos, petunjuk, GUI pikeun nyelapkeun ikon khusus dina luhureun ikon nyaéta opsional).

Mariksa atribut sistem file

jeung resaddr Kasebut nyaéta dimungkinkeun pikeun pariksa sareng nyetél atribut sistem file.

/> 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.
(...)

Dasarna nyaéta "lem" anu ngalaksanakeun konvérsi bolak-balik antara sumberdaya (dipercaya) sareng atribut sistem file (gancang). Sareng saprak sistemna ngarep-ngarep nampi sumber daya sareng ngalakukeun salinan sacara otomatis, kuring moal hariwang deui.

Keajaiban bungkusan hpkg

Ayeuna (paling sering) bungkusan dianggo pikeun kéngingkeun program dina Haiku .hpkg. Ulah jadi fooled ku ngaran basajan: format .hpkg jalan sagemblengna béda ti format sejen kalawan ngaran sarupa anjeun geus encountered, éta boga adidaya nyata.

Kalayan format pakét tradisional, kuring kesel pikeun lila kusabab kanyataan ieu: anjeun unduh hiji hal (pakét), sareng anu sanésna dipasang dina sistem (file di jero bungkusan). Rada hese pikeun ngatur file (contona, ngahapus) nalika masang pakét dina cara tradisional. Sarta sakabeh sabab eusi pakét sumebar ka sakuliah sistem file, kaasup tempat dimana pamaké rata-rata teu boga aksés nulis. Ieu ngakibatkeun sakabeh kelas program - manajer pakét. Tapi nransferkeun parangkat lunak anu parantos dipasang, contona, ka mesin sanés, disk anu tiasa dicabut atanapi pangladén file janten langkung sesah, upami henteu mustahil. Dina sistem basis Linux anu khas, tiasa aya sababaraha ratus rébu dugi ka jutaan file individu. Henteu kedah disebatkeun, ieu rapuh sareng laun, contona nalika mimitina masang sistem, nalika masang, ngamutahirkeun sareng ngahapus pakét biasa, sareng nalika nyalin volume boot (partisi akar) ka medium anu sanés.

Abdi nuju ngerjakeun proyék AppImage, tongkat parsial pikeun aplikasi pangguna akhir. Ieu mangrupikeun format distribusi parangkat lunak anu ngumpulkeun aplikasi sareng sadaya katergantunganna kana gambar sistem file tunggal anu dipasang nalika aplikasi dimimitian. Nyata nyederhanakeun hal-hal, sabab ImageMagick anu sami ujug-ujug janten file tunggal, diurus dina manajer file ku jalma-jalma biasa. Metodeu anu diusulkeun ngan ukur dianggo pikeun parangkat lunak, sakumaha anu ditingali dina nami proyék, sareng ogé gaduh set masalah sorangan, sabab jalma anu kalibet dina nganteurkeun parangkat lunak pikeun Linux sok nunjuk panah ka kuring.

Hayu urang balik deui ka Haiku. Dupi éta mungkin pikeun manggihan kasaimbangan optimal antara sistem rangkep tradisional jeung pangiriman software dumasar-gambar? Bungkusan nya .hpkg sabenerna dikomprés gambar sistem file. Nalika sistem boot, kernel masang sadaya pakét anu dipasang sareng aktip kalayan kirang langkung pesen kernel ieu:

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"

Keren, yeuh? Tetep di dinya, éta bakal langkung tiis!

Aya pakét anu khusus pisan:

KERN: package_daemon [16040020:   924] active package: "haiku-r1~beta1_hrev53242-1-x86_64.hpkg"

Éta ngandung sistem operasi anu minimalis pisan, kalebet kernel. Percanten atanapi henteu, bahkan kernel sorangan henteu dipiceun tina volume boot (partisi akar), tapi sacara saksama dimuat kana tempatna tina bungkusan. .hpkg. Wow! Kuring parantos nyarios yén kuring nyangka bagian tina kecanggihan sareng konsistensi sakabéh Haiku asalna tina kanyataan yén sakabéh sistem, ti kernel sareng ruang pangguna inti pikeun manajemén pakét sareng infrastruktur runtime, dikembangkeun sacara kolaboratif ku hiji tim. Bayangkeun sabaraha grup sareng tim anu béda-béda pikeun ngajalankeun sapertos kieu dina Linux [Kuring ngabayangkeun proyék PuppyLinux - approx. penerjemah]. Lajeng bayangkeun sabaraha lila waktu nu diperlukeun pikeun pendekatan ieu diadopsi kana distribusi. Maranéhanana ngomong: nyandak hiji masalah basajan, ngabagi eta antara performers béda, sarta eta bakal jadi pajeulit nu moal deui mungkin pikeun ngajawab eta. Haiku dina hal ieu muka panon kuring. Jigana ieu persis naon anu lumangsung dina Linux Ubuntu ayeuna (Linux dina hal ieu mangrupakeun istilah koléktif pikeun Linux Ubuntu / GNU / dpkg / apt / systemd / Xorg / dbus / Gtk / GNOME / XDG / tumpukan Ubuntu).

System rollback maké hpkg

Sabaraha sering kaayaan di handap ieu lumangsung: update éta suksés, lajeng tétéla yén hal teu jalan sakumaha sakuduna? Upami anjeun nganggo manajer pakét konvensional, hese mulangkeun kaayaan sistem ka titik waktos sateuacan pakét énggal dipasang (contona, upami aya anu salah). Sababaraha sistem nawiskeun workarounds dina bentuk snapshots sistem file, tapi aranjeunna rada pajeulit jeung teu dipaké dina sakabéh sistem. Haiku ngajawab ieu nganggo bungkusan .hpkg. Iraha wae bungkusan robah dina sistem, bungkusan heubeul teu dihapus, tapi disimpen dina sistem dina subdirectories kawas /Haiku/system/packages/administrative/state-<...>/ terus-terusan. Operasi anu teu réngsé nyimpen datana dina subdirektori /Haiku/system/packages/administrative/transaction-<...>/.

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Eusi /Haiku/system/packages/administrative. Diréktori "kaayaan ..." ngandung file téks sareng nami bungkusan aktip, sareng diréktori "transaksi..." ngandung bungkusan éta sorangan.

"Kaayaan aktip heubeul", i.e. daptar .hpkg pakét aktip saméméh parobahan dirékam sanggeus unggal operasi di manajer file dina file téks /Haiku/system/packages/administrative/state-<...>/activated-packages. Dina cara anu sami, "kaayaan aktif" anyar ditulis dina file téks /Haiku/system/packages/administrative/activated-packages.

pitunjuk /Haiku/system/packages/administrative/state-<...>/ ngan ngandung hiji file téks kalawan daptar pakét aktip kaayaan ieu (dina hal pamasangan bungkusan tanpa ngaleupaskeun), sarta lamun bungkusan dihapus atawa diropéa - diréktori kaayaan ngandung versi heubeul tina bungkusan.

Nalika sistem boot, dumasar kana daptar bungkusan, kaputusan dijieun pikeun ngaktipkeun (Gunung) bungkusan. Éta basajan pisan! Upami aya anu lepat salami undeuran, anjeun tiasa nyarioskeun ka manajer undeuran pikeun ngagunakeun daptar anu langkung lami. Masalah direngsekeun!

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Haiku downloader. Unggal titik éntri mintonkeun "kaayaan aktif" pakait

Kuring resep pendekatan ngabogaan file téks basajan salaku daptar "kaayaan aktif", kalawan ngaran anu gampang ngartos .hpkg. Ieu kontras pisan sareng diwangun-pikeun-mesin-henteu-pikeun-jalma. dina kebat ti OSTree atanapi Flatpak dina sistem file (dina tingkat anu sami sareng Microsoft GUID).

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Daptar bungkusan aktip pikeun tiap titik dina jangka waktu

Data konfigurasi

Tétéla, dina katalog /Haiku/system/packages/administrative/writable-files ngandung file konfigurasi pikeun bungkusan, tapi aranjeunna tiasa ditulis. Barina ogé, sakumaha anjeun inget, .hpkg dipasang baca-hijina. Janten file ieu kedah disalin ti bungkusan sateuacan nyerat. Mibanda harti.

integrasi GUI pikeun sistem .hpkg

Hayu urang tingali kumaha ieu kantong ngagurilap .hpkg Cope jeung integrasi kana lingkungan gawé pamaké (UX). Barina ogé, Haiku dimaksudkeun pikeun pamakéan pribadi, sanggeus kabeh. Pribadi, kuring nyetél bar anu luhur nalika ngabandingkeun pangalaman pangguna sareng bungkusan .app on Macintosh jeung pangalaman anu sarua dina .hpkg. Kuring malah moal ngabandingkeun kaayaan sareng lingkungan kerja dina Linux, sabab éta leres pisan pikasieuneun dibandingkeun sareng anu sanés.

Skenario di handap ieu muncul dina pikiran:

  • Abdi hoyong ningali eusi pakét .hpkg
  • Abdi hoyong masang pakét
  • Abdi hoyong nyabut bungkusan
  • Abdi hoyong miceun hiji hal anu datang kana sistem salaku bagian tina pakét a
  • Abdi hoyong nyalin hal anu sumping kana sistem salaku bagian tina pakét a
  • Abdi hoyong ngaunduh sadaya katergantungan pakét, anu sanés janten bagian tina unggal pamasangan Haiku (contona, kuring gaduh mesin anu terasing sacara fisik tanpa aksés internét.)
  • Abdi hoyong mindahkeun bungkusan kuring (atanapi sawaréh) nyalira ka lokasi anu sanés, misah tina volume boot (partisi akar) (sabab, contona, kuring henteu ngagaduhan rohangan anu cekap).

Ieu kedah nutupan sabagéan ageung kasus utama ti dinten-dinten damel abdi. Muhun, hayu urang ngamimitian.

Mariksa eusi bungkusan

Dina Mac Kuring ngan saukur-klik katuhu dina pakét pikeun muka sareng ningali eusina dina Finder. Barina ogé, dina kanyataanana éta ngan hiji diréktori disguised! (Kuring terang aya bungkusan .pkg pikeun bagian tina sistem anu sanés aplikasi, tapi pangguna biasa sering henteu berinteraksi sareng aranjeunna).

Dina Haiku Kuring-klik katuhu dina pakét, teras klik dina "Eusi" pikeun nempo naon di jero. Tapi ieu mangrupikeun daptar file anu henteu tiasa dibuka ku ngaklik dua kali.
Eta bakal leuwih hadé lamun aya cara pikeun (samentara) Gunung pakét .hpkg pikeun ditingali ngaliwatan manajer file, sareng pangguna henteu kedah hariwang ngeunaan detil palaksanaan. (Ku jalan kitu, anjeun tiasa buka .hpkg pakét dina Expander, anu tiasa ngabongkar éta sapertos arsip anu sanés).

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Antarbeungeut HaikuDepot ngamungkinkeun anjeun ningali daptar file pakét, tapi teu aya cara pikeun ningali eusina ku, contona, ngaklik dua kali README.md.

Mac meunang dina kategori ieu, tapi nambahkeun pungsionalitas HaikuDepot nu Anjeun hoyongkeun teu kudu hésé teuing.

Masang pakét via GUI

Dina Mac, lolobana gambar disk .dmg ngandung bungkusan .app. Pencét dua kali gambar disk teras salin pakét, contona, ku cara nyéred kana /Applications dina Finder. Ieu mana tanpa nyebutkeun keur kuring, tapi kuring geus uninga yen sababaraha newbies bisa jadi teu tiasa ngadamel ieu. Sacara standar, Apple "nyarankeun" diréktori salega sistem /Applications (dina NeXT éta jaringan ogé individu), tapi anjeun tiasa kalayan gampang nempatkeun aplikasi anjeun dina pangladén file atanapi dina subdirektori. $HOME/Applications, mun anjeun resep eta cara.

Dina Haiku, ganda klik pakét, teras klik dina "Pasang", teu bisa jadi leuwih gampang. Kuring wondering naon anu lumangsung lamun pakét a boga dependensi anu sadia dina HaikuPorts tapi teu acan dipasang. Dina Linux, aranjeunna leres-leres henteu terang naon anu kudu dilakukeun dina kaayaan ieu, tapi solusina écés - naroskeun ka pangguna naha aranjeunna kedah ngaunduh sareng masang dependensi. Persis naon anu dilakukeun ku Haiku.

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Kuring ngaunduh pakét 'sanity' sacara manual sareng diklik, manajer pakét terang ti mana kéngingkeun katergantunganna (anggap repositori parantos didaptarkeun dina sistem). Henteu unggal distribusi Linux tiasa ngalakukeun ieu.

Cara anu sanés nyaéta nganggo pangatur file, sered sareng teundeun .hpkg pakét atanapi di /Haiku/system/packages (pikeun pamasangan di sakumna sistem, sacara standar), atanapi di /Haiku/home/config/packages (pikeun instalasi individu; teu sadia nalika ganda-klik - Abdi masih annoyed ku kecap "config" dina tempat ieu, nu keur kuring dina hal ieu sinonim jeung "setting"). Jeung konsép sababaraha pamaké malah teu sadia pikeun Haiku acan (éta meureun naha éta jadi basajan - Kuring henteu weruh, meureun kamampuhan multi-pamaké unnecessarily bakal ngahesekeun hal pikeun lingkungan desktop desktop).

Haiku meunang dina kategori ieu sabab tiasa dianggo teu ukur ku aplikasi, tapi ogé kalawan program sistem.

Nyoplokkeun pakét ti GUI

Dina Mac, anjeun kedah nyered ikon aplikasi kana tong sampah, sareng éta waé. Gampang!

Dina Haiku, mimitina, anjeun kedah milarian dimana pakét ayana dina sistem, sabab anjeun jarang masangna di tempat anu leres (sistem ngalakukeun sadayana). Biasana anjeun kedah milarian /Haiku/system/packages (kalayan pamasangan standar di sakumna sistem), atanapi di /Haiku/home/config/packages (Naha kuring disebutkeun yen "config" nyaeta misnomer a?). Teras aplikasina ngan saukur nyeret kana tong sampah, sareng éta.
Gampang! Nanging, kuring henteu bakal nyarios éta. Ieu naon anu leres-leres kajantenan:

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Ieu kajadian upami anjeun nyered aplikasi kana tempat sampah /Haiku/system/packages

Ngan nyobian mindahkeun aplikasi "Hello World" kamari kuring dina QtQuickApp kana sampah. Abdi henteu nyobian mindahkeun diréktori sistem, sarta saprak kabeh bungkusan nu dipasang dina diréktori Sistim, mustahil pikeun nyabut pakét .hpkg tanpa robah "eusina". Pamaké biasa bakal sieun teras pencét tombol "Batalkeun" anu ditugaskeun sacara standar.

Ngajelaskeun Bapa. waddlesplash:

Pos ieu langkung ti 10 taun. Paling dipikaresep urang kudu ngonpigurasikeun eta supados warning mucunghul ngan lamun pakét sorangan dipindahkeun. Pamaké biasa henteu kedah ngalakukeun ieu waé.

Oke, meureun kuring kedah ngalakukeun ieu nganggo HaikuDepot? Kuring ganda klik dina pakét dina /Haiku/system/packages, ngantosan tombol "Uninstall" némbongan. Henteu, aya (ngan) "Pasang". "Uninstall", dimana anjeun?

Ngan keur senang, Kuring diusahakeun ningali naon anu lumangsung lamun kuring diklik "Pasang" dina pakét geus dipasang. Tétéla kieu:

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Ieu kajadian upami anjeun nyobian masang pakét anu parantos dipasang.

Salajengna nembongan:

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Upami anjeun ngaklik "Larapkeun parobahan" dina jandela sateuacana, éta bakal sapertos kieu

Kuring nganggap yén ieu mangrupikeun kasalahan parangkat lunak; tautan kana aplikasina parantos aya. [panulis teu nyadiakeun link - approx. penerjemah]

Solusi gancang: Tambahkeun tombol "Uninstall" upami pakét parantos aya /Haiku/system/packages, atawa di /Haiku/home/config/packages.

Nalika ningali daptar bungkusan anu dipasang dina HaikuDepot, kuring ningali pakét kuring dina daptar sareng tiasa ngahapus.

Mac meunang dina kategori ieu. Tapi kuring tiasa ngabayangkeun yén kalayan pangaturan anu leres, pangalaman pangguna dina Haiku bakal langkung saé tibatan dina Mac. (Salah sahiji pamekar dipeunteun ku cara kieu: "Kurang ti sajam pikeun nambihan fungsionalitas anu ditangtukeun ka HaikuDepot, upami anjeun terang sakedik C ++", aya sukarelawan?)

Nyoplokkeun hiji hal tina pakét

Hayu urang cobian miceun aplikasina nyalira, sanés pakétna .hpkg, ti mana asalna (Kuring ragu yén pikeun "mere mortals" aya bédana wae).

Dina Mac, pamaké sabenerna biasana jalan kalawan file .dmgti mana asalna paket aplikasi .app. Biasana gambar .dmg anu akumulasi dina diréktori undeuran, jeung bungkusan nu disalin ku pamaké pikeun /Applications. Hal ieu dipercaya yén loba pamaké sorangan teu nyaho naon maranéhna ngalakukeun, hipotesa ieu dikonfirmasi ku urut pagawe Apple. (Salah sahiji hal anu kuring henteu resep dina Mac. Sareng, contona, kalayan AppImage henteu aya bédana antara aplikasi sareng pakét anu aya. Sered ikon kana tempat sampah = éta. Gampang!)

Dina Haiku, aya ogé division antara apps/ и packages/, janten kuring ragu yén ieu ngajantenkeun langkung jelas pikeun pangguna. Tapi naon anu lumangsung lamun nyered hiji aplikasi tina apps/ Tambihkeun kana karanjang:

Poé kagenep kuring sareng Haiku: handapeun tiung sumberdaya, ikon sareng bungkusan
Ieu kajadian nalika anjeun nyobian ngahapus aplikasi anu dicandak tina file .hpkg

Téhnisna éta leres (sanggeus sadayana, aplikasi ieu hosted dina sistem file baca-hijina di tempat munggaran), tapi teu utamana mangpaat pikeun pamaké.

Solusi gancang: nyarankeun ngagunakeun GUI pikeun ngahapus .hpkg

Ngan pikeun senang, abdi nyobian duplikat aplikasi ku mencét Alt + D. Kuring narima pesen "Teu bisa mindahkeun atawa nyalin objék dina volume baca-hijina." Sarta sakabeh sabab /system (salain /system/packages и /system/settings) nyaéta titik mount packagefs (émut kumaha éta muncul dina kaluaran df?). Hanjakal, kaluaran paréntah mount teu netelakeun kaayaan (sakumaha ceuk dina salah sahiji artikel saméméhna), mountvolume henteu nunjukkeun naon anu anjeun pilari (tétéla bungkusan dipasang via loop .hpkg teu dianggap "volume"), sarta kuring poho ogé paréntah alternatif.

Teu aya anu meunang dina kategori ieu kecuali AppImage (tapi ieu, jujur ​​​​sacara jujur, mangrupikeun pendapat anu bias). Nanging, urang tiasa ngabayangkeun yén saatos tweaking, pangalaman pangguna dina Haiku bakal langkung saé tibatan Mac.

Catetan: anjeun kedah terang naon "volume" anu aya hubunganana sareng "bagian". Ieu sigana mah sami sareng hubungan "folder" sareng "diréktori": kalolobaan diréktori muncul salaku polder dina manajer file, tapi henteu sadayana (pakét anu dianggap file, contona). Naha tampilan sapertos kitu ngajantenkeun kuring kutu buku resmi?

Nyalin eusi pakét ka sistem anu sanés

Dina Mac, Kuring stupidly nyered bungkusan .app, sarta saprak kagumantungan aya di jero pakét, aranjeunna mindahkeun babarengan.

Dina Haiku, Kuring nyered aplikasi, tapi kagumantungan teu diolah pisan.

Solusi gancang: Hayu urang tinimbang nyarankeun nyered sakabéh pakét `.hpkg, babarengan jeung sagala dependensi, lamun aya.

Mac jelas meunang dina kategori ieu. Sahenteuna pikeun kuring, pencinta paradigma maranéhanana. Abdi kedah nyalin ka Haiku .hpkg tinimbang hiji aplikasi, tapi sistem teu nawiskeun kuring ieu ...

Unduh pakét sareng sadaya kagumantunganana

Henteu unggal mesin disambungkeun ka jaringan sepanjang waktos. Sabalikna, sababaraha mesin (enya, Kuring nempo anjeun, Windows modern, Mac jeung Linux Ubuntu) poho ngeunaan ieu. Penting pikeun kuring yén kuring tiasa angkat, contona, ka warnet, unduh parangkat lunak kana drive anu tiasa dicabut, selapkeun drive ieu kana komputer bumi kuring sareng pastikeun yén sadayana bakal jalan [jalma anu picilakaeun, ngalakukeun ieu dina Windows... - kira-kira. penerjemah].

Hasilna, kuring condong mungkas nepi ka kagumantungan unmet on Windows jeung Linux Ubuntu saeutik leuwih sering ti biasa.

Dina Mac Ieu biasana hiji file, sadaya kudu maneh mun geus ngundeur .dmg. Seringna, éta henteu ngagaduhan katergantungan lian ti anu disayogikeun ku MacOS sorangan sacara standar. Pangecualian nyaéta aplikasi kompléks anu meryogikeun lingkungan palaksanaan anu pas, contona java.

Dina Haiku pakét download .hpkg pikeun, sebutkeun, aplikasi sarua di java, bisa jadi teu cukup, saprak java bisa atawa teu hadir dina mesin target. Naha aya cara pikeun ngaunduh sadaya katergantungan pikeun pakét anu dipasihkeun .hpkg, lian ti nu dipasang sacara standar di Haiku sahingga kudu di unggal sistem Haiku?

Mac meunang kategori ieu ku margin leutik.

Koméntar Mr. waddlesplash:

Nulis program pikeun ngumpulkeun sakabéh katergantungan tina hiji aplikasi salaku sakumpulan bungkusan .hpkg pikeun batur akrab jeung workings jero Haiku, ngeunaan 15 menit cukup. Nambahkeun dukungan pikeun ieu henteu sesah upami aya kabutuhan nyata. Tapi keur kuring ieu kaayaan langka.

Hayu urang tahan napas dugi artikel salajengna dina séri ieu.

Mindahkeun bungkusan ka lokasi anu misah

Salaku I wrote saméméhna, abdi hoyong nempatkeun bungkusan abdi .hpkg (sumur, atawa bagian tina eta) ka tempat husus, misah ti panempatan biasa dina volume boot (partisi root). Dina kasus nu biasa (teu jadi teoritis), alesan pikeun ieu mah terus kaluar rohangan bébas dina disk kuring (diwangun-di), euweuh urusan sabaraha badag aranjeunna. Sareng kuring biasana nyambungkeun drive éksternal atanapi saham jaringan dimana aplikasi kuring aya.

Dina Mac Kuring ngan mindahkeun bungkusan .app ka drive removable atawa diréktori jaringan di Finder, tur éta. Kuring masih tiasa dua kali klik pikeun muka aplikasi sapertos biasana tina volume boot. Ngan!

Dina Haiku, sakumaha ceuk kuring, ieu bisa dihontal ku mindahkeun abdi .hpkg bungkusan ka drive removable atawa diréktori jaringan, tapi lajeng Anjeun kudu make sababaraha Paréntah undocumented dina konsol nu guna Gunung aranjeunna dina sistem. Abdi henteu terang kumaha ngalakukeun ieu ngan ukur nganggo GUI.

Mac meunang dina kategori ieu.

Numutkeun mr. waddlesplash:

Ieu mangrupa optimasi dumasar kana pamakéan normal. Upami aya paménta ti langkung ti hiji pangguna, kami bakal ngalaksanakeunana. Dina sagala hal, aya kamungkinan palaksanaan pihak-katilu.

Urang bakal ngobrol ngeunaan ieu dina artikel salajengna.

Diomongkeun di directories jaringan, éta bakal jadi hébat (Kuring guessing pihak LAN) boga basajan, bisa kapanggih, aplikasi jaringan-lega (kawas Zeroconf) nu bisa disalin kana komputer lokal atawa ngajalankeun langsung ti jaringan lokal. Tangtosna, pamekar gaduh pilihan pikeun milih kaluar via app_flags.

Laporan ahir integrasi sistem hpkg kalawan GUI

Jigana éta utamana alatan newness relatif integrasi .hpkg GUI masih nyésakeun seueur anu dipikahoyong. Atoh, aya sababaraha hal anu tiasa ningkat dina hal UX ...

Hiji deui: Kernel Debug Land

Éta langkung saé upami tiasa ngalebetkeun paréntah nalika panik kernel, contona syslog | grep usb. Nya, dina Haiku mungkin berkat Kernel Debug Land. Kumaha anjeun tiasa ningali magic ieu dina aksi lamun sagalana jalan sakumaha sakuduna tanpa meunang kana panik kernel? Gampang ku mencét Alt + PrintScn + D (Debug mnemonic). Kuring langsung inget Key Programmer urang, nu diwenangkeun pamekar Macintosh aslina asupkeun debugger nu (lamun salah ieu dipasang, tangtosna).

kacindekan

Kuring mimiti ngarti yén sophistication tina sistem Haiku asalna tina kanyataan yén karya dilumangsungkeun ku hiji tim leutik kalawan fokus jelas dina lingkungan gawé, kalayan sagala lapisan sistem diaksés.
Kontras anu seukeut sareng dunya Linux/GNU/dpkg/apt/systemd/Xorg/dbus/Gtk/GNOME/XDG/Ubuntu, dimana sadayana dirobih janten potongan-potongan alit dugi ka abstraksi linggih dina abstraksi sareng drive ku kruk.
Aya ogé pamahaman kumaha sistem .hpkg ngagabungkeun prakték pangsaéna tina manajer pakét tradisional, Snappy, Flatpak, AppImage, bahkan btrfs, sareng nyampur sareng pendekatan "ngan jalan" Mac.

Ieu saolah-olah hal "switched" dina sirah kuring, sarta kuring ngartos kumaha sistem .hpkg weruh kumaha carana gulung jauh, ngan ku nempo manehna. Tapi éta henteu kuring, tapi kaéndahan sareng kesederhanaan sistem. Seueur ieu diideuan ku sumanget Mac asli.

Leres, browsing dina browser tiasa jerky sareng ngajalankeun sapertos kéong, aplikasi tiasa kirang (henteu aya Gtk, Electron - pamekar parantos nyimpulkeun yén aranjeunna henteu saé kalayan kecanggihan), pidéo sareng akselerasi 3d tiasa teu aya, tapi kuring masih resep sistem ieu. Barina ogé, hal ieu bisa dilereskeun sarta maranéhanana baris muncul sooner atanapi engké. Ieu ngan hitungan waktos na meureun panon beureum saeutik.

Abdi teu tiasa nawiskeun pitulung, tapi kuring pikir éta bakal ngamimitian ti ayeuna taun Haiku dina desktop.

Masalah acak

Panginten parantos aya pamundut, atanapi kedah dibuka?

  • BeScreenCapture kedah tiasa ngékspor ka GIF sapertos Peek. Ieu tiasa dilakukeun nganggo ffmpeg, parantos sayogi pikeun Haiku. Aplikasi.
  • Parangkat lunak screenshot gagal nyandak jandela modal, tibatan nyandak sadayana layar
  • Anjeun teu tiasa motong Potret layar nganggo alat pamotongan WonderBrush teras simpen hasilna kana file
  • Abdi henteu resep kana kursor tangan dina Haiku, tapi kuring nyangka éta aya hubunganana sareng rasa nostalgia anu haneut. Ieu hususna ngaganggu nalika nganggo alat pamotongan di Krita, sabab nyababkeun pamotongan anu teu akurat (tingali Potret layar dialog modal dina tulisan ieu). A kursor crosshair bakal éndah. Aplikasi.

Coba sorangan! Barina ogé, proyék Haiku nyadiakeun gambar pikeun booting tina DVD atawa USB, dihasilkeun ежедневно. Pikeun masang, ngan unduh gambar sareng nyerat kana flash drive nganggo Etcher

Dupi anjeun gaduh patarosan? Urang ngajak anjeun ka Rusia-diomongkeun saluran telegram.

Tinjauan kasalahan: Kumaha némbak diri dina suku di C jeung C ++. kumpulan resep Haiku OS

ti pangarang tarjamahan: ieu artikel kagenep dina séri ngeunaan Haiku.

Daptar artikel: kahiji kadua katilu Kaopat Anu kalima

sumber: www.habr.com

Tambahkeun komentar