Асновы GNU/Linux

Увага!
На нізе старонкі дададзеная прыдатная для друку і чытаньня PDF-вэрсія (640 Кб), але яна адпавядае арыгінальнай вэрсіі з невялічкімі памылкамі.

Пераклад на іншыя мовы будзе дарэчы.

Уводзіны

Чаму для актывістаў так важна карыстацца свабоднымі апэрацыйнымі сыстэмамі? Таму, што лягічна, ўто свабодны чалавек карыстаецца свабоднымі праграмамі. Таму, што магчымасьць доступу да зыходных кодаў дае магчымасьць ня толькі паляпшаць праграму ўсім ахвотным, але і гарантуе, што ў праграме, напрыклад шыфраваньня, адсутнічаюць „закладкі”, якія дазволяць спэцслужбам прачытаць таемную інфармацыю.

Паводле клясычнага азначэньня, агучанага Рычардам Столманам, свабодныя праграмы — гэта такія праграмы, якія адпавядаюць наступным патрабаваньням:

  1. свабода выкарыстаньня праграмы для любой мэты;
  2. свабода вывучэньня прынцыпу дзеяньня праграмы і зьмяненьне яе ў адпаведнасьці са сваімі патрэбамі;
  3. свабода распаўсюду копій праграмы для дапамогі сваім блізкім;
  4. свабода ўдасканальваньня праграмы і публікацыі сваіх удасканальваньняў дзеля карысьці ўсяе супольнасьці.

Заўважым, што тут адсутнічаюць словы пра грошы ці кошты. А гэта значыць, што свабодныя праграмы можна прадаваць, больш таго, калі Столман толькі пачынаў рух за свабодныя праграмы, адзінай крыніцай ягонага даходу быў продаж напісаных ім свабодных праграм.

Усе праграмы распаўсюджавюцца паводле пэўных умоў — ліцэнзій. Да свабодных ліцэнзій адносяцца GPL, LGPL, BSD-style, MIT, X11, Artistic, Apache і некаторыя іншыя.

На сёньняшні дзень існуе пэўная колькасьць свабодных апэрацыйных сыстэмаў, рознага ўзроўню прыдатнасьці. Адзначым некаторыя: (цалкам функцыянальныя) GNU/Linux, NetBSD, FreeBSD, OpenBSD, DragonFlyBSD, (маюць розныя абмежаваньні) minix3, Plan9, Haiku, Syllable, ReactOS. Напісаньне GNU/Linux абазначае „апэрацыйная сыстэма GNU зь ядром Linux”, ядро праекта GNU — Hurd знаходзіцца ў распрацоўцы, таксама былі/ёсьць зборкі GNU на ядрах ад FreeBSD, NetBSD, OpenSolaris, MacOS X (Darwin, хоць уся сыстэма несвабодная, ядро свабоднае). Таму, калі ў тэксьце будзе сустракацца проста GNU, гэта будзе агульным для любога варыянта GNU, калі GNU/Linux — толькі для сыстэмы зь ядром Linux. Пад тэрмінам BSD маецца на ўвазе любая з чатырох.

Асаблівасьць GNU — адсутнасьць „афіцыйнай” вэрсіі, розныя сыстэмы на яе базе выпускаюцца рознымі распрацоўшчыкамі-дыстрыбутарамі (імі можа быць адзін чалавек, супольнасьць, камэрцыйная кампанія). Гэтая „мэтадычка” будзе базавацца на Debian/Ubuntu.

GNU, хоць і расшыфроўваецца як GNU's Not Unix (ГНЮ — гэта ня Юнікс), але зьяўляецца Unix-падобнай сыстэмай, таму ў тэксьце часта будзе сустракацца тэрмін Unix, але да арыгінальнай Unix ён ня мае дачыненьня, толькі да яе „стылю”.

Базавыя навыкі працы з сыстэмамі GNU/Linux

Файлавая сыстэма

Карыстальнікі Windows прывыклі да файлавай сыстэмы, якая прыйшла з часоў DOS і дыскет. Асаблівасьць гэтай сыстэмы — падзел на г.зв. дыскі, кожны зь якіх мае сваю назву, якая складаецца зь літары й двухкроп'я (напр. C:, D:, E:). На кожным „дыску” знаходзіцца уласнае дрэва каталёгаў.

У сыстэмах GNU, а таксама BSD і іншых, якія арыентуюцца на Unix, выкарыстоўваецца зусім іншы падыход. Сутнасьць яго ў тым, што існуе адзінае дрэва файлавай сыстэмы з агульны корнем, а ўсе іншыя носьбіты (падзелы дыску, CD/DVD, сеткавыя файлавыя сыстэмы, нават мабільныя тэлефоны) падлучаюцца да каталёгаў гэтага дрэва.

Некаторыя важныя каталёгі файлавай сыстэмы:

  • / — корань ўсёй файлавай сыстэмы;
  • /etc — канфігурацыйныя файлы праграмаў, інфармацыя для запуску апэрацыйнай сыстэмы;
  • /bin, /sbin — мінімальна неабходныя для працы праграмы, у bin даступныя ўсім, у sbin — толькі адміністратару;
  • /lib — мінімальна неабходныя для працы праграмаў бібліятэкі падпраграмаў;
  • /usr — карыстальніцкія праграмы, унутраная структура каталёгаў нагадвае /;
  • /var — утрымлівае зьменлівыя файлы, такія як базы даньняў, электронная пошта;
  • /tmp — утрымлівае часовыя файлы;
  • /dev — файлы прыладаў;
  • /proc, /sys — сыстэмныя каталёгі, якія дазваляюць атрымоўваць інфармацыю аб працы сыстэмы;
  • /home — утрымлівае „хатнія” каталёгі карыстальнікаў;
  • /root — „хатні” каталёг адміністратара сыстэмы.

Актыўна ўжываецца ў запісу шляхоў скарачэньне ~, якое абазначае шлях да хатняга каталёгу бягучага карыстальніка, напр. ~/text/file.txt — файл file.txt у падкаталёгу text хатняга каталёгу. Калі да ~ дадаць імя карыстальніка, то такі запіс будзе абазначаць шлях да хатняга каталёгу гэтага карыстальніка, напр. ~user1 — шлях да хатняга каталёгу карыстальніка user1.

Імёны файлаў і каталёгаў, у адрозьненьне ад windows, адчувальныя да рэгістру літар, г.зн. usr, Usr і USR — зусім іншыя імёны.

Ня гледзячы на тое, што ўсе свабодныя сыстэмы даўным-даўно працуюць з графічным асяродзьдзем, зараз мы ня будзем кранаць яго, а разгледзім асновы працы, якія не патрабуюць графікі.

Для падарожжа на файлавай сыстэме выкарыстоўваюцца невялічкі сьпіс камандаў:

  • cd <каталёг> — перайсьць ў пазначамы каталёг, калі каталёг не задазены, то пераходзіць у хатні каталёг.
  • pwd — выводзіць бягучы каталёг.
  • ls <каталёг> — адлюстраваць зьмест каталёгу, калі каталёг не зададзены, то выводзіць зьмест бягучага каталёгу. Замест імя каталёгу можна выкарыстоўваць імя файла, будзе выведзеная інфармацыя пра гэты файл. ls падтрымлівае шмат розных выбораў, якія задаюць рэжым працы, напр., -a — вывесьці зьвесткі пра ўсе файлы, у тым ліку схаваныя (яны адрозьніваюцца ад звычайных, што іх імя пачынаецца з кропкі, напр. .hidden_file), -l — вывесьцю падрабязную інфармацыю, -h або —help — вывесьці дапамогу па выкарыстаньні.
  • pushd <каталёг> — зьмяшчае імя каталёгу ў адмысловы стэк каталёгаў, калі каталёг не пазначаны, то выводзіць зьмест стэку. Тыповае выкарыстаньне — pushd `pwd`, каманда pwd ўзятая ў зваротныя двукоссьсі, што абазначае выкарыстаньне таго, што яна вывядзе.
  • popd — адваротная каманда, дастае са стэку імя каталёгу, зьмешчанага туды апошнім і робіць пераход у яго.

Апошнія дзьве каманды патрэбныя вельмі рэдка і пададзеныя хутчэй для азнаямленьня.

Для працы могуць спатрэбіцца таксама наступныя каманды:

  • touch <файл> — стварыць файл, калі файл існуе, то абнавіць час зьмяненьня.
  • cp <што> <куды> — капіюе файл, пры выкарыстаньні выбору -a таксама капіюе каталёгі.
  • mv <што> <куды> — пераносіць або пераймяноўвае файл.
  • rm, rmdir — выдаляюць файлы і каталёгі, адпаведна.
  • cat, more, less — вывесьці зьмест файла, першая проста выводзіць, другая паэкранна, less дазваляе больш-менш камфортна праглядаць з пракруткай, пошукам і г.д.
  • find <дзе> -name <што> — ажыцьцяўляе пошук файла.

Адна з найцікавейшых асаблівасьцяў юніксавых файлавых сыстэм гэта тое, што імёны файлаў і каталёгаў для сыстэмы не патрэбныя, яна працуе з г.зн. inode, фактычна, нумарамі ў файлавай сыстэме. Паколькі чалавеку працаваць з нумарамі нязручна, то зробленыя імёны-спасылкі на іноды.

Разгледзім просты прыклад. Створым файл і даведаемся, які ў яго інод.


globus@fscbook:~$ touch file
globus@fscbook:~$ ls -li file
853 -rw-r--r-- 1 globus globus 0 2007-09-09 14:05 file

У першым слупку вываду ls знаходзіцца нумар інод — 853, у трэцім колькасьць жорсткіх спасылак на гэты файл. Жорсткія спасылкі — гэта імёны, якія спасылаюцца на інод. Для стварэньня дадатковых жорсткіх спасылак выкарыстоўваецца каманда ln.


globus@fscbook:~ ln file file2
globus@fscbook:~$ ls -li file*
853 -rw-r--r-- 2 globus globus 0 2007-09-09 14:05 file
853 -rw-r--r-- 2 globus globus 0 2007-09-09 14:05 file2

Як бачым інод у абадвух файлаў аднолькавы, а колькасьць жорсткіх спасылак павялічылася да 2. Можна выдаліць любую жорсткую спасылку, але файл застанецца. Файл выдаляецца толькі тады, калі на яго не засталося ніводнае спасылкі.


globus@fscbook:~$ rm file
globus@fscbook:~$ ls -li file*
853 -rw-r--r-- 1 globus globus 0 2007-09-09 14:05 file2

Апрача жорсткіх спасылак існуюць мяккія, якія спасылаюцца не на інод, а на імя файла. Для іх стварэньня выкарыстоўваецца каманда ln -s.


globus@fscbook:~$ ln -s file2 file
globus@fscbook:~$ ls -li file*
854 lrwxrwxrwx 1 globus globus 5 2007-09-09 14:24 file -> file2
853 -rw-r--r-- 1 globus globus 0 2007-09-09 14:05 file2

Як бачым, у file і file2 адрозьніваюцца іноды, а ў апошнім слупку паказана, што file спасылаецца на file2. Можна выдаліць file2, а file застанецца.

На каталёгі ствараць жорсткія спасылкі немагчыма, толькі мяккія. Дакладней, кожны каталёг мае толькі дзе жорсткія спасылкі: „.” — спасылаецца на сам каталёг, і „..” — спасылаецца на „бацькоўскі” каталёг, а ў выпадку / — аналягічны „.”.

Правы доступу

У сыстэмах, пабудаваных паводле прыкладу unix выкарыстоўваецца простая двухузроўневая сыстэма правоў доступу. Існуюць узровень адміністратара, паводле традыцыі ён завецца root, і ўзровень карыстальніка. Рут можа рабіць усё, што захоча, ён цар і бог сыстэмы. Карыстальнікі могуць рабіць толькі тое, што дазволена рутам.

Для сыстэмы імя карыстальніка абсалютна ня важна, ёй важны яго лічбавы ідэнтэфікатар. Для рута ён заўжды роўны 0. Для карыстальнікаў выкарыстоўваюцца іншыя лікі. Сувязь між ідэнтэфікатарамі і імёнамі знаходзіцца ў файле /etc/passwd. Кожны карыстальнік можа належаць да адной ці некалькіх груп карыстальнікаў, групы запісваюцца ў файле /etc/group. Выкарыстаньне групаў дае магчымасьць простага кіраваньня доступам да рэсурсаў.

Вернемся да папярэдніх прыкладаў, і паглядзім на другі радок вываду ls -li. У гэтым радку выведзеныя правы доступу да файла. Чацьвёрты й пяты радкі — імя і група ўладальніка файла.

Першая літара ў праве доступу вызначае спэцыяльны тып файла, можа быць: d — каталёг, l — мяккая спасылка, p — канал абмену, b — блёкавая прылада, c — знакавая прылада, s — сокет. Тыпы файлаў p, b, c, s будуць разгледжаныя пазьней.

Пасьля ідуць тры палі па тры літары, якія характарызуюць тып доступу да файла. Першая характарызуе правы самога ўладальніка (слупок 4), другая — тых, хто ўваходзіць у групы (слупок 5), трэцяя — усіх астатніх. Правы доступу могуць быць на чытаньне (пазначаецца r), запіс (w), выкананьне файла або доступ да каталёгу (x). Звычайна праграмы выконваюцца ад імя таго, хто іх запусьціў. Часам жа патрэбна каб праграма выконвалася ад імя ўладальніка, у гэтым выпадку ўсталёўваецца права доступу suid, тады замест „x” у адпаведным палі запісваецца „s”.

Апошняй літарай можа стаяць „sticky bit” T, для файлаў у сыстэме GNU/Linux ён ня мае аніякага значэньня. Калі ўжыты да каталёгу, то файлы ў ім можа выдаліць толькі рут ці ўладальнік файла. Звычайна, кожны хто мае права запісу ў каталёг можа выдаляць ці пераймяноўваць у ім любыя файлы, таму на каталёгі, у якія маюць права запісу ўсе, усталёўваецца sticky bit.

Для ўсталяваньня правоў доступу да файлаў выкарыстоўваецца каманда chmod, для зьмяненьня імя і групы ўладальніка файла — chown.

chmod можа прымаць правы доступу запусаныя або лічбамі ў васьмярковай сыстэме, або ў больш чытэльнай сымбальнай. Пры сымбальным запісу выкарыстоўваюцца скарачэньні для поля: u — user, уладальнік, g — group, група, o — other, іншыя, a — all, усе. Правы кадуюцца гэтак жа, як і ў вывадзе ls: r,w,x… Усталяваць права кадуецца плюсам, скасаваць — мінусам. Напр., chmod u-x,a+w file.ext.

Традыцыйная схема правоў доступу распрацоўвалася ў Unix з адной мэтай — не дазволіць карыстальнікам чытаць чужую пошту, таму яна вельмі простая. У пазьнейшы яна была пашыраная POSIX ACL (Access Control List, Спіс кіраваньня доступам), але на хатняй сыстэме ў іх патрэба ўзьнікае вельмі-вельмі рэдка.

Адмысловыя файлы

Як было сказана вышэй, ёсьць адмысловыя файлы, тып якіх пазначаецца ў вывадзе ls літарай b, c, p, s. Разгледзім іх падрабязьней.

Файлы тыпаў b і с адносяцца да, адпаведна, блёкавых (block) і знакавых (character) прылад і прызначаныя для ўзаемадзеяньня з драйвэрамі прылад. Звычайна такія файлы знаходзяцца ў каталёгу /dev.

Блёкавыя прылады — гэта прылады, абмен інфармацыяй зь якімі ідзе блёкамі фіксаванага памера, напр., дыскі. Са знакавымі абмен ідзе пабайтава, гэта гукавыя карты, мышы, клявіятура і шмат якія іншыя прылады.

Зусім нядаўна карыстальніку трэба было ведаць, як працаваць з такімі файламі, але сёньня ў сыстэмах GNU/Linux ужываецца адмысловая праграма udev, якая амаль вызваліла карыстальніка ад неабходнасьці турбавацца пра гэтыя файлы.

Далей па сьпісе каналы (pipes), яны прызначаныя для абмену інфармацыяй між працэсамі паводле прынцыпу „першы прыйшоў — першы пайшоў”. Ужываньне каналаў будзе разгледжана ў разьдзеле „Узаемадзеяньне між працэсамі”.

Сокеты (sockets) актыўна выкарыстоўваецца пры ўзаемадзеяньні працэсаў паводле схемы „кліент-сэрвэр”, таму ня варта без патрэбы выдаляць такія файлы, бо нешта ў сыстэме можа перастаць працаваць.

Падлучэньне файлавых сыстэм

Калі мы працуем з Windows, то правілы, паводле якіх сыстэма ставіць у адпаведнасьць дыскам літары, даволі простыя. Але гэтыя правілы накладваюць шмат абмежаваньняў на сыстэму. Напр., першы падзел дыску мусіць быць галоўным. Часам выдаленьне або стварэньне падзелаў прыводзіць да таго, што некаторыя праграмы перастаюць правільна працаваць. Гэта абмежаваньні аўтаматычнага падлучэньня.

У сыстэмах тыпу Unix для падлучэньня файлавай сыстэмы выкарыстоўваецца каманда mount. Яна выконваецца як mount -t <тып файлавай сыстэмы> -o <выборы> <прылада> <каталёг>. Тып файлавай сыстэмы можна прапусьціць, тады сыстэма сама паспрабуе ўгадаць яго. Выборы таксама, тады будуць ужытыя стандартныя. Прылада — гэта файл з /dev, якія адпавядае рэальнай прыладзе (дыску, сеткавай файлавай сыстэме і г.д.). Каталёг — каталёг у дрэве файлавай сыстэмы, да якога падлучаецца новая.

У сыстэмах GNU/Linux выкарыстоўваецца Linux-овая схема іменаваньня дыскаў і падзелаў на іх, напр., hda — першы IDE-дыск, hdb — другі, sda — першы SCSI/SATA/USB дыск, зь некаторымі новымі ядрамі IDE-дыскі таксама могуць іменавацца sdX. Адпаведна падзелы на дысках нумаруюцца з дапамогай лічбаў, якія дадаюцца да найменьня дыску, напр. hda1 — першы разьдзел першага IDE-дыску

Linux падтрымлівае вялікае мноства тыпаў файлавых сыстэмаў:

  • ext2, ext3, ext4 — „родныя” файлавыя сыстэмы, раней шырока ўжывалася ext2, але сёньня больш надзейная за яе ext3, ext4 толькі распрацоўваецца. Прыладу з ext3 можна падлучаць як ext2 (але ня варта). Вельмі надзейыя.
  • reiserfs — яшчэ адна „родная” сыстэма, дзякуючы іншай нутранай арганізацыі больш ашчадна адносіцца да месца на дыску, асабліва калі шмат маленькіх файлаў. Хутчэйшая за ext.
  • xfs, jfs — прыйшлі ад сыстэмаў SGI IRIX ды IBM AIX, адпаведна.
  • vfat, ntfs — падтрыліваюць файлавыя сыстэмы ад майкрасофта. Падтрымка ntfs няпоўная, але існуюць поўнафункцыянальныя драйвэры ntfs-3g або ntfsmount, якія працуюць з падсыстэмай fuse, пра якую расповяд будзе пазьней.
  • Безьліч файлавых сыстэм іншых апэрацыйных сыстэмаў.
  • Розныя сеткавыя файлавыя сыстэмы, такія як coda, afs, nfs, smb.

Кожны раз падлучаць файлавыя сыстэмы ўручную нязручна, таму існуе адмысловы файл /etc/fstab, якім карыстаецца сыстэма падчас загрузкі. Выглядае гэты файл наступным чынам.


# <файл.сыстэма> <пункт падлуч.> <тып> <выборы> <архів.> <чарга>
# Сыстэмная файлавая сыстэма proc
proc /proc proc defaults 0 0
# Аўтаматычнае падлучэньне асноўных файлавых сыстэмаў
/dev/mapper/mylvm-root / reiserfs notail,noatime 0 1
/dev/mapper/mylvm-var /var reiserfs noatime 0 2
/dev/mapper/mylvm-home /home reiserfs noatime 0 3
# Падлучэньне прылады віртуальнай памяці (Сюды з памяці скідваецца непатрэбнае)
/dev/mapper/mylvm-swap none swap sw 0 0
# Падлучэньне несыстэмнага падзелу Windows
/dev/hda3 /media/data ntfs nls=utf8,umask=0222 0 0
# Апісаньне, куды падлучаць дыскеты і CD
/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0

Каманда mount умее браць зьвесткі з /etc/fstab, таму можа выклікаць пазначаючы толькі прыладу або каталёг падлучэньня.


globus@fscbook:~$ mount /dev/fd0
globus@fscbook:~$ mount /media/cdrom0

Выбор user дазваляе падлучаць файлавую сыстэму ня толькі руту, але і звычайнаму карыстальніку. Выбор noauto забараняе аўтаматычна падлучаць сыстэму, можна толькі ўручную. Парамэтар „чарга” вызначае парадак праверкі файлавай сыстэмы пасьля збою, напр., файлавыя сыстэмы на розных дысках можна правяраць адначасова, а на адным па парадку. Парамэтар „архіваваньне” вызначае, ці трэба рабіць рэзэрвовую копію файлавай сыстэмы.

Для адлучэньня файлавай сыстэмы ад каталёгу выкарыстоўваецца каманда umount <каталёг>. Калі на сыстэме адкрытыя нейкія файлы ці каталёгі, то адлучыць яе немагчыма.

Файл /etc/fstab адносіцца да файлаў з катэгорыі „напісаў і забыў”, і, звычайна, яго зьмест запаўняецца праграмай-ўсталёўнікам сыстэмы. Пасьля патрэба зьмяняць яго ўзьнікае толькі пры зьмяненьні канфігурацыі дыскавай сыстэмы (пераразьбіцьці дыску, дабаўленьні новага дыску і г.д.), альбо неабходнасьці зьмяніць парамэтры падлучэньня.

Падлучэньне здымных носьбітаў інфармацыі, такіх як флэшкі (USB і ня толькі) або фотапараты ці тэлефоны, якія „прыкідваюцца” здымнымі дыскамі, сёньня не ўяўляе аніякіх праблемаў для карыстальнікаў Gnome або KDE (пра іх размова будзе ісьці ў разьдзеле пра X Window System). Тым, хто імі не карыстаецца, будзе карысная праграмка ivman, якая, як і ўбудаваныя сродкі Gnome і KDE, дазваляе бязь лішніх клопатаў падлучаць і адлучаць здымныя носьбіты (атрымоўваецца нават зручней, чым у windows). Яшчэ нядаўна гэта трэба было рабіць уручную, карыстаючыся камандай mount і, для спрашчэньня, робячы запісы ў /etc/fstab (насамрэч, гэта ня менш зручна, калі ведаеш, што і як працуе). Аўтаматычнае падлучэньне здымных носьбітаў працуе толькі тады, калі запушчаная праграма HAL (Hardware Abstraction Layer), у сучасных дыстрыбутывах яна запускаецца аўтаматычна.

Адна з найбольш цікавых падсыстэм Linux — файлавыя сыстэме ў прасторы карыстальніка (filesystems in userspace, fuse). Яны дазваляюць карыстальнікам падлучыць файлавыя сыстэмы без правоў рута, і гэтыя файлавыя сыстэмы будуць бачныя толькі ім.

Звычайныя файлавыя сыстэмы патрабуюць драйвэра ядра, які рэалізуе іх работу. У выпадку fuse драйвэр — гэта звычайная праграма, гэта спрашчае іх напісаньне, і памылкі ў іх не прыводзяць да краху ўсёй сыстэмы.

На сёньняшні дзень існуе мноства файлавых сыстэм, якія працуюць праз fuse. Сярод іх sshfs, якая дазваляе працаваць з файламі зь іншага кампутара праз шыфраванае злучэньне, encfs, якая дазваляе шыфраваць каталёгі, і іншыя.

Праца з fuse будзе разгледжаная на прыкладзе encfs у разьдзеле „Шыфраваньне файлаў”.

Працэсы. Кіраваньне і ўзаемадзеяньне.

GNU, як і любая іншая правільна спраектаваная апэрацыйная сыстэма, шматзадачная і шматкарыстальніцкая. У гэтым разьдзеле мы разгледзім базавыя апэрацыі з працэсамі. Працэс, гэта ў першым набліжэньні, праграма якая выконваецца.

Кіраваньне працэсамі

Пры заходзе ў сыстэму для кожнага карыстальніка запускаецца ягоны камандны інтэрпрэтатар (у тэрміналёгіі Unix — абалонка, shell), з дапамогай якога карыстальнік узаемадзейнічае з сыстэмай. Абалонка дазваляе запускаць працэсы, часова іх прыпыняць або цалкам спыняць. Для выкананьня пэўнай каманды карыстальнік уводзіць яе імя, каманда можа быць асобнай праграмай (find, ls і інш.), або ўбудаванай у абалонку (cd, pushd, popd).

Звычайна, карыстальнік ня можа ўзаемадзейнічаць з абалонкай, калі ён запусьціў на выкананьне нейкую праграму. Гэта мае сэнс, калі трэба ўзаемадзейнічаць з праграмай, напр., калі гэта праграма працы з поштай ці тэкставы рэдактар. Калі ж узаемадзеяньне не патрэбна, то праграму можна запусьціць *у фоне*, для гэтага пасьля яе імя трэба паставіць знак &.


globus@fscbook:~$ xvidtune &
[1] 7702
globus@fscbook:~$

У першым радку ў квадратных дужках нумар працы (job), якой кіруе абалонка, у другой — агульнасыстэмны нумар працэса (pid, process id). Фонавую працу можна перавесьці на пярэдні плян, для ўзаемадзеяньня яе з карыстальнікам. Для гэтага абалонка мае ўбудаваную каманду fg <job>, напр., fg 1. Каб вернуць працу ў фон яе трэба спачатку спыніць, націснуўшы Ctrl+Z, каб атрымаць доступ да абалонкі. Пасьля яе можна працягнуць выконваць у фоне з дапамогай каманды bg <job>, або працягнуць на пярэднім пляне (fg). fg і bg ужытыя бяз нумара працы працуюць з апошняй працай.

Каб датэрмінова спыніць працэс, запушчаны на пярэднім пляне, выкарыстоўваецца камбінацыя Ctrl+C. На некаторыя праграмы яна ня дзейнічае, таму іх трэба прыпыніць, а пасьля спыніць камандай kill.

Праграма kill, ня гледзячы на назву, не забівае працэсы, а пасылае ім сыгнал на заканчэньне (TERM). Калі ж працэс не рэагуе на яго, то можна паслаць сыгнал на забойства працэс (KILL), таксама яна выкарыстоўваецца, каб пасылаць працэсам розныя іншыя сыгналы. Выкарыстоўваецца як kill <pid> — гэтак яна пасылае сыгнал TERM, kill -s KILL <pid> — гэтак TERM. Замест нумара працэсу можна ўжываць нумар працы, але перад ім мусіць стаяць знак працэнта: kill %1. Карыстальнік можа спыняць толькі ўласныя працэсы, рут — любыя.

Каб даведацца, якія працэсы запушчаныя карыстальнікам, выкарыстоўваецца каманда ps. З выборам -e або ax яна пакажа ўсе працэсы сыстэмы. Існуе таксама інтэрактыўная праграма top.


globus@fscbook:~$ ps
PID TTY TIME CMD
7629 pts/1 00:00:00 bash
8039 pts/1 00:00:00 xvidtune
8050 pts/1 00:00:00 ps
globus@fscbook:~$

Сярод усіх працэсаў ёсьць асаблівы працэс з нумарам 1. Гэта — /sbin/init, праграма, якая запускаецца першай, запускае ўсе іншыя праграмы, і пасьля выконвае іншыя важныя задачы. Забіваць яе зусім ня варта. Таксама ня варта забіваць працэсы, чые імёны ўзятыя ў квадратныя дужкі, бо гэта часткі ядра Linux, якія выглядаюць як працэсы.

Вернемся да вываду ps, другі слупок пазначаны TTY. У далёкія-далёкія часы карыстальнікі узаемадзейнічалі з кампутарам праз адмысловыя тэрміналы, на сёньня іх не засталося, але праца з карыстальнікам з пункту гледжаньня праграм адбываецца як з тэрміналам. Пры працы ў графічнай сыстэме X11 можна запусьціць любую колькасьць эмулятараў тэрмінала, у тэкставым рэжыме — шэсьць віртуальных тэрміналаў, доступ да кожнага ажыцьцяўляецца здапамогай камбінацыі клявіш Alt+Fn, дзе Fn гэта клявішы ад F1 да F6. (Насамрэч іх больш, але ўваход у сыстэму магчымы толькі на першых 6, на 7-м запускаецца сыстэма X11)

Узаемадзеяньне між працэсамі

У аснову сыстэмы Unix быў пакладзены прынцып KISS (keep it simple, stupid — дурань, зрабі гэта па-просту), таму „клясычныя” праграмы выконваюць толькі адну задачу, але выконваюць яе добра (на жаргоне пра такія праграмы кажуць, што яны адпавядаюць ,,unix-way"). Каб выканаць нейкую больш складаную задачу патрэбнае ўзаемадзеяньне некалькіх праграмаў.

Самы просты спосаб узаемадзеяньня — вывад адной праграмы запісаць у файл (ls > file), а іншай праграме прачытаць з гэтага файла (less < file). Можна прапусьціць лішнія крокі й проста падаць вывад адной на ўваход другой (ls | less).

Замест „>”, якія цалкам перазапісвае файл, часам выкарыстоўваецца „»”, у гэтым выпадку вядзецца *дапісваньне* ў канец файл. Калі файла, ужытага з >/» не існуе, то абалонка яго створыць.

Разгледжаныя прыклады паказваюць працу перанакіраваньня ўводу-вываду. Кожная праграма мае 2 стандартныя плыні вываду: stdout, якая мае нумар 1 і ў якую выводзіцца звычайная інфармацыя, і stderr, нумар 2, у якую выводзіцца інфармацыя аб памылках, і адну плыню ўводу stdin, нумар 3. Звычайна, „на іншым канцы” плыні знаходзіцца экран або клявіятура. Перанакіраваньне ўводу-вываду дазваляе замест гэтых плыняў выкарыстоўваць файлы, або злучаць вывад з уводам. Каб працаваць з stderr, яе трэба спачатку перанакіраваць у stdout: xvidtune —help 2>&1 |less.

Часам выкарыстаньне ананімных каналаў („|”) немагчыма, у гэтым выпадку выкарыстоўваюць адмысловыя файлы-каналы (гл. вышэй). Разгледзім выкарыстаньне каналаў на вельмім простым, надуманным прыкладзе.

Спачатку мы створым канал камандай mkfifo <імя канала>. Пасьля запускаем у адным тэрмінале cat <канал>, якая застанецца чакаць, покуль у канал будзе запісаная інфармацыя. У другім тэрмінале запісваем камандай echo інфармацыя > <канал> інфармацыю ў канал, echo застаецца чакаць, покуль інфармацыя будзе прачытаная з каналу. cat чытае інфармацыю з канала і спыняе працу. echo „бачыць”, што інфармацыя прачытаная, і таксама спыняе працу. Можна ў розных тэрміналах запусьціць іх у іншым парадку: спачатку echo, а пасьля cat — вынік будзе такі ж.

Шчыра кажучы, я ня ведаю, ці спатрэбяцца каналы простаму карыстальніку. Мне яны ніколі патрэбнымі не былі.

Больш цікавыя сокеты. Мабыць карыстальнікі Сеціва чулі нешта пра сокеты. І хоць сеткавыя (TCP/IP) сокеты адрозьніваюцца ад лякальных (Unix domain), іхнае выкарыстаньне дазваляе вельмі проста рабіць праграмы, якія абменьваюцца інфармацыяй зь іншымі праграмамі, незалежна ад таго, запушчаныя яны на адным кампутары, ці ў розных паўкулях Зямлі.

Праз сокеты праграмы даюць каманды графічнай сыстэме X11 на рысаваньне, кампанэнты паштовага сэрвэра Postfix абменьваюцца інфармацыяй, нават некаторыя аўдыёпрайгравальнікі (XMMS, Audacious) кіруюцца праз сокеты (хоць карыстальнік пра гэта можа й не здагадвацца). Сучасная сыстэма ўзаемадзеяньня між працэсамі DBus, якая ляжыць у аснове сучаснага карыстальніцкага асяродзьдзя, таксама працуе праз сокеты. Таму ніколі не выдаляй сокеты, калі на тое няма важнай прычыны.

Дасыланьне сыгналаў таксама зьяўляецца адной з формаў міжпрасэсарнага ўзаемадзеяньня.

Іншыя формы міжпрацэсарнага ўзаемадзеяньня не ўяўляюць цікавасьці для „непрасунутага” карыстальніка.

Праца з апаратурай і драйвэрамі

На сёньняшні дзень карыстальніку варта патурбавацца толькі пра тое, каб яго „жалеза” падтрымлівалася Linux. У гэтым пляне карыстальнікі GNU/Linux знаходзяцца ў больш выгодным становішчы, чым карыстальнікі BSD.

ПЗагрузкай патрэбных для працы апаратуры драйвэраў (модуляў ядра) займаецца падсыстэма udev. Аднак некаторыя модулі патрэбна загружаць уручную або пералічыць іх у адмысловым файле /etc/moduules, які чытаецца сыстэмай пры загрузцы. Звычайна, гэты файл запаўняецца ўсталёўнікам сыстэмы. Некаторыя з такіх модуляў — драйвэры не апаратуры, а розных падсыстэм ядра. Напрыклад, пры выкарыстаньні сыстэмы Fuse трэба будзе дадаць fuse ў гэны файл. -Магчыма і ppp для злучэньня зь Сецівам праз тэлефон.-

Для ручнога кіраваньня драйвэрамі існуюць тры каманды:

  • lsmod — выводзіць сьпіс загружаных у памяць модуляў.
  • rmmod <модуль> — выгружае модуль.
  • modprobe <модуль> або insmod <поўная назва файла модуля> — загружае ў памяць модуль. У першым варыянце дастаткова пазначыць назву модуля, у другім — поўную назву яго, са шляхам.

Дзе ўзяць даведку

Каб атрымаць сьціслую даведку пра праграму дастаткова выклікаць яе з выборам —help або -h, напр., ls —help. Некаторыя праграмы, аднак, могуць не падтрымліваць гэты выбор.

Больш падрабязнае апісаньне ўтрымліваецца ў „Кіраўніцтве” (manual page). Для працы з кіраўніцтвам прызначаная праграма man. Усе старонкі кіраўніцтва падзеленыя на некалькі разьдзелаў, 8 стандартных і некалькі нестандартных.

Стандартныя разьдзелы:

  1. Праграмы, якімі карыстаюцца ўсе
  2. Сыстэмныя выклікі (карысна сыстэмным праграмістам)
  3. Бібліятэчныя выклікі (карысна праграмістам)
  4. Адмысловыя файлы (тыя, што звычайна знаходзяцца ў /dev)
  5. Фарматы файлаў
  6. Гульні (не шукай там Quake 4)
  7. Рознае
  8. Праграмы адміністраваньня сыстэмы

Звычайна man выкарыстоўваюць проста зь іменем старонкі, напр., man bash. Але розныя старонкі з аднолькавым іменем могуць знаходзіцца ў розных разьдзелах, напр., passwd(1) — каманда зьмяненьня пароля карыстальніка, а passwd(5) — апісаньне файла /etc/passwd. У такім выпадку задаецца нумар разьдзелу: man 1 passwd. Для пошуку старонак пра пэўны тып праграмаў выкарыстоўваецца каманда apropos: apropos editor — выведзе зьвесткі аб старонках пра рэдактары. Каб атрымаць караценькае апісаньне праграмы ці файла існуе каманда whatis — напр. whatis ls. man прыйшоў са старых Юніксаў, сыстэма GNU мае іншы фармат — info, які дазваляе рабіць больш структураваныя старонкі. info можна выклікаць безь імя патрэбнай старонкі, тады яна выведзе сьпіс наяўных.

Графічныя праграмы будуць разгледжаныя ў разьдзеле, прысьвечаным графічным асяродзьдзям.

X Window System

Ня гледзячы на наяўнасьць розных варыянтаў графічных асяродзяў, самая папулярная сыстэма гэта X Window System, або проста X. Часам завецца X11, бо гэта адзінаццаты варыянт сыстэмы. Зусім нядаўна ў сыстэмах GNU/Linux ды BSD выкарыстоўваліся Іксы ад XFree86.org, але, пасьля зьмены тымі ліцэнзіі, усе дытрыбутары перайшлі на варыянт ад X.Org (насамрэч доўгі час xorg рабіўся на базе xfree86, але пасьля бальшыня распрацоўшчыкаў пакінулі xfree86 і працуюць над асобным цяперака праектам xorg).

Асноўныя прынцыпы X11

Галоўная каштоўнасьць X Window System пасьля свабоднасьці — сеткавая празрыстасьць. Гэта значыць, што можна запускаць праграму на адным кампутары, а яна будзе выводзіць свае вокны і ўзаемадзейнічаць з прыладамі ўводу (мыш, клавіятута) на зусім іншым. Пры гэтым праграма будзе паводзіць сябе нібы ўсе яе часткі працуюць на адным кампутары. Але звычайна дыстрыбутары адключаюць магчымасьць працы праз сетку, бо сеткавыя магчымасьці Іксоў выкарыстоўваюцца рэдка.

Іксы — сыстэма, хоць „народжная” для Unix, але кросплятформенная, яе рэалізацыі існуюць ня толькі для GNU/Linux ці BSD, але нават для OS/2 і Windows. Кліент іксоў (праграма, якая выкарыстоўвае іх магчымасьці) можа быць запушчана пад GNU, але працаваць з сэрвэрам X (праграмай, якая кіруе уводам-вывадам), запушчаным пад Windows.

Як сказана вышэй, Іксы пісаліся для Unix, таму яны цалкам адпавядаюць правілу KISS. Сыстэма складаецца зь некалькіх асноўных кампанэнтаў, кожны зь якіх выконвае адну задачу. Найважнейшыя кампанэнты — сэрвэр X, які кіруе вывядзеньнем графікіі працай з прыладамі ўводу, кіраўнік дысплэя, які запускае сэрвэр і кіруе ўваходам карыстальнікаў у сыстэму, кіраўнік вакон — праграма, якая дазваляе перамяшчаць вокны па экране, зьмяняць іх памер і г.д. Мінімальна дастатковая для працы сыстэма ўключае ў сябе таксама эмулятар тэрмінала, каб можна было карыстацца тэрмінальнымі праграмамі, разгледжанымі ў папярэднім разьдзеле. Тут нават не патрэбны кіраўнік вакон, бо эмулятар тэрмінала можна запускаць разгорнутым на ўвесь экран.

Зразумела, што ў сапраўднасьці сыстэма мае больш складовых, найперш гэта бібліятэкі функцыя, якія спрашчаюць працу праграмісту, а таксама набор вельмі простых кліентаў якія дэманструюць працу „ў рэальных умовах”.

Сэрвэр Іксоў працуе толькі з графічнымі прымітывамі, такімі як кропка ці лінія, а таксама бітавая карцінка. Яшчэ ён умее ствараць вельмі простае вакно. Стварэньнем такіх элемэнтаў як кнопкі, сьпісы і г.д. (паводле тэрміналёгіі Іксоў — віджэтаў, widgets) займаюцца адмысловыя бібліятэкі-наборы інструмэнтаў (тулкіты, toolkits). У склад X.org уваходзіць адмысловая бібліятэка для пабудовы тулкітаў Xt, на базе Xt выкананы тулкіт Athena, на якім напісаныя праграмы-прыклады з складу Іксоў (гэты тулкіт — толькі прыклад, тым больш створаны ў 80-я гады, таму ня лайце гэтыя праграмы за паганы выгляд).

На базе Xt пабудаваныя, збольшага, старыя тулкіты — свабодны Tk, несвабодны Motif і яго свабодны аналяг Lesstif. Аўтары сучасных тулкітаў (Gtk, Qt, Rox, Fltk) кніжак не чыталі, таму пішуць тулкіты без апоры на Xt (што праўда, Qt падтрымлівае некаторыя магчымасьці Xt).

Праца з „клясычнымі” Іксамі для карыстальніка Windows будзе нязвыклай — вокны ўсплываюць па навядзеньні на іх курсора, буфэр абмену працуе зусім іначай. Асаблівасьць буфэру абмену X11 заключаецца ў тым, што ён працуе толькі з тэкстам, але працаваць зь ім прасьцей: дастаткова вылучыць у вакне-крыніцы левай кнопкай мышы патрэбны тэкст, потым пстрыкнуць сярэдняй кнопкай у вакне-прымальніку, і тэкст скапіюецца. У буфэры абмену копіі тэксту не застаецца. Мыш з трыма кнопкамі неабходная для працы з Іксамі, але калі ў яе толькі дзьве кнопкі, то для эмуляцыі сярэдняй трэба адначасова націскаць левую і правую.

Тулкіты gtk і qt падтрымліваюць працу з буфэрам абмену ў стылі Windows (Ctrl+X, Ctrl+C, Ctrl+V).

Для Іксоў шырока ствараюцца асяродзьдзі стальца (desktop environment) — набор праграмаў пабудаваных на адным тулкіце, маючых выгляд паводле аднаго правіла. Першымі такімі асяродзьдзямі стальца былі несвабодныя OpenView (на базе XView) і CDE (на базе Motif). Сёньня існуюць некалькі свабодных асяродзьдзяў стальца, самыя папулярныя — Gnome (gtk), KDE (qt), xfce (gtk). Gnome і KDE, апроч фунцыянальсьці, якую прадастаўляюць X11 і адпаведныя тулкіты, маюць пашыраны набор функцый, які будзе разгледжаны ў разьдзелах, прысьвечаным стальцам.

Запуск

З тэкставага рэжыму Іксы можна запусьціць некалькімі спосабамі: выканаць startx ці xinit з правамі карыстальніка або запусьціць кіраўніка дысплэя (xdm, gdm, kdm, wdm або sdm) ад імя рута. У другім выпадку давядзецца паўторна ўваходзіць у сыстэму. У бальшыні дыстрыбутываў выкарыстоўваецца аўтаматычны запуск другога варыянту, хоць і зроблена гэта тэхнічна па-рознаму.

Каманда xinit запускае Іксы і праграмы, пералічаныя ў ~/.xsession, калі апошні адсутнічае, то запускаецца эмулятар тэрмінала. Калі ў ~/.xsession адсутнічае запуск на пярэднім пляне якой-небудзь графічнай праграмы (звычайна кіраўніка вакон), то праца Іксоў спыняецца. У некаторых сыстэмах ~/.xsession можа мець назву ~/.Xsession. Каманда startx зьяўляецца абгорткай над xinit, і робіць некаторыя дадатковыя дзеяньні, карыстальніку рэдка заўважныя.

Калі запусьціць клясычны кіраўнік дысплэя xdm, то, апроч неабходнасьці ўвядзеньня імя і пароля, вынік мала адрозьніваецца ад простага ўжываньня xinit. Калі ж карыстацца больш сучаснымі кіраўнікамі, такімі як gdm з праекта Gnome, або kdm з праекта KDE, то існуюць істотныя адрозьненьні. Яны заключаюцца ня толькі ў больш „гламурным” выглядзе, але і ў магчымасьці выбраць тып сэсіі ў залежнасьці ад усталяваных асяродзьдзяў. Кожнае асяродзьдзе мае сваю уласную сэсію, сэсія „default” адпавядае запуску ~/.xsession — гэта дазваляе не карыстацца прадвызначанымі сэсіямі, а стварыць уласную (напр., каб карыстацца адным кіраўніком вакон, а не асяродзьдзем стальца).

Абалонкі стальца. KDE, Gnome, XFCE4

Першай свабоднай абалонкай для GNU/Linux была KDE. Але яна свабоднай умоўна, бо базавалася на несвабодным тулкіце Qt (цяпер Qt выпускаецца пад свабоднай ліцэнзіяй).

KDE падтрымлівае некалькі схем паводзінаў, якія ўключаюць у сябе клявіятурныя спалучэньні, зьнешні выгляд і рэакцыю на дзеяньні мышы. Сярод іх KDE — уласны стыль, Windows, MacOS — блізкі да гэтых сыстэмаў, Unix — паводзіць сябе як „клясычныя” Іксы.

Адна з асаблівасьцяў KDE — выкарыстаньне адмысловых тэхналёгій KParts і kio_slaves. Першая тэхналёгія дазваляе выкарыстоўваць праграмы ў якасьці часткі іншых праграмаў, напрыклад, у складзе KDE ёсьць два тэкставых рэдактары, кожны зь якіх можна прызначыць быць рэдагавальным кампанэнтам, такім чынам праграміст, якому ў ягонай праграме спатрэбіцца рэдактар, замест таго, каб пісаць уласны, проста выкарыстоўвае рэдагавальны кампанэнт. Што гэта дае карыстальніку? Цяпер кожны можа прызначыць свой любімы рэдактар рэдагавальным кампанэнтам, і выкарыстоўваць яго ва ўсіх праграмах. Другая тэхналёгія дазваляе мець доступ да розных рэчаў як да лакальных файлах, напрыклад, калі ў радку адрасу Konquerror увесьці audiocd:/, і ў прывад CD устаўлены audiocd, то адкрыецца каталёг з некалькімі падкаталёгамі (mp3, ogg, flac), ў кожным зь якіх будуць файлы з адпаведнымі пашырэньнямі, якія прадстаўляюць дарожкі на кружэлцы, проста капіюем куды захочам на дыск, і ня трэба ніякіх ,,аўдыяграбэраў"! Некаторыя іншыя адрасы: smb:/ дае доступ да сеткі Windows, media:/ — да ўсіх носьбітаў інфармацыі, падлучаных да кампутара (дыскі, флэшкі і г.д.), man:/ дазваляе праглядаць man-старонкі. Поўны сьпіс можна пабачыць запусьціўшы праграму kinfocenter і перайшоўшы на элемэнт Prorocols.

Для працы з KDE пажадана мець ня менш за 128 MiB памяці, і працэсар з тактавай часьцінёй ад 500 MHz.

Праект Gnome стартаваў праз паўгоду пасьля KDE з мэтай стварыць сапраўды свабодную абалонку. Ён базуецца на свабодным тулкіце gtk. На пачатку распрацоўшчыкі мелі шмат амбітных плянаў па стварэньні перадавога асяродзьдзя, але ў выніку атрымалася звычайнае асяродзьдзе стальца.

Сучасныя распрацоўшчыкі Gnome арыентуюцца на карпаратыўных карыстальнікаў, таму праграмы маюць вельмі мала даступных наладак, для зьмяненьня іншых трэба карыстацца адмысловай праграмай gconf-editor (нечым нагадвае працу з рэестрам windows).

Gnome мае функцыянальнасьць (gnome-vfs), падобную kio_sklaves, але значна больш абмежаваную (smb:/, burn:/ для запісу CD/DVD).

Сыстэмныя патрабаваньні Gnome блізкія да KDE.

Той, хто абмежаваны ў сыстэмных рэсурсах, можа зацікавіцца XFCE4. Праект xfce пачынаўся як свабодны аналяг CDE, але пасьля рушыў уласным курсам. Для працы XFCE4 дастаткова 64 MiB памяці і 300 MHz працэсара.

Кіраваньне ўсталяванымі праграмамі

У гэтым разьдзеле будзе разгледжаны напэўна адно з найважнешых адрозьненьняў сыстэмаў на базе GNU/Linux ад іншых сыстэмаў — кіраўнік пакетамі (packet manager).

У сыстэмах Windows існуе паняцьце „інсталятар” — куча розных файлаў, сярод якіх прысутнічае файл з назвай setup.exe або install.exe, які ўсталёўвае ў сыстэму староньнюю праграму. Інсталятар дазваляе выбраць куды ўсталёўваць праграму, якія кампанэнты і г.д. Апрача гэтага ён усталёўвае неабходныя для працы праграмы староньнія бібліятэкі і, пры патрэбе, „анінсталятар” для выдаленьня ўсталяванай праграмы.

Такі падыход прыводзіць да бардаку ў сыстэме, ускладняе кіраваньне ёю, і абсалютна не адпавядае духу UNIX. У сыстэмах GNU/Linux „інсталятар” адзіны для ўсёй сыстэмы, яго ролю выконвае кіраўнік пакетамі. Ён усталёўвае (а таксама выдаляе) пакеты з праграмамі, пакеты — гэта, фактычна, архівы з файламі і дадатковай інфармацыяй (калі, кім, дзе створаны, што ўтрымлівае, пад якой ліцэнзіяй і г.д.). Пакеты для Slackware і вытворных — гэта звычайныя tar.gz, у Debian і вытворных (Knoppix, Mepis, Ubuntu) — deb (фактычна два tar.gz, адзін з файламі, другі з дадатковай інфармацыяй, аб'яднаныя ў архіў ar), у мноства іншых (Red Hat/Fedora, Alt, Mandriva, SUSE, PLD) — rpm (архіў cpio.gz ці cpio.bz2 з загалоўкам, які ўтрымлівае дадатковую інфармацыю), у Gentoo і вытворных выкарыстоўваецца сыстэма portage падобная да ўжыванай у BSD, яна арыентаваная на зборку з зыходнікаў.

Файлы, якія адносяцца да адной праграмы, часам могуць быць разьнесеныя па некалькіх пакетах, часам наадварот адзін пакет утрымлівае некалькі праграмаў.

Сярод службовай інфармацыі, якая ўтрымліваецца ў пакетах, асаблівае месца займаюць *залежнасьці* ад іншых пакетаў, напрыклад, у пакеце A можа ўтрымлівацца інфармацыя, што для працы праграмы a, якая ўтрымліваецца ў ім, патрэбная бібліятэка b.so, якая ўтрымліваецца ў пакеце B. Пакеты Slackware не падтрымліваюць залежнасьцяў, rpm маюць толькі адзін тып залежнасьцяў, а deb — цэлых тры: абавязковыя (depended), безь якіх праграмы ці бібліятэкі пакета ўвогуле ня будуць працаваць, рэкамэндаваныя (recommended), якія дадаюць важную функцыянальнасьць пакету, пажаданыя (suggested), напрыклад, дадатковая дакумэнтацыя. Ёсьць яшчэ чацьвёрты тып залежнасьцяў — канфлікты, напрыклад, калі пакеты A і B няможна усталёўваць адначасова, то яны канфліктуюць.

Наяўнасьць залежнасьцяў з аднаго боку спрашчае распаўсюджваньне праграмаў, бо ў такім выпадку з кожнай праграмай ня трэба распаўсюджваць усе патрэбныя бібліятэкі. З другога, знайсьці libblabla.so, які патрэбны для foobar часам ня самая простая задача. Для вырашэньня гэтай праблемы былі створаныя адмысловыя праграмы-надбудовы над кіраўнікамі пакетаў.

Для deb сыстэм кіраўнік пакетаў мае назву dpkg, яго выкарыстоўваюць apt-tools, debfoster і aptitude. Для rpm кіраўнік пакетаў завецца гэтак жа — rpm, найбольш папулярная надбудова — yum, у некаторых дыстрыбутывах (напр., Alt Linux) выкарыстоўваюцца apt-tools.

Незалежна ад выкарыстанай надбудовы карыстальнік вызвалены ад праблемы ручнога задавальненьня залежнасьцяў.

Пра RPM і таварышаў тут распавядацца ня будзе, бо я даўно не працаваў з rpm-based дыстрыбутывамі. Расповяд будзе пра DEB.

Кіраўнік пакетаў dpkg

dpkg ляжыць у аснове дыстрыбутываў Debian, Knoppix, Mepis, Ubuntu, gNewSense і іншых, вытворных ад Debian.

Гэта праграма якая выконвае некалькі простых дзеяньняў, такіх як усталяваньне, выдаленьне, пабудова і кіраваньне пакетамі.

Пара прыкладаў працы з dpkg:

  1. усталяваць пакет: dpkg —install <поўнае_імя_файла_пакета>, могуць быць пералічаны адразу некалькі пакетаў
  2. выдаліць пакет: dpkg —remove пакет1 пакет2 пакетN

Выкарыстаньне dpkg патрабуе ручной працы з залежнасьцямі пакетаў, якія ўсталёўваюцца, таму „звычайнаму” карыстальніку ён патрэбны вельмі рэдка. Калі ж спатрэбіцца, то падрабязную інфармацыю можна знайсьці ў man 1 dpkg.

Выкарыстаньне apt-tools, aptitude, debfoster

Рэкамэндаваным спосабам працы з пакетамі зьяўляюцца apt-tools — сямейства праграмаў, якія спрашчаюць працу карыстальніку. Сярод гэтых праграмаў найбольш важнымі зьяўляюцца apt-cache для пошуку і адлюстраваньня інфармацыі ад пакеце, apt-get для усталяваньня і выдаленьня, apt-setup для настройкі. Іншыя, хутчэй за ўсё, не спатрэбяцца.

На сёньняшні дзень усё больш папулярным становіцца aptitude, я нават сустракаў зьвесткі, што для поўнага абнаўленьня сыстэмы гэта рэкамэндаваны інструмэнт. Фактычна, гэта надбудова над apt-tools, якая аб'ядноўвае функцыянальнасьць apt-get і apt-cache, дабаўляе новыя функцыі, плюс мае больш прыемны для простага карыстальніка тэрмінальны інтэрфэйс са сьпісамі, мэню і г.д. Безумоўна, яна працуе і з каманднага радка.

debfoster — аналяг apt-get, але ён усталёўвае толькі абавязковыя залежнасьці (apt-get таксама і рэкамэндаваныя). Карысны тым, хто мае мала вольнага месца і хто дакладна ведае, што яму ці ёй патрэбна.

Апрача гэтых праграмаў існуюць і графічныя, напрыклад Synaptic для асяродзьдзя Gnome — аналяг apt-get, але для „непадрыхтаванага” карыстальніка гэтая праграма нашмат прасьцейшая за кошт наяўнасьці мэнюшак, сьпісаў з (не)усталяванымі пакетамі і г.д. Магчыма, для пачаткоўцаў, якія не жадаюць паглыбляцца ў сыстэму, гэта вельмі добры выбар, калі ні адно „але” — для свайго запуску яна патрабуе правоў root, а гэта значыць, што запусьціўшы яе можна нарабіць чаго-небудзь не таго ў сыстэме. Таму лепей карыстацца aptitude, якая дазваляе працаваць ад імя звычайнага карыстальніка, а калі спатрэбіцца усталяваць/выдаліць пакет яна спытае пароль root'а. У складзе KDE існуе аналягічная прылада Adept, а таксама kio_slave apt:/, дзякуючы якому можна працаваць з пакетамі проста ў konquerror.

Разгледзім некалькі базавых задач, якімі павінен валодаць кожны карыстальнік. Прыклады будуць давацца для apt/aptitude, тым жа, хто ня здолее разабрацца з synaptic варта забыць пра кампутары і зьехаць у аграгарадок расьціць бульбу.

Дапусьцім, нам патрэбна усталяваць які-небудзь іншы тэкставы рэдактар, бо ўсталяваны не задавальняе: apt-cache search text editor або aptitude search text editor.

Дапусьцім, мы вырашылі ўсталяваць emacs — далучымся да вялікіх, але спачатку даведаемся падрабязьней, што гэта такое: apt-case show emacs/aptitude show emacs.

Вырашылі ўсталёўваць: apt-get install emacs/aptitude install emacs, калі мала месца, то можна debfoser emacs.

Але Emacs мы „не асілілі”, і вырашылі выдаліць: apt-get remove emacs/aptitude remove emacs/debfoster -emacs.

Трэба паглядзець, што ў нас усталявана ў сыстэме: dpkg -l, хаця можна проста запусьціць aptitude.

Цяпер, напэўна, надыйшоў час даведацца, адкуль вышэй пералічаныя праграмы бяруць зьвесткі аб пакетах.

Існуюць так званыя рэпазітарыі пакетаў, якія утрымліваюць апроч саміх пакетаў розную інфармацыю пра іх (апісаньні пакетаў, залежнасьці і г.д.). Рэпазітарыі бываюць двух тыпаў — deb, якія ўтрымліваюць гатовыя да ўсталяваньня пакеты, гэта тое, што патрэбна 99% карыстальнікаў, і deb-src, якія ўтрымліваюць зыходныя коды. Рэпазітарыі могуць знаходзіцца на CD/DVD, недзе ў файлавай сыстэме кампутара, у сетцы (http або ftp). Сьпіс рэпазітарыяў знаходзіцца ў файле /etc/apt/sources.list, яго можна рэдагаваць уручную, азнаёміўшыся спачатку з sources.list(5), або з дапамогай apt-setup (гэтым прасьцей) ці synaptic (проста далучыць адзін з прадвызначаных рэпазітарыяў, але для нестандартнага трэба ведаць сынтаксыс sources.list).

Разгледзім некалькі прыкладаў. Дапусьцім, мы ўсталявалі Debian з 3-х DVD, і жадаем дадаць гэтыя DVD ў сьпіс рэпазітарыяў. Устаўляем першы дыск ў прывад, запускаем apt-setup, выбіраем cdrom і вуаля. Калі праграма спытае пра наступны дыск, устаўляем наступны. А магчыма, мы скапіявалі нейкі рэпазітарый сабе на кампутар, тады выбіраем filesystem і пішам, дзе ён знаходзіцца (напрыклад, той CD з Ubuntu 5.10, якая ўсталяваная на кампе, на якім я гэта пішу, скапіяваны ў /media/data/ubuntu, гэты шлях і трэба прапісаць.) Калі маеш шмат інтэрнэту, то можаш выбраць http ці ftp (дакладна не распавяду, бо не карыстаўся). Апошні пункт мэню — ручное рэдагаваньне.

Фактычна, apt-setup проста рэдагуе sources.list і запускае apt-get update для абнаўленьня лакальнай базы зьвестак аб пакетах.

Калі ў падключаных рэпазітарыях пакеты час ад часу зьмяняюцца (зьяўляюцца новыя вэрсіі старых пакетаў, ці проста зьяўляюцца новыя пакеты), то трэба пэрыядычна абнаўляць зьвесткі аб іх. Для гэтага трэба выканаць apt-get update або aptitude update. Калі нейкія пакеты трэба абнавіць, то існуюць некалькі спосабаў: можна абнавіць асобныя пакеты камандай apt-get install <пакет> або aptitude install <пакет>. Такі спосаб працуе, калі трэба абнавіць пару-тройку пакетаў, а калі трэба ўсе, то варта выканаць apt-get upgrade ці aptitude apgrade. Часам гэтыя каманды ня могуць абнавіць усе пакеты, нават калі для іх ёсьць новыя версіі. Гэта зьвязана з тым, што зь цягам часу зьяўляюцца пакеты, якіх раней не было ў дыстрыбутыве, некаторыя, наадварот, зьнікаюць. Праз гэта залежнасьці могуць значна зьмяняцца. Тыповая карціна — абнаўленьне старой стабільнай вэрсіі дыстрыбутыва да новай, або зьмяненьне Ubuntu на Debian. У такіх сытуацыях трэба карыстацца apt-get dist-upgrade ці aptitude dist-upgrade.

Выкарыстаньне EncFS для шыфраваньня файлаў і каталёгаў

Для GNU/Linux існуюць некалькі спосабаў шыфраваньня файлаў і каталёгаў.

  1. Выкарыстаньне праграмы TrueCrypt. Для працы TrueCrypt спачатку ствараецца адмысловы файл-кантэйнэр, які будзе выкарыстоўвацца ў якасьці дыску, на якім будуць разьмешчаныя шыфраваныя файлы. TrueCrypt мае вэрсію таксама і пад Windows. Не працаваў зь ёй, таму не магу нічога сказаць. Прысутнічае ў рэпазітарыях Debian.
  2. Выкарыстаньне dm-crypt — дазваляе зашыфраваць асобны разьдзел дыску. FreeBSD мае аналагічную магчымасьць таксама. Працаваў за кампамі, якія выкарыстоўвалі гэтую магчымасьць, але сам не настройваў.
  3. Выкарыстаньне fuse encfs. Самы просты спосаб.

Для працы encfs патрэбны модуль ядра fuse, яго можна загружаць кожны раз уручную, а можна дадаць у файл /etc/modules. Сыстэмай FUSE могуць карыстацца толькі карыстальнікі, унесеныя ў групу fuse — sudo usermod -Gfuse -a -U <лагін>, і перелагінімся.

Выкарыстаньне fuse мае такую вартасьць, што падлучаныя ёю файлавыя сыстэмы бачныя толькі таму, хто іх падлучыў, і нават root ня мае да іх доступу. Гэтым EncFS выгадна адрозьніваецца ад шыфраваньня з дапамогай dm-crypt, бо ў апошнім выпадку шыфраваная файлавая сыстэма бачная ўсёй сыстэме.

Для EncFS патрэбныя два каталёгі, першы, у прыкладах будзем выкарыстоўваць ~/encrypted — для захоўваньня зашыфраваных файлаў, другі, ~/plain, адпаведна — для адлюстроўваньня расшыфраваных файлаў зь першага каталёгу.

Першы крок — ініцыялізацыя каталёгу, які будзе ўтрымліваць шыфраваныя файлы:


globus@fscbook:~$ encfs ~/encrypted ~/plain

Калі каталёгі, зададзеныя ў камандным радку, адсутнічаюць, то encfs прапануе іх стварыць. Пасьля праграма спытае, які тып шыфраваньня выкарыстоўваць, існуе 3 выбары: стандартны, даволі слабы; для параноіка, максымальна строгія настройкі; і экспэртны, дзе можна уласнаручна выбраць тып шыфраваньня. Апошні крок — праграм запытаецца пра пароль, яго нельга забываць, бо безь яго аднавіць даныя будзе немагчыма. Пазьней яго можна зьмяніць з дапамогай праграмы encfsctl.

Цяпер у ~/encrypted будуць знаходзіцца зашыфраваныя файлы, іхныя імёны таксама будуць зашыфраваныя. Адзіны незашыфраваны файл — .encfs5, у якім знаходзіцца сыстэмная інфармацыя encfs, яго нельга губляць, бо безь яго аднаўленьне інфармацыі будзе немагчымым.

Цяпер файлы, якія будуць запісвацца ў ~/encrypted, будуць зашыфраваныя, таксама як і іхныя імёны. Такая інфармацыя, як правы доступу, уладальнік ці час зьмяненьня файла не шыфруюцца.

Створым зашыфраваны файл для праверкі: echo test > plain/file/one. Можна паглядзець, што знаходзіцца ў plain і encrypted (ls plain — пакажа адзін файл file.one, ls encrypted — адзін файл з нечытэльным іменем).

Для адлучэньня файлавай сыстэмы (спыненьня сувязі між зашыфраваным і расшыфраваным каталёгамі) існуе каманда (агульная для ўсіх fuse) fusermount -u ~/plain.

Адлучым і падлучым зь іншым паролем: encfs —anykey ~/encrypted ~/plain. EncFS спытае новы пароль.

Цяпер, калі паглядзець, што знаходзіцца ў plain, то там будзе пуста. Зробім яшчэ адзін файл у plain: echo test two > plain/file.two. Цяпер у plain будзе адзін файл, а ў encrypted — два. Гэты просты прыклад паказвае, як проста арганізаваць разьмяшчэньне файлаў, зашыфраваных з дапамогай розных пароляў, у адным месцы.

Для KDE існуе графічная абалонка для EncFS — K-EncFS.

Камандны радок — гэта моц

Сярод карыстальнікаў Windows і MacOS заспаўсюджаны містычны страх каманднага радка, як рэчы вельмі складай і непадуладнай „простаму” карыстальніку. Але, па-першае камандны радок па структуры значна больш адпавядае маўленьню чалавека, чым графічны інтэрфэйс. Па-другое, справа ў тым, што досьвед іх абмежаваны прымітыўнымі каманднымі інтэрпрэтатарамі іхных сыстэм, якім далёка да bash ці zsh.

Тут будуць прадэманстраваныя некаторыя магчымасьці, якія значна спрашчаюць карыстаньне камандным радком.

Па-першае, гэта агульная для ўсіх абалонак магчымасьць атрымоўваць доступ да вываду праграмы з дапамогай зваротных апострафаў:


globus@fscbook:~$ cd /tmp/
globus@fscbook:/tmp$ pwd
/tmp
globus@fscbook:/tmp$ echo `pwd`
/tmp
globus@fscbook:/tmp$

Па-другое, гэта выкарыстаньне бібліятэкі readline для спрашчэньня працы карыстальніка з камандным радком. Гэтая праграма падтрымлівае рэдагаваньне ў стылі або emacs або vim — двух галоўных тэкставых рэдактараў GNU. Звычайна яна ідзе з наладкай на выкарыстаньне стылю emacs. Readline дае карыстальніку наступныя магчымасьці: гісторыя камандаў (сьпіс раней уведзеных камандаў) з магчымасьцю пошуку; капіяваньне й устаўленьне падрадкоў; выдаленьне словаў перад і за курорам; аўтадапаўненьне тэксту. Поўны сьпіс камандаў і спалучэньняў клявішаў, адпаведны ім, знаходзіцца ў man readline. Набольш часта ўжывальныя спалучэньні ў стылі emacs:

  • ctrl+p або стрэлка ўверх — папярэдні радок гісторыі.
  • ctrl+n або стрэлка ўніз — наступны радок гісторыі.
  • ctrl+e — канец радка.
  • ctrl+a — пачатак радка.
  • ctrl+s — пошук па гісторыі ў прамым напрамку.
  • ctrl+r — пошук па гісторыі ў зваротным напрамку.
  • ctrl+w — выдаліць слова зьлева ад курсора.
  • ctrl+_ — aдмяніць апошнюю апэрацыю.
  • ctrl+u — ачысьціць радок.
  • tab — аўтадапаўненьне, bash з усталяваным bash_completitions або zsh умеюць дапаўняць выборы камандаў: apt-g<TAB>et i<TAB>stall, echo $P<TAB>ATH.

Па-трэцяе мова абалонак, ці то сямейства sh (bash, zsh), ці то csh (падобная на мову „C”) дазваляе выконваць складаныя дзеяньні (цыклі, дзеяньне пры ўмове).

Па-чацьвёртае, утыліты GNU падтрымліваюць шмат выбораў каманднага радка, якія дазваляюць дакладна вызначыць іхныя дзеяньні.

І гэта далёка ня ўсё…

Дадатак. Невялікі сьпіс праграмаў, якія могуць спатрэбіцца.

  • Sylpheed, Claws, Thunderbird, Evolution, KMail, Mutt, elm — паштовыя кліенты
  • Konqueror, Epiphany, Firefox, Seamonkey — www-гартачы
  • OpenOffice.org, KOffice, Abiword+Gnumeric — офісныя пакеты
  • Cinelerra, Lives!, Kdenlive, Kino — відэарэдактары
  • Gimp, Krita — растравыя рэдактары выяваў
  • Inkscape, sK1 — вэктарныя рэдактары выяваў
  • digiKam, GPhoto2 — праца з лічбавымі фотаапаратамі
  • Scribus — праграма для вёрсткі часопісаў і газэт
  • Evince, Xpdf, Kpdf (у KDE < 4), Ocular (у KDE з 4-й вэрсіі) — праграмы прагляду pdf
  • TeXLive — друкарская сыстэма, найлепшая для кніг

*

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License