ProHoster > Blog > Ma'muriyat > Xayku bilan oltinchi kunim: manbalar, piktogrammalar va paketlar ostida
Xayku bilan oltinchi kunim: manbalar, piktogrammalar va paketlar ostida
TP; DR: Haiku - bu shaxsiy kompyuterlar uchun maxsus ishlab chiqilgan operatsion tizim, shuning uchun uning ish stoli muhitini boshqalarga qaraganda ancha yaxshi qiladigan bir nechta fokuslar mavjud. Lekin u qanday ishlaydi?
Yaqinda Men Haiku-ni kashf qildim, bu kutilmagan yaxshi tizim. Men hali ham uning qanchalik silliq ishlashiga hayratdaman, ayniqsa Linux ish stoli muhitlari bilan solishtirganda. Bugun men kaputni ko'rib chiqaman. Chuqur tushunish uchun kerak bo'lganda, men asl Macintosh, Mac OS X va Linux ish stoli muhitlari (freedesktop.org dan XDG standarti) bilan taqqoslayman.
ELF fayllaridagi manbalar
Kecha men IconOMatic ELF bajariladigan fayllarda rdef resurslaridagi piktogrammalarni saqlashi mumkinligini bilib oldim. Bugun men bu haqiqatan ham qanday ishlashini ko'rmoqchiman.
Resurslar? tsitata ΠΎΡ Bryus Xorn, Macintosh Finderning asl muallifi va Macintosh Resurs menejerining "otasi":
Men an'anaviy kodlashning qattiq tabiatidan xavotirdaman. Men uchun kodda muzlatilgan, hech narsani dinamik ravishda o'zgartirish qobiliyatiga ega bo'lmagan dastur g'oyasi eng vahshiylikdir. Ishlash vaqtida iloji boricha o'zgartirish mumkin bo'lishi kerak. Albatta, dastur kodining o'zini o'zgartirib bo'lmaydi, lekin kodni qayta kompilyatsiya qilmasdan biror narsani o'zgartirish mumkinmi?
Asl Macintosh-da ular ushbu fayllarni "ma'lumotlar bo'limi" va "resurslar bo'limi" ga ega qildilar, bu esa piktogrammalar, tarjimalar va shunga o'xshash narsalarni saqlashni nihoyatda oson qildi. bajariladigan fayllarda.
Mac-da bu ishlatiladi Qayta tahrirlash, - to'satdan - resurslarni tahrirlash uchun grafik dastur.
Asl Macintosh-da ResEdit
Natijada, piktogramma, menyu elementlari, tarjimalar va boshqalarni tahrirlash mumkin bo'ldi. etarlicha oson, lekin ular hali ham ilovalar bilan "sayohat qilishadi".
Qanday bo'lmasin, bu yondashuv katta kamchilikka ega edi: u faqat Apple fayl tizimlarida ishladi, bu Apple Mac OS X ga o'tishda "resurslar bo'limi" dan voz kechganining sabablaridan biri edi.
Mac OS X da Apple fayl tizimidan mustaqil yechimni xohladi, shuning uchun ular paketlar tushunchasini (NeXT-dan), fayl menejeri tomonidan "shaffof ob'ektlar" sifatida ko'rib chiqiladigan kataloglarni, kataloglar emas, balki fayllar kabi qabul qildilar. Formatdagi ilovaga ega har qanday paket .app boshqa narsalar qatorida faylga ega Info.plist (Applening JSON yoki YAML ekvivalentida) ilova metama'lumotlarini o'z ichiga oladi.
Mac OS X ilovalar paketidagi Info.plist fayli uchun kalitlar.
Belgilar, UI fayllari va boshqalar kabi manbalar paketda fayllar sifatida saqlanadi. Kontseptsiya aslida NeXT-da o'z ildizlariga qaytdi.
1.0 yilda NeXTSTEP 1989 da Mathematica.app: terminalda fayllar katalogi sifatida, lekin grafik fayl boshqaruvchisida bitta ob'ekt sifatida ko'rinadi.
Keling, Xayku asos solgan tushunchalar β BeOS ga qaytaylik. Uning ishlab chiquvchilari PEF (PowerPC) dan ELF (x86) ga o'tishda (Linux-da xuddi shunday) ELF fayllarining oxiriga resurs bo'limini qo'shishga qaror qilishdi. U o'zining to'g'ri ELF bo'limidan foydalanmadi, u oddiygina ELF faylining oxiriga qo'shildi. Dastur natijasida strip va binutillardan bo'lganlar bundan bexabar, shunchaki kesib tashladilar. Shuning uchun, BeOS-da ELF fayliga resurslar qo'shayotganda, uni Linux vositalari bilan manipulyatsiya qilmaslik yaxshiroqdir.
Hozir Xayku nima bo'lyapti? Asosan, ko'proq yoki kamroq bir xil.
Nazariy jihatdan, resurslarni ELFning kerakli bo'limiga joylashtirish mumkin edi. irc.freenode.net saytidagi #haiku kanalidagi ishlab chiquvchilarga ko'ra:
ELF bilan bo'lim yanada mantiqiy bo'lar edi ... biz buni shunday qilmayotganimizning yagona sababi - bu biz BeOS-da qilganimizdir."
Va endi buni o'zgartirishning ma'nosi yo'q.
Resurslarni boshqarish
Resurslar tuzilgan "resurs" formatida yoziladi: asosan o'lchamlari bo'lgan resurslar ro'yxati, keyin esa ularning mazmuni. Men esladim ar formatida.
Xaykudagi resurslarni qanday tekshirish mumkin? ResEdit kabi narsa bormi?
Shunga ko'ra hujjatlar:
Ilovalar to'plamida taqdim etilgan resurslarni ko'rish uchun siz bajariladigan faylni shunga o'xshash dasturga sudrab olishingiz mumkin Resurschi. Bundan tashqari, terminalga borib, buyruqni ishga tushirishingiz mumkin listres ΠΈΠΌΡ_ΡΠ°ΠΉΠ»Π°.
Resourcer HaikuDepot-da mavjud, ammo u men uchun shunchaki ishdan chiqadi.
ELF fayllaridagi resurslarni qanday boshqarish mumkin? Foydalanish rsrc ΠΈ rdef. rdef fayllar to'planadi rsrc. fayl rdef oddiy matn formatida saqlanadi, shuning uchun u bilan ishlash ancha oson. Fayl formati rsrc ELF faylining oxiriga qo'shiladi. Keling, o'ynashga harakat qilaylik:
~> 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
Dasturdan foydalanishingiz mumkin xres tekshirish va nazorat qilish uchun:
/> 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.
(...)
Resurslar va format haqida ko'proq rdef o'qishingiz mumkin shu yerda.
Standart manba turlari
Resurslarga biror narsa qo'yishingiz mumkin bo'lsa-da, bir nechta belgilangan standart turlari mavjud:
app_signature: MIME ilova turi, faylni ochiq xaritalash, ishga tushirish, IPC va boshqalar uchun.
app_name_catalog_entry: Ilova nomi odatda ingliz tilida bo'lganligi sababli, bu erda siz tarjima qilingan nomlar joylashgan joylarni belgilashingiz mumkin, shunda turli tillardagi foydalanuvchilar xohlasa, tarjima qilingan dastur nomini ko'rishlari mumkin.
app_version: aynan siz o'ylagan narsa
app_flags: bildiradi registrar arizani qanday ko'rib chiqish kerak. Oβylaymanki, bunda koβp narsa bor. Masalan, bor B_SINGLE_LAUNCH, bu foydalanuvchi har safar so'raganida tizimni yangi dastur jarayonini ishga tushirishga majbur qiladi (xuddi shu printsip Linuxda ko'pchilik ilovalar uchun qo'llaniladi). Yemoq B_MULTIPLE_LAUNCH, jarayonning ishlashiga sabab bo'ladi har bir fayl. Nihoyat bor B_EXCLUSIVE_LAUNCH, bu tizimni foydalanuvchilar qanchalik tez-tez ishga tushirishidan qat'i nazar, bir vaqtning o'zida faqat bitta jarayonni ishga tushirishga majbur qiladi (masalan, Firefox Linuxda shunday ishlaydi; funksiyadan foydalangan holda Qt ilovalarida xuddi shunday natijaga erishish mumkin. QtSingleApplication). Ilovalar bilan B_EXCLUSIVE_LAUNCH foydalanuvchi ularni qayta ishga tushirishga harakat qilganda xabar qilinadi: masalan, foydalanuvchi ularning yordami bilan ochmoqchi bo'lgan fayl yo'lini oladi.
vector_icon: Vektorli dastur belgisi (BeOS-da vektor piktogrammalari yo'q edi, aksariyat ilovalar o'rniga ularning bajariladigan fayllarida ikkita rastr belgisi mavjud edi).
Albatta, siz istalgan identifikator va turlarga ega resurslarni qo'shishingiz mumkin, keyin ularni ilovaning o'zida yoki sinfdan foydalangan holda boshqa ilovalarda o'qishingiz mumkin. BResources. Ammo birinchi navbatda, piktogrammalarning qiziqarli mavzusini ko'rib chiqaylik.
Hayku uslubidagi vektor piktogramma
Albatta, nafaqat Xayku eng yaxshi piktogramma formatini tanladi; bu qismda Linux ish stoli muhitlari bilan bog'liq vaziyat idealdan uzoqdir:
Bunga qarab, uning qanday parcha ekanligini allaqachon his qilishingiz mumkin.
Albatta, siz tushunganingizdek vektor piktogrammalarini o'z ichiga olgan kengaytiriladigan mavjud. Nega boshqa narsa bor? Chunki kichik o'lchamlarda vektor grafikasini chizish natijasi idealdan kamroq bo'lishi mumkin. Men turli o'lchamlar uchun optimallashtirilgan turli xil variantlarga ega bo'lishni xohlayman. Linux ish stoli muhitlarida bunga fayl tizimi bo'ylab turli o'lchamdagi piktogrammalarni tarqatish orqali erishiladi.
Iltimos, diqqat qiling: Firefox-ning turli versiyalari haqida tushuncha yo'q. Shunday qilib, tizimda dasturning bir nechta versiyalari mavjud bo'lgan vaziyatni oqilona hal qilish mumkin emas.
Turli versiyalarda turli xil Firefox piktogrammalari. Hozircha Linuxda buni turli tayoqchalarsiz hal qilib bo'lmaydi.
Bitta fayl borligini ko'rish mumkin firefox.icns paketda Firefox.app, barcha o'lchamlarni o'z ichiga oladi, shuning uchun bir xil ilovaning turli versiyalarida turli xil belgilar mavjud.
Juda yaxshi! Belgilar ilova bilan sayohat qiladi, barcha manbalar bitta faylda.
Keling, Xaykuga qaytaylik. Ajablanarli yechim, istisnolar yo'q. Ga binoan hujjatlar:
Kichik o'lchamlar va tez ko'rsatish uchun yuqori darajada optimallashtirilgan maxsus HVIF formati ishlab chiqilgan. Shuning uchun bizning piktogrammalarimiz rastr yoki keng tarqalgan SVG formatiga qaraganda ancha kichikroq.
Va ular hali ham optimallashtirilgan:
Boshqa formatlarga nisbatan HVIF-dagi piktogramma o'lchamlari.
Farqi kattalik tartibidir!
Ammo sehr bu erda tugamaydi. Xuddi shu HVIF vektor formati bo'lsa ham, ko'rsatilgan o'lchamga qarab turli darajadagi tafsilotlarni ko'rsatishi mumkin.
Render hajmiga qarab turli darajadagi tafsilotlar (LOD).
Endi kamchiliklar haqida: siz SVG-ni qabul qila olmaysiz, uni ImageMagick-ga tashlay olmaysiz va uni bir kunga chaqira olmaysiz; HVIF formatida piktogramma yaratish uchun bir nechta tsikllardan o'tishingiz kerak. shu yerda tushuntirishlar. Biroq, IconOMatic SVG-ni juda nomukammal import qila oladi; Taxminan 90% SVG tafsilotlari ba'zi ehtimollik bilan import qilinadi, qolgan 10% qo'lda sozlanishi va o'zgartirilishi kerak bo'ladi. HVIF qanday sehrlashi haqida ko'proq o'qing mumkin blogda Lea Ganson
Ilovaga belgi qo'shish
Endi yaratilgan paketga belgi qo'shishim mumkin o'tgan safar, olingan barcha ma'lumotlarni hisobga olgan holda.
Xo'sh, men hozirda "Salom, dunyo" QtQuickApp ilovam uchun o'z piktogramma chizishni unchalik istamaganim uchun, uni Qt Creator-dan tortib olaman.
/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
Belgining nusxalanganligini tekshiramiz:
/Haiku/home> xres -l /Haiku/home/QtQuickApp/QtQuickApp/Haiku/home/QtQuickApp/QtQuickApp
resources:type ID size name
------ ----------- ----------- --------------------
'VICN' 101 152238 BEOS:ICON
Yaxshi ko'rinadi, lekin nega yangi belgi nusxa ko'chirilganda u ko'rinmaydi?
Nusxalangan VICN:101:BEOS:ICONs fayl menejerida hali ilova belgisi sifatida ishlatilmagan.
Men nimani sog'indim?
Ishlab chiquvchi sharhi:
Biz fayl yaratishimiz kerak rdef barcha resurslar bilan, keyin buyruqni bajaring rc ΠΈΠΌΡ.rdef, bu faylni yaratadi .rsrc. Keyin buyruqni bajarishingiz kerak resattr -o ΠΈΠΌΡ_Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠ° ΠΈΠΌΡ.rsrc. Hech bo'lmaganda, men skriptlarimga piktogramma qo'shish uchun shunga o'xshash buyruqlardan foydalanaman.
Xo'sh, men atributni emas, balki resurs yaratmoqchi edim. Men haqiqatan ham gangib qoldim.
Fayl tizimi yordamida aqlli keshlash
ELF atributlarini ochish va o'qish sekin. Yuqorida yozganimdek, belgi faylning o'zida manba sifatida yozilgan. Ushbu usul yanada ishonchli va boshqa fayl tizimiga nusxa ko'chirishdan omon qolish imkonini beradi. Shu bilan birga, u, masalan, fayl tizimi atributiga ham ko'chiriladi BEOS:ICON. Bu faqat ma'lum fayl tizimlarida ishlaydi, masalan, BFS. Tizim tomonidan ko'rsatilgan piktogrammalar (Tracker va Deskbar'da) ushbu kengaytirilgan atributdan o'qiladi, chunki bu yechim tez ishlaydi. Ba'zi joylarda (tezlik muhim bo'lmagan joylarda, masalan, odatiy "Haqida" oynasi) tizim belgini to'g'ridan-to'g'ri fayldagi manbadan oladi. Lekin bu oxiri emas. Esda tutingki, Mac-da foydalanuvchilar ilovalar, kataloglar, hujjatlar piktogrammalarini o'zlari bilan almashtirishlari mumkin, chunki Mac-da bu "muhim" ishlarni bajarish mumkin, masalan yangi Slack belgisini oldingisiga almashtirish. Haiku-da siz resursni (fayldagi) ilova bilan birga keladigan asl piktogramma sifatida va atributni (BFS fayl tizimida) foydalanuvchi o'z xohishiga ko'ra o'zgartirishlar kiritishga imkon beradigan narsa deb o'ylashingiz kerak (garchi, maslahat, Belgining tepasiga maxsus belgini kiritish uchun GUI ixtiyoriy). hali sukut bo'yicha amalga oshirilmagan).
Fayl tizimining atributlarini tekshirish
Yordamida resaddr Fayl tizimining atributlarini tekshirish va sozlash mumkin.
/> 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.
(...)
Bu (ishonchli) resurslar va (tezkor) fayl tizimi atributlari o'rtasida oldinga va orqaga konvertatsiyani amalga oshiradigan "elim" dir. Tizim resurslarni olishni kutayotgani va nusxa ko'chirishni avtomatik ravishda amalga oshirganligi sababli, men bundan keyin tashvishlanmayman.
Hpkg paketlarining sehri
Hozirgi vaqtda (ko'pincha) paketlar Haiku-da dasturlarni olish uchun ishlatiladi .hpkg. Oddiy nomga aldanmang: .hpkg formati siz duch kelgan o'xshash nomli boshqa formatlarga qaraganda butunlay boshqacha ishlaydi, u haqiqiy super kuchlarga ega.
An'anaviy paket formatlari bilan men bu haqiqat tufayli uzoq vaqt xafa bo'ldim: siz bir narsani (paketni) yuklab olasiz, ikkinchisi esa tizimga o'rnatilgan (paket ichidagi fayllar). Paketni an'anaviy tarzda o'rnatishda fayllarni boshqarish (masalan, ularni o'chirish) juda qiyin. Va barchasi paketning mazmuni tufayli fayl tizimi bo'ylab tarqalgan, shu jumladan o'rtacha foydalanuvchi yozish huquqiga ega bo'lmagan joylar. Bu dasturlarning butun sinfini keltirib chiqaradi - paket menejerlari. Ammo allaqachon o'rnatilgan dasturiy ta'minotni, masalan, boshqa mashinaga, olinadigan disk yoki fayl serveriga o'tkazish butunlay imkonsiz bo'lmasa ham, yanada qiyinlashadi. Oddiy Linux-ga asoslangan tizimda osongina bir necha yuz mingdan millionlab individual fayllar bo'lishi mumkin. Aytish kerakki, bu ham mo'rt, ham sekin, masalan, tizimni dastlab o'rnatishda, oddiy paketlarni o'rnatish, yangilash va o'chirishda va yuklash hajmini (ildiz bo'limi) boshqa vositaga nusxalashda.
Men oxirgi foydalanuvchi ilovalari uchun qisman tayoqcha bo'lgan AppImage loyihasi ustida ishlayapman. Bu dastur va uning barcha bog'liqliklarini dastur ishga tushganda o'rnatiladigan yagona fayl tizimi tasviriga to'playdigan dasturiy ta'minotni tarqatish formati. Bu narsalarni sezilarli darajada soddalashtiradi, chunki xuddi o'sha ImageMagick to'satdan fayl boshqaruvchisida oddiy odamlar tomonidan boshqariladigan yagona faylga aylanadi. Taklif etilayotgan usul faqat loyiha nomida aks ettirilgan dasturiy ta'minot uchun ishlaydi, shuningdek, o'ziga xos muammolar to'plamiga ega, chunki Linux uchun dasturiy ta'minotni etkazib berish bilan shug'ullanadigan odamlar doimo o'qni menga qaratadi.
Keling, Xaykuga qaytaylik. An'anaviy paketli tizimlar va tasvirga asoslangan dasturiy ta'minotni etkazib berish o'rtasidagi optimal muvozanatni topish mumkinmi? Uning paketlari .hpkg aslida siqilgan fayl tizimi tasvirlari. Tizim ishga tushganda, yadro barcha o'rnatilgan va faol paketlarni taxminan quyidagi yadro xabarlari bilan o'rnatadi:
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"
Ajoyib, ha? U erda turing, u yanada salqinroq bo'ladi!
Juda maxsus paket mavjud:
KERN: package_daemon [16040020: 924] active package: "haiku-r1~beta1_hrev53242-1-x86_64.hpkg"
U juda minimalistik operatsion tizimni, jumladan yadroni o'z ichiga oladi. Ishoning yoki ishonmang, hatto yadroning o'zi ham yuklash hajmidan (ildiz bo'limi) olib tashlanmaydi, lekin ehtiyotkorlik bilan paketdan o'z joyiga yuklanadi. .hpkg. Qoyil! Men Xaykuning umumiy murakkabligi va izchilligining bir qismi yadro va asosiy foydalanuvchilar maydonidan tortib to paketlarni boshqarish va ish vaqti infratuzilmasigacha bir jamoa tomonidan hamkorlikda ishlab chiqilganligidan kelib chiqadi, deb o'ylayman. Tasavvur qiling-a, Linuxda shunga o'xshash narsalarni ishlatish uchun qancha turli guruhlar va jamoalar kerak bo'ladi [Men PuppyLinux loyihasini tasavvur qilaman - taxminan. tarjimon]. Keyin tasavvur qiling-a, ushbu yondashuv tarqatishda qabul qilinishi uchun qancha vaqt kerak bo'ladi. Ular aytadilar: oddiy masalani oling, uni turli ijrochilar o'rtasida taqsimlang va u shunchalik murakkablashadiki, endi uni hal qilishning iloji bo'lmaydi. Bu holatda Xayku ko'zlarimni ochdi. Menimcha, hozir Linuxda aynan shu narsa sodir bo'lmoqda (bu holda Linux Linux/GNU/dpkg/apt/systemd/Xorg/dbus/Gtk/GNOME/XDG/Ubuntu stekining umumiy atamasi).
hpkg yordamida tizimni orqaga qaytarish
Quyidagi vaziyat qanchalik tez-tez sodir bo'ladi: yangilanish muvaffaqiyatli bo'ldi va keyin biror narsa kerakli darajada ishlamayaptimi? Agar siz an'anaviy paket menejerlaridan foydalansangiz, tizim holatini yangi paketlar o'rnatilishidan oldingi vaqtga qaytarish qiyin (masalan, biror narsa noto'g'ri bo'lgan taqdirda). Ba'zi tizimlar fayl tizimining oniy tasvirlari ko'rinishida vaqtinchalik echimlarni taklif qiladi, ammo ular juda og'ir va barcha tizimlarda ishlatilmaydi. Xayku buni paketlar yordamida hal qiladi .hpkg. Tizimda paketlar o'zgarganda, eski paketlar o'chirilmaydi, lekin tizimda quyidagi kabi pastki kataloglarda saqlanadi. /Haiku/system/packages/administrative/state-<...>/ doimiy. Tugallanmagan operatsiyalar o'z ma'lumotlarini pastki kataloglarda saqlaydi /Haiku/system/packages/administrative/transaction-<...>/.
Tarkib /Haiku/system/packages/administrative. βState...β kataloglarida faol paketlar nomlari yozilgan matnli fayllar, βtranzaksiya...β kataloglarida esa paketlarning oβzi mavjud.
"Eski faol holat", ya'ni. ro'yxati .hpkg o'zgarishlardan oldin faol bo'lgan paketlar matnli fayldagi fayl menejeridagi har bir operatsiyadan keyin qayd etiladi /Haiku/system/packages/administrative/state-<...>/activated-packages. Xuddi shunday, matn faylida yangi "faol holat" yoziladi /Haiku/system/packages/administrative/activated-packages.
katalog /Haiku/system/packages/administrative/state-<...>/ faqat ushbu holatning faol paketlari ro'yxatiga ega matnli faylni o'z ichiga oladi (paketlar olib tashlanmasdan o'rnatilganda) va agar paketlar o'chirilgan yoki yangilangan bo'lsa - davlat katalogida paketlarning eski versiyalari mavjud.
Tizim ishga tushganda, paketlar ro'yxati asosida paketlarni faollashtirish (o'rnatish) to'g'risida qaror qabul qilinadi. Bu juda oddiy! Agar yuklab olish paytida biror narsa noto'g'ri bo'lsa, yuklab olish menejeriga boshqa, eski ro'yxatni ishlatishni aytishingiz mumkin. Muammo hal qilindi!
Haiku yuklab olish dasturi. Har bir kirish nuqtasi mos keladigan "faol holat" ni ko'rsatadi.
Menga tushunarli nomlar bilan "faol holat" ro'yxati sifatida oddiy matnli fayllarga ega bo'lish yondashuvi yoqadi .hpkg. Bu odamlar uchun emas, balki mashinalar uchun ishlab chiqarilganidan keskin farq qiladi. bir to'dada fayl tizimidagi OSTree yoki Flatpak'dan (Microsoft GUID bilan bir xil darajada).
Vaqtning har bir nuqtasi uchun faol paketlar ro'yxati
Konfiguratsiya ma'lumotlari
Ko'rinishidan, katalogda /Haiku/system/packages/administrative/writable-files paketlar uchun konfiguratsiya fayllarini o'z ichiga oladi, lekin ular yozilishi mumkin. Axir, siz eslaganingizdek, .hpkg faqat o'qish uchun o'rnatilgan. Shunday qilib, ushbu fayllarni yozishdan oldin paketlardan nusxalash kerak. Ma'nosi bor.
.hpkg tizimi uchun GUI integratsiyasi
Keling, bu porloq sumkalarni qanday ko'rib chiqaylik .hpkg foydalanuvchining ish muhitiga (UX) integratsiyani engish. Axir, Xayku shaxsiy foydalanish uchun mo'ljallangan. Shaxsan men foydalanuvchi tajribasini paketlar bilan solishtirganda barni yuqori qo'ydim .app Macintosh-da bir xil tajribaga ega .hpkg. Vaziyatni Linuxdagi ish muhitlari bilan solishtirmayman, chunki bu boshqalar bilan solishtirganda mutlaqo dahshatli.
Quyidagi stsenariylar aqlga keladi:
Men paketning mazmunini ko'rmoqchiman .hpkg
Men paketni o'rnatmoqchiman
Men paketni olib tashlamoqchiman
Men paketning bir qismi sifatida tizimga kirgan narsani olib tashlamoqchiman
Men paketning bir qismi sifatida tizimga kirgan narsani nusxalashni xohlayman
Men paketning barcha bog'liqliklarini yuklab olishni xohlayman, bu har bir Haiku o'rnatilishining bir qismi bo'lmasligi mumkin (masalan, menda Internetga kirish imkoni bo'lmagan jismoniy izolyatsiya qilingan mashina bor.)
Men paketlarimni (yoki ularning bir qismini) yuklash hajmidan (ildiz bo'limidan) alohida boshqa joyga ko'chirmoqchiman (chunki, masalan, menda unda etarli joy yo'q).
Bu mening kundalik ishimdagi asosiy holatlarning aksariyatini qamrab olishi kerak. Xo'sh, keling, boshlaylik.
Paket tarkibini tekshirish
Macda Men uni ochish va tarkibini Finder-da ko'rish uchun paketni o'ng tugmasini bosing. Axir, aslida bu shunchaki yashirin katalog! (Men paketlar borligini bilaman .pkg tizimning ilovalar bo'lmagan qismi uchun, lekin oddiy foydalanuvchilar ko'pincha ular bilan aloqa qilmaydi).
Xayku haqida Men paketni sichqonchaning o'ng tugmasi bilan bosing, so'ng ichida nima borligini ko'rish uchun "Tarkib" ni bosing. Lekin bu erda faqat ikki marta bosish orqali ochish imkoniyati bo'lmagan fayllar ro'yxati.
Paketni (vaqtinchalik) o'rnatishning bir usuli bo'lsa, yaxshi bo'lardi .hpkg fayl menejeri orqali ko'rish mumkin va foydalanuvchi amalga oshirish tafsilotlari haqida tashvishlanmasligi kerak. (Aytgancha, siz ochishingiz mumkin .hpkg paket ichida Expander, bu boshqa har qanday arxiv kabi uni ochishi mumkin).
HaikuDepot interfeysi sizga paketli fayllar ro'yxatini ko'rish imkonini beradi, lekin masalan, README.md ni ikki marta bosish orqali tarkibni ko'rishning hech qanday usuli yo'q.
Mac ushbu toifada g'olib chiqadi, lekin siz xohlagan HaikuDepot funksiyasini qo'shish unchalik qiyin bo'lmasligi kerak.
GUI orqali paketni o'rnatish
Macda, aksariyat diskdagi tasvirlar .dmg paketlarni o'z ichiga oladi .app. Disk tasvirini ikki marta bosing va paketni, masalan, ichiga sudrab ko'chiring /Applications Finder-da. Bu men uchun o'ziga xosdir, lekin men ba'zi yangi boshlanuvchilar buni uddalay olmasligini eshitdim. Odatiy bo'lib, Apple tizim bo'ylab katalogni "taklif qiladi" /Applications (NeXT-da u tarmoqqa ulangan, shuningdek individual edi), lekin siz ilovalaringizni fayl serveriga yoki pastki katalogga osongina joylashtirishingiz mumkin. $HOME/Applications, agar sizga shunday yoqsa.
Xayku haqida, paketni ikki marta bosing, keyin "O'rnatish" tugmasini bosing, bu osonroq bo'lishi mumkin emas. Agar paketda HaikuPorts-da mavjud bo'lgan, lekin hali o'rnatilmagan bog'liqliklar bo'lsa, nima bo'lishini qiziqtiraman. Linuxda ular bu vaziyatda nima qilish kerakligini bilishmaydi, ammo yechim aniq - foydalanuvchidan bog'liqliklarni yuklab olish va o'rnatish kerakligini so'rang. Aynan Xayku nima qiladi.
Men "sanity" to'plamini qo'lda yuklab oldim va ustiga bosdim, paket menejeri uning bog'liqligini qayerdan olishni biladi (agar omborlar allaqachon tizimda ro'yxatdan o'tgan bo'lsa). Har bir Linux distributivi buni qila olmaydi.
Yana bir usul - fayl boshqaruvchisidan foydalanish, shunchaki sudrab olib tashlang .hpkg paket yoki ichida /Haiku/system/packages (tizim bo'ylab o'rnatish uchun, sukut bo'yicha) yoki ichida /Haiku/home/config/packages (individual o'rnatish uchun; sichqonchani ikki marta bosganda mavjud emas - bu joydagi "konfiguratsiya" so'zi hali ham meni bezovta qiladi, bu men uchun bu holatda "sozlamalar" bilan sinonimdir). Va bir nechta foydalanuvchilar tushunchasi hali Haiku uchun ham mavjud emas (shuning uchun ham, ehtimol, bu juda oddiy - men bilmayman, balki ko'p foydalanuvchili imkoniyatlar ish stoli ish stoli muhiti uchun narsalarni keraksiz ravishda murakkablashtirishi mumkin).
Xayku bu toifada g'olib chiqadi, chunki u nafaqat ilovalar bilan, balki tizim dasturlari bilan ham ishlay oladi.
GUI dan paketni olib tashlash
Macda, dastur belgisini axlat qutisiga sudrab o'tishingiz kerak va bu hammasi. Osonlik bilan!
Xayku haqida, birinchi navbatda, paketning tizimda joylashgan joyini topishingiz kerak, chunki siz uni kamdan-kam hollarda to'g'ri joyga o'rnatasiz (tizim hamma narsani qiladi). Odatda siz qarashingiz kerak /Haiku/system/packages (tizim bo'ylab standart o'rnatish bilan) yoki ichida /Haiku/home/config/packages (Men "config" noto'g'ri nom ekanligini aytdimmi?). Keyin dastur shunchaki axlat qutisiga tortiladi va bu ham.
Osonlik bilan! Biroq, men buni aytmagan bo'lardim. Mana, aslida nima sodir bo'lmoqda:
Agar siz ilovani axlat qutisiga tortib olsangiz, shunday bo'ladi /Haiku/system/packages
Kechagi QtQuickApp-dagi "Salom Dunyo" ilovasini axlat qutisiga ko'chirishga harakat qildim. Men tizim katalogini ko'chirishga harakat qilmadim, va barcha paketlar tizim katalogiga o'rnatilganligi sababli paketni olib tashlash mumkin emas .hpkg o'zgarishsiz "uning tarkibi". Oddiy foydalanuvchi qo'rqib ketadi va sukut bo'yicha tayinlangan "Bekor qilish" tugmasini bosing.
Bu post 10 yoshdan oshgan. Ehtimol, biz uni ogohlantirish faqat paketning o'zi ko'chirilganda paydo bo'lishi uchun sozlashimiz kerak. Oddiy foydalanuvchilar buni baribir qilishlari shart emas.
Mayli, buni HaikuDepot yordamida qilishim kerakmi? Men paketni ikki marta bosaman /Haiku/system/packages, "O'chirish" tugmasi paydo bo'lishini kuting. Yo'q, (faqat) "O'rnatish" mavjud. "O'chirish", qayerdasiz?
Faqat o'yin-kulgi uchun, agar allaqachon o'rnatilgan paketda "O'rnatish" tugmasini bossam nima bo'lishini ko'rishga harakat qildim. Bu shunday chiqadi:
Agar siz allaqachon o'rnatilgan paketni o'rnatishga harakat qilsangiz, bu sodir bo'ladi.
Keyingi paydo bo'ladi:
Agar oldingi oynada "O'zgarishlarni qo'llash" tugmasini bossangiz, u shunday ko'rinadi
Bu dasturiy ta'minot xatosi deb o'ylayman; ilovaga havola allaqachon mavjud. [muallif havola bermagan - taxminan. tarjimon]
Tez yechim: Agar paket allaqachon mavjud bo'lsa, "O'chirish" tugmasini qo'shing /Haiku/system/packages, yoki ichida /Haiku/home/config/packages.
HaikuDepot-da o'rnatilgan paketlar ro'yxatini ko'rayotganda men o'z paketimni ro'yxatda ko'raman va uni olib tashlashim mumkin.
Mac ushbu toifada g'olib chiqadi. Ammo men tasavvur qila olamanki, to'g'ri o'rnatilgan bo'lsa, Haiku-da foydalanuvchi tajribasi Mac-ga qaraganda yaxshiroq bo'ladi. (Ishlab chiquvchilardan biri buni shunday baholagan: "HaikuDepot-ga ko'rsatilgan funksiyani qo'shish uchun bir soatdan kamroq vaqt kerak, agar siz ozgina C++ ni bilsangiz", ko'ngillilar bormi?)
Paketdan biror narsani olib tashlash
Keling, paketni emas, dasturning o'zini olib tashlashga harakat qilaylik .hpkg, u kelib chiqqan (men "oddiy odamlar" uchun hech qanday farq borligiga shubha qilaman).
Macda, foydalanuvchi odatda fayl bilan ishlaydi .dmgdastur paketi qayerdan keladi .app. Odatda tasvirlar .dmg yuklab olishlar katalogida to'planadi va paketlar foydalanuvchi tomonidan ko'chiriladi /Applications. Ko'pgina foydalanuvchilarning o'zlari nima qilayotganlarini bilishmaydi, deb ishoniladi, bu farazni sobiq Apple xodimi tasdiqlaydi. (Mac-da menga yoqmaydigan narsalardan biri. Va, masalan, AppImage bilan ilova va u joylashgan paket oΚ»rtasida farq yoΚ»q. Belgini axlat qutisiga torting = tamom. Oson!)
Xayku haqida, orasida bo'linish ham mavjud apps/ ΠΈ packages/, shuning uchun men buni foydalanuvchilarga aniqroq qilganiga shubha qilaman. Ammo ilovani tortib olsangiz nima bo'ladi apps/ Savatchaga qo'shish:
Fayldan olingan dasturni o'chirishga harakat qilganingizda shunday bo'ladi .hpkg
Texnik jihatdan bu to'g'ri (oxir-oqibat, ilova birinchi navbatda faqat o'qish uchun mo'ljallangan fayl tizimida joylashgan), lekin foydalanuvchi uchun unchalik foydali emas.
Tez yechim: oΚ»rniga oΚ»chirish uchun GUI dan foydalanishni tavsiya eting .hpkg
Shunchaki oβyin-kulgi uchun men Alt+D tugmalarini bosib ilovani koβpaytirishga harakat qildim. Men "Faqat o'qish uchun mo'ljallangan jildida ob'ektlarni ko'chirish yoki nusxalash mumkin emas" xabarini oldim. Va barchasi, chunki /system (bundan tashqari /system/packages ΠΈ /system/settings) - bu packagefs o'rnatish nuqtasi (chiqishda qanday ko'rinishini eslang df?). Afsuski, buyruqning chiqishi mount vaziyatga oydinlik kiritmaydi (oldingi maqolalardan birida aytilganidek), mountvolume Siz qidirayotgan narsani ko'rsatmaydi (ko'rinishidan, paketlar loop orqali o'rnatilgan .hpkg "jildlar" deb hisoblanmaydi) va men muqobil buyruqlarni ham unutib qo'ydim.
AppImage-dan boshqa hech kim ushbu toifada g'olib chiqa olmadi (lekin bu, to'liq rostini aytsam, noxolis fikr). Biroq, sozlashdan so'ng, Haiku-da foydalanuvchi tajribasi Mac-ga qaraganda yaxshiroq bo'lishini tasavvur qilish mumkin.
Eslatma: "bo'lim" ga nisbatan "hajm" nima ekanligini bilib olishingiz kerak. Bu, ehtimol, "papka" va "katalog" munosabatlariga o'xshaydi: ko'pchilik kataloglar fayl menejerida papkalar sifatida ko'rinadi, lekin ularning hammasi emas (masalan, paketlar fayl sifatida ko'rib chiqiladi). Bunday displey meni rasmiy ahmoq qiladimi?
Paket tarkibini boshqa tizimga nusxalash
Macda, Men ahmoqona paketni sudrab boraman .app, va bog'liqliklar paket ichida bo'lgani uchun ular birgalikda harakat qiladilar.
Xayku haqida, Men ilovani sudrab boraman, lekin bog'liqliklar umuman qayta ishlanmaydi.
Tez yechim: Buning o'rniga barcha `.hpkg paketini, agar mavjud bo'lsa, bog'liqliklar bilan birga sudrab olishni taklif qilaylik.
Mac ushbu toifada aniq g'alaba qozonadi. Hech bo'lmaganda men uchun ularning paradigmasini sevuvchi. Men uni Xaykuga nusxalashim kerak .hpkg dastur o'rniga, lekin tizim menga buni taklif qilmaydi ...
Barcha bog'liqliklari bilan paketni yuklab oling
Har bir mashina har doim ham tarmoqqa ulanmagan. Aksincha, ba'zi mashinalar (ha, men sizga qarayman, zamonaviy Windows, Mac va Linux) buni unutishadi. Men uchun, masalan, Internet-kafega borishim, olinadigan diskka dasturiy ta'minotni yuklab olishim, ushbu drayverni uy kompyuterimga joylashtirishim va hamma narsa ishlashiga ishonchim komil bo'lishi juda muhim [xavfli odam, buni Windows-da qiladi ... - taxminan. tarjimon].
Natijada, men Windows va Linux-ga odatdagidan ko'ra tez-tez qaram bo'lib qolaman.
Macda Bu odatda bitta fayl bo'lib, faqat yuklab olish kifoya .dmg. Ko'pincha, sukut bo'yicha MacOS tomonidan taqdim etilganlardan boshqa hech qanday bog'liqlik yo'q. Istisno - bu tegishli ijro muhitini talab qiluvchi murakkab ilovalar, masalan, java.
Xayku haqida yuklab olish paketi .hpkg Masalan, java-da bir xil dastur etarli bo'lmasligi mumkin, chunki java maqsadli kompyuterda mavjud yoki bo'lmasligi mumkin. Berilgan paket uchun barcha bog'liqliklarni yuklab olishning bir usuli bormi? .hpkg, Xaykuda sukut bo'yicha o'rnatilgan va shuning uchun har bir Haiku tizimida bo'lishi kerak bo'lganlardan tashqari?
Mac bu toifani kichik farq bilan yutadi.
Fikrlar janob. vaddlesplash:
Ilovaning barcha bog'liqliklarini paketlar to'plami sifatida yig'ish uchun dastur yozish .hpkg Xaykuning ichki ishi bilan tanish bo'lgan kishi uchun taxminan 15 daqiqa kifoya qiladi. Agar chindan ham zarurat bo'lsa, buni qo'llab-quvvatlash unchalik qiyin emas. Lekin men uchun bu kamdan-kam uchraydigan holat.
Keling, ushbu turkumdagi keyingi maqolaga qadar nafasimizni ushlab turaylik.
Paketlarni alohida joyga ko'chirish
Avval yozganimdek, men paketlarimni joylashtirmoqchiman .hpkg (yaxshi, yoki ularning bir qismi) yuklash hajmi (ildiz bo'limi) bo'yicha odatiy joylashtirishdan alohida, maxsus joyga. Odatiy (unchalik nazariy bo'lmagan) holatda, buning sababi shundaki, men qanchalik katta bo'lishidan qat'i nazar, mening (o'rnatilgan) disklarimda doimo bo'sh joy tugaydi. Va men odatda ilovalarim joylashgan tashqi drayverlarni yoki tarmoq ulushlarini ulayman.
Macda Men faqat paketlarni ko'chiryapman .app Finder-da olinadigan disk yoki tarmoq katalogiga va hammasi. Ilovani ishga tushirish hajmidan odatdagidek ochish uchun hali ham ikki marta bosishim mumkin. Shunchaki!
Xayku haqida, Menga aytganidek, bu mening ko'chirish orqali erishish mumkin .hpkg paketlarni olinadigan haydovchiga yoki tarmoq katalogiga yuklang, lekin keyin ularni tizimga o'rnatish uchun konsolda hujjatsiz buyruqlardan foydalanishingiz kerak. Buni faqat GUI yordamida qanday qilishni bilmayman.
Mac ushbu toifada g'olib chiqadi.
janobga ko'ra. vaddlesplash:
Bu oddiy foydalanishga asoslangan optimallashtirish. Agar bir nechta foydalanuvchi tomonidan talab bo'lsa, biz uni amalga oshiramiz. Har holda, uchinchi tomon tomonidan amalga oshirish imkoniyati mavjud.
Bu haqda keyingi maqolada gaplashamiz.
Tarmoq kataloglari haqida gapiradigan bo'lsak, mahalliy kompyuterga nusxa ko'chiradigan yoki to'g'ridan-to'g'ri mahalliy tarmoqdan ishga tushirilishi mumkin bo'lgan oddiy, topiladigan, tarmoq bo'ylab ilovalarga (masalan, Zeroconf) ega bo'lish juda yaxshi bo'lardi (menimcha, LAN partiyalari). Albatta, ishlab chiquvchilar orqali voz kechish imkoniyati mavjud app_flags.
hpkg tizimining GUI bilan integratsiyalashuvi bo'yicha yakuniy hisobot
Menimcha, bu birinchi navbatda integratsiyaning nisbatan yangiligi bilan bog'liq .hpkg GUI hali ham ko'p narsani orzu qiladi. Yaxshiyamki, UX nuqtai nazaridan yaxshilanishi mumkin bo'lgan bir nechta narsalar mavjud ...
Yana bir narsa: Kernel Debug Land
Masalan, yadro vahima paytida buyruqlarni kiritish juda yaxshi bo'lar edi syslog | grep usb. Xo'sh, Xaykuda bu Kernel Debug Land tufayli mumkin. Agar yadro vahimasiga tushmasdan, hamma narsa kerakli darajada ishlayotgan bo'lsa, bu sehrni qanday qilib ko'rishingiz mumkin? Alt+PrintScn+D (debug mnemonik) tugmalarini bosib oson. Men darhol eslayman Dasturchi kaliti, bu asl Macintosh ishlab chiquvchilari tuzatuvchiga kirishga imkon berdi (agar u o'rnatilgan bo'lsa, albatta).
xulosa
Men Xayku tizimining murakkabligi ishning ish muhitiga aniq e'tibor qaratgan, tizimning barcha qatlamlari mavjud bo'lgan kichik bir jamoa tomonidan amalga oshirilishidan kelib chiqishini tushuna boshladim.
Linux/GNU/dpkg/apt/systemd/Xorg/dbus/Gtk/GNOME/XDG/Ubuntu dunyosi bilan keskin kontrast, bu erda hamma narsa shunchalik kichik bo'laklarga bo'linganki, abstraktsiya abstraktsiyaga o'tiradi va tayoqchalar bilan harakat qiladi.
Tizimning qanday ishlashi haqida ham tushuncha bor edi .hpkg an'anaviy paket menejerlari, Snappy, Flatpak, AppImage, hatto btrfsning eng yaxshi amaliyotlarini birlashtiradi va ularni Macning "shunchaki ishlaydi" yondashuvi bilan birlashtiradi.
Go'yo miyamda nimadir "o'zgardi" va men tizim qanday ekanligini tushundim .hpkg unga qarab qanday dumalab ketishni biladi. Lekin bu men emas, balki tizimning go'zalligi va soddaligi. Bularning aksariyati asl Mac ruhidan ilhomlangan.
Ha, brauzerda ko'rish chayqalishi va salyangoz kabi ishlashi mumkin, ilovalar etishmayotgan bo'lishi mumkin (Gtk yo'q, Electron - ishlab chiquvchilar ular murakkablik bilan yaxshi mos kelmaydi degan xulosaga kelishdi), video va 3D tezlashtirish umuman yo'q bo'lishi mumkin, lekin men hali ham bu tizim yoqadi. Axir, bu narsalarni tuzatish mumkin va ular ertami-kechmi paydo bo'ladi. Bu faqat vaqt masalasi va ehtimol bir oz qizil ko'z.
Men yordam taklif qila olmayman, lekin menimcha, bu hozirdan boshlanadi Ish stolida Xayku yili.
Tasodifiy muammolar
Ehtimol, allaqachon so'rovlar bor yoki ularni ochishim kerakmi?
BeScreenCapture Peek kabi GIF-ga eksport qila olishi kerak. Buni Haiku uchun allaqachon mavjud bo'lgan ffmpeg yordamida amalga oshirish mumkin. Ariza shakli.
Skrinshot dasturi butun ekranni suratga olish o'rniga modal oynani suratga ololmaydi
Siz WonderBrush-ning kesish vositasi yordamida skrinshotlarni qirqib, natijani faylga saqlay olmaysiz
Menga ayniqsa Xaykudagi qoβl kursori yoqmaydi, lekin menimcha, bu iliq nostaljik tuygβu bilan bogβliq. Kritada kesish vositasidan foydalanganda bu ayniqsa bezovta qiladi, chunki bu noto'g'ri kesishga olib keladi (ushbu maqoladagi modal dialoglarning skrinshotlariga qarang). Xarakterli kursor ajoyib bo'lar edi. Ariza shakli.
O'zingiz sinab ko'ring! Axir, Haiku loyihasi yaratilgan DVD yoki USB-dan yuklash uchun tasvirlarni taqdim etadi Ejednevno. O'rnatish uchun rasmni yuklab oling va uni flesh-diskga yozing Etcher
Savollaringiz bormi? Sizni rusiyzabonlarga taklif qilamiz telegram kanali.