Freebsd handbook

4.6. Деякі питання і відповіді

  • В. Я думав тут обговорюються модеми.
О. Ви повинно бути думаєте про послідовних портах на зворотному боці вашого комп'ютера. Ми використовуємо слово `порт 'тут для позначення результату` перенесення' програми з однієї версії Unix на іншу. (Використання одного і того ж слова для позначення абсолютно різних речей, на жаль, стало поганою звичкою всіх в навколокомп'ютерні світі.
  • В. Я думав, що передбачається використовувати пакети для інсталяції додаткових програм?

    О. Абсолютно вірно, це зазвичай найшвидший і простий спосіб зробити це.
  • В. Так навіщо тоді турбуватися про портах?

    О. Патч - це маленький (зазвичай) файл, в якому описано як змінити одну версію файлу до іншого. Він містить текст який, насправді, складається з речей на зразок `` видалити рядок 23 '', `` додати ці два рядки після рядка 468 '' або `` змінити рядок 197 на цю ''. Він також відомий як `` diff '', оскільки так називається програма, яка їх генерує.
  • В. Що таке tarball?

    О. Це файл з закінчується на .tar.gz (можливо .tar.Z. Або навіть .tgz)

    По суті, це архів структури каталогів (.tar), а потім стислий (.gz). Спочатку ця технологія використовувалася для архівів на стрічках (T ape AR chive - звідси і назва `tar '), але зараз це один з найбільш широко застосовуваних методів поширення вихідних текстів програм по Інтернет.

    Ви можете подивитися які файли знаходяться всередині, або навіть розпакувати їх самостійно, використовуючи стандартну утиліту UNIX - tar. Вона поставляється разом з базовою системою FreeBSD. наприклад:

  • В. Що таке контрольна сума (checksum)?

    О. Це число, являеющееся результатом підсумовування всіх байт файлу який ви перевіряєте. Якщо значення якого-небудь байта зміниться, контрольна сума зміниться теж, так що просте порівняння з еталоном дозволить визначити що файл був змінений. (На практиці використовується більш складні алгоритми, ніж просте підсумовування, для того щоб помічати такі `` складні '' зміни файлів, як перестановка байт.

  • В. Я діяв за вашим інструкціям компіляції портів з CDROM і все працювало відмінно до тих пір поки я не спробував встановити порт kermit: - Чому він не існує? У мене бракований диск?

    О. Умови ліцензії для kermit не дозволяють нам покласти його tarball на CDROM, так що вам доведеться завантажити його самостійно. Причина, через яку ви отримали ці повідомлення про помилки, - це відсутність підключення до Інтернет в той момент. Як тільки ви скачаєте потрібний tarball звідки-небудь, ви можете повторити спробу зробити порт. (Завантажуйте його з найближчого до вас місця, так ви збережете і ваш час і пропускні спроможності Інтернет)

  • В. Я зробив це, але коли я спробував покласти його в / usr / ports / distfiles я отримав повідомлення про відсутність прав доступу.

  • В. Механізм портів працює тільки якщо ви все кладете в / usr / ports. Мій системний адміністратор сказав, що я повинен зберігати всі тільки під / u / people / guests / wurzburger. і у мене немає змоги зробити порт.

    О. Ви можете використовувати змінні PORTSDIR і PREFIX для вказівки необхідності використовувати інші директорії. наприклад,

    Ця команда компілює порт в / u / people / guests / wurzburger / ports і встановлює в / usr / local ?.

    а наступна команда відкомпілює порт в / usr / ports і встановить в / u / people / guests / wurzburger / local.

    об'єднує обидва ефекту (повна команда занадто довга і не влазить цілком на сторінку, але я впевнений, що ви вже зрозуміли ідею)

    Якщо ви не хочете набирати такі рядки кожен раз при інсталяції порту, то вставте ці змінні в своє оточення (environment).

  • В. У мене немає FreeBSD CDROM, але я хочу скопіювати всі потрібні tarball до себе заздалегідь, щоб мені не доводилося довго чекати кожен раз коли я встановлюю port. Чи існує простий спосіб завантажити їх все відразу?

    О. Для того щоб завантажити всі tarball для колекції портів, запустіть:

    Для того щоб завантажити всі tarball для окремої директорії, запустіть:

    Ну я думаю ви вже здогадалися як завантажити tarball для одного порту.

    О так. якщо ви наприклад думаєте, що ftp.FreeBSD.ORG набагато ближче, ніж вузли зі списку MASTER_SITES, то використовуйте наступний приклад.
  • В. Я хотів би дізнатися які файли потрібні для компіляції, до того як make буде їх скачувати.

    О. 'make fetch-list' покаже вам список файлів необхідних цього порту.

  • В. Чи є спосіб запобігти компіляцію? Я хочу зробити деякі виправлення в исходниках перед тим як компілювати, але мене втомлює ідея вартувати момент коли натиснути control-C.

    О. Використання 'make extract' зупинить процес після скачування і розпакування вихідних текстів.
  • В. Я намагаюся зробити мій власний порт і хочу мати можливість зупиняти процес до компіляції, щоб подивитися як працюють мої патчі. Чи є що-небудь на зразок 'make extract', але для патчів?

    В. Так, 'make patch' - це те що ви шукаєте. І до речі, спасибі за те що ви це робите!

  • В. Я чув, що деякі опції компілятара можуть призвести до помилок. Це правда? Як мені бути впевненим, що я відкомпільоване порт з правильними опціями?

    В. Так, в gcc версії 2.6.3 (ця версія поставлялася разом з FreeBSD 2.1.0 і 2.1.5), опція -O2 могла приводити до коду з помилками, якщо не використовувати опцію -fno-strength-reduce. (Більшість пороти не використовує -O2). У вас повинна бути можливість вказувати прапори, використовуючи що-небудь на зразок:

    або за допомогою редагування /etc/make.conf, але це здається не завжди спрацьовує. найбільш надійний спосіб - використовувати 'make configure', після чого зайти в каталог з вихідними текстами і перевірити Makefile, але це може бути важко якщо дерево вихідних текстів має досить велику кількість підкаталогів, в кожному з яких є свій Makefile.

  • В. Занадто багато різних портів - важко знайти той, який потрібен мені. Чи є НДЕ-небудь список всіх портів?

    О. Дивіться INDEX в каталозі / usr / ports.
  • В. Я собіралсяустановіть 'foo' порт, але система раптово зупинилася і почала компілювати порт 'bar'. Що сталося?

    О. Порт 'foo' вимагає що-небудь, що поставляється разом з 'bar' - рапрімер, якщо 'foo' використовує графіку, то 'bar' може мати бібліотеку з корисними графічними процедурами. Або 'bar' може бути інструментом, який потрібен для компіляції порту 'foo'.

  • В. Я встановив величезну програму і, мені здається, це просто марно зайняте місце на диску. Я хотів би видалити її, але не знаю де лежать входять в цей пакет файли. Є ідеї?

    О. Немає проблем, просто запустіть

  • В. Зачекайте секундочку, ви повинні знати номер версію для того щоб використовувати таку команду. Ви серйозно очікуєте, що я її пам'ятаю.

    В. Ні, звичайно, ви можете дізнатися його в такий спосіб

    Результатом буде щось на зразок: -

  • В. До питання про місце на диску, каталог портів здається займає купу місця. Чи безпечно видалити деякі файли в ньому?

    В. Так, якщо ви вже встановили програму і не збираєтеся встановлювати заново її знову, то немає ніякої необхідності зберігати вихідні. Найкращий спосіб позбутися від них - це:

    В результаті у всіх підкаталогах / usr / ports будуть видалені всі файли крім зазначених в каркас.
  • В. я зробив це, але в каталозі distfiles все ще збереглися ці tarball або як ви їх там називаєте. Можу я їх видалити?

    В. Так, якщо ви впевнені, що вони вам більше не потрібні.

  • В. Мені подобається мати купу програм. Чи є можливість встановити всі порти відразу?

    О. Просто зробіть

  • В. Ok, я зробив це, але, хоч я і думав, що це займе багато часу, так що я пішов спати і залишив комп'ютер працювати. З ранку я виявив, що зроблене тільки три з половиною порту. Що небудь не так?

    В. Ні, проблема в тому, що деякі порти починають задавати питання (наприклад - `` Ви використовуєте папір формату A4 або Letter? '') І їм потрібен хтось хто введе відповідь.

  • В. Але мені зовсім не хочеться провести цілий день втупившись в монітор. Є ідеї краще?

    О. Ok, зробіть це перед тим як йти в ліжко / на роботу / місцевий парк: -

    В результаті будуть встановлені всі порти які НЕ вимагають участі людини в установці. Потім, коли ви повернетеся, запустіть

    для того щоб закінчити роботу.
  • В. На роботі ми використовуємо frobble. який є у вашій колекції портів, але ми сильно модифікували нашу версію для досягнення потрібних нам ефектів. Чи існує спосіб зробити наші власні пакети, щоб ми могли легко поширювати їх по наших комп'ютерів?

    О. Ніяких проблем, якщо ви знаєте як зробити патчі відповідні вашим змін:

  • В. Ця система досить хитра. Я спрагу розібратися як це працює. в чому секрет?

    Схожі статті