Gentoo: Защо избрах да съставя свои програми?

Е, като се има предвид страхотното приемане на предишния ми пост, идвам да ви разкажа малко повече за любимата ми дистрибуция, Gentoo Linux. Обещавам, че тази публикация ще съдържа забавна информация, която ще ви помогне да разберете малко за митовете, които възникват пред страховитите компилация на софтуера. Обещавам също, че тази информация ще бъде полезна за следващото ръководство за инсталиране на Gentoo Linux в ~ 20 стъпки (все още не съм ги преброила добре, но мисля, че са още по-малко). Без повече шум, нека започнем:

Какво представлява компилирането?

Това е процесът, който една програма (обикновено наричана компилатор) извършва за преобразуване на код, написан на човешки език (C, C ++ файлове и др.) В код, който може да бъде разбран от машина (двоичен код). Нека разгледаме следния пример:

Собствен дизайн, Кристофър Диас Риверос

Това е нашата малка програма C (ако по-късно искате други уроци за C, ще се радвам да ви покажа и малкото, което съм научил за това време). Сега нека видим как изглежда изходът след компилиране.

Собствен дизайн, Chrirstopher Díaz Riveros

Красиво, нали? Our Това е, което нашата машина разбира, за да може да пише това малко „Здравей“ в нашия терминал всеки път, когато програмата се изпълнява.

Процесът на изграждане:

Тъй като е безполезно да има програма, която да отпечатва просто „Здравейте“ на екрана, тъй като .c и .h файлове са в изобилие в проекти (както във всички програмни езици). За да улесни процеса на компилация, се появиха нови инструменти, най-представителната от всички е командата правя.

Make вземете файл Makefile като отправна точка и компилира необходимото за създаване на крайния изпълним файл, в някои случаи тази стъпка изисква изпълнение на файл, наречен configure за да може да присвои няколко променливи, необходими на компилатора да компилира (да прости излишъка) полезен файл.

Ето защо в много уроци ще намерим следните стъпки:

Собствен. Кристофър Диас Риверос

Магията на ./configure:

За да ви покажем една от най-скритите и забавни тайни на изходния код, ще преминем към изходния код на програма, която всички знаем перфектно, Sudo. Първо обичайните стъпки, но ще спра на . / Configure  за да им покажете нещо специално.

Собствен. Кристофър Диас Риверос

Това ще върне дълъг списък с опции, сред които ще ви покажа тази, която най-много привлича вниманието ми.

Собствен. Кристофър Диас Риверос

--with-insults... както подсказва името, компилира sudo с злоупотреба 😀 е забавна функция, която ви позволява да изпращате обида на потребителя всеки път, когато направи грешка в паролата си. За какво е? Е, не много отдавна 😛, но става ясно. Има хиляди опции, които не се предлагат по подразбиране в повечето дистрибуции.

Както и вие, има много други, които може да са активни в разпространението на двоичен код и които никога няма да използвате, или ще има такива, от които се нуждаете, но те няма да идват с официалния ви разпределен двоичен файл, което предполага, че всяка актуализация ще бъде ръчна.

Вземете забавлението на Gentoo:

Вече видяхме колко опции можем да пропуснем или да влачим с предварително компилирани програми. Но сега нека се съсредоточим малко върху предварително съставения проблем.

Изпълнение:

Замисляли ли сте се защо новите машини изглеждат само малко по-бързо в сравнение с не толкова модерните? Ако процесорът е по-добър, има повече RAM, всичко е по-добре, защо не отидете по-бързо? Отговорът е прост ... компилация.

Да вземем много практичен пример.

Моите програми са компилирани с опцията --march=broadwell... това е така, защото моят процесор е broadwell (intel i7). Недостатъкът на това? никой процесор преди Broadwell не е в състояние да разпознае този двоичен файл. В този момент трябва да го видите много ясно, ако компилирам с -Март  конкретно, всичко по-горе няма да работи ... така че как бинарните пакети поддържат толкова много видове хардуер? Лесно, те се компилират с възможно най-малката опция 🙂 това гарантира, че всички видове хардуер ще могат да го четат (поне за съвместимост).

Истинският проблем ... ако използвате програми, които са компилирани за i3 ... Цялата мощ на вашия i7 (или съответните AMD аналогии) е загубена !! Това не е ли тъжно? 🙁

гъвкавост:

Тъй като разработчиците на Gentoo са много умни, целият този процес на tar, ./configure, make и т.н ... е заменен със силата на пренос. Всички тези любопитни настройки са преименувани на USE флагове, така че ако искате конкретна настройка, не е нужно да въвеждате изходния код, просто задайте променливата. Ето пример за това как да го направите със sudo в portage. Първо ще видим с какви опции разполагаме в текущата ни конфигурация еквери.

Собствен. Кристофър Диас Риверос

Както виждаме, червените опции са активирани, сините не, добре ... всеки може да прочете легендата 🙂

да кажем, че искам да добавя опция ...

Собствен. Кристофър Диас Риверос

Толкова просто като добавяне на ред във файл, наречен Sudo (името е референтно) в рамките на /etc/portage/package.use/. С това следващия път, когато инсталираме sudo, той ще ни каже, че ще бъде прекомпилиран с активирана опция.

Собствен. Кристофър Диас Риверос

Ако дадем, ДА, всичко, което трябва да направите, е да изчакате малко и да променяте 🙂 толкова просто, колкото това.

Заключителни мисли:

Е, вече видяхме колко лесно е да се справим с допълнителна функционалност в Gentoo, която ни позволява да добавяме, премахваме или модифицираме опции в нашите любими програми. Също така видяхме как изпълнението на нашите програми зависи много от променливите, с които го компилираме. Ако имате много нова машина, Gentoo е най-добрият ви вариант. Ако имате много стара машина, Gentoo също е вашият вариант (въпреки че отнема известно време, за да се компилира, крайните програми ще бъдат много по-леки).

Скоро ще напиша ръководството си за инсталиране на Gentoo, както за любителите на SystemD, така и за авантюристите на OpenRC (използвам systemd с GNOME). Между другото, друго от големите предимства на Gentoo е възможността за избирам всичко във вашата система и когато кажа, че всичко е ALL.

Ако сте пропуснали първата ми публикация, ето линка:

Gentoo Linux: Историята на едно пътуване

С уважение,


24 коментара, оставете своя

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   Тържище каза той

    Страхотен! Ще чакам ръководството за инсталиране на Gentoo с Gnome. Може би съм насърчен да мигрирам към Gentoo, дори ако все още имам малко стар компютър (intel core i5 3-то поколение). Наздраве!

    1.    chrisadr каза той

      Скоро Март гано ме спечели, за да споделя повече неща, затова написах друга публикация, която чака да бъде публикувана, но много скоро 🙂 Обещавам

  2.   йорд каза той

    Мисля, че ще започна да виждам много публикации тук за любимата ми дистрибуция на Linux o!!
    От 2005 г. съм в Gentoo, където го използвах, за да създам пощенски сървър в университета, където учих (и където сега работя), и въпреки че съм претърпял спорадични атаки за дистрибуция, винаги се връщам с моя скъп Гертрудис ( първо с Gnome2, след това Xfce и сега openbox) и докато коментирате в предишната си публикация, с нарастващи умения и знания за фина настройка fine
    Ще чакам следващите ви приноси, поздрави и благодарности, че ми направихте ден = D!

    1.    chrisadr каза той

      Е, следващият излиза 🙂 все едно провеждате забавен разговор за любимата ми тема, следващият ще дойде скоро и следващият и следващият 😛 Поздрави и много благодаря за коментара 🙂

  3.   Победител каза той

    Скачах между дистрибуции от години и мислех да съставя моите ... това ръководство ще бъде стъпката, която ми липсваше ... докато ще се забавлявам с наръчника. Благодаря за всичко……

    1.    chrisadr каза той

      Е, наръчникът е рай за информация, просто има всичко 🙂 Мога да донеса само малкото си зрънце пясък 🙂, но много скоро излиза следващият пост и скоро ще излезе този (вече виждам, че е съвсем очаквано) ~ 20 стъпки ръководство за инсталиране. Наздраве,

      1.    Победител каза той

        Какъв джентълмен не ми дадохте време да мине от самото начало, който говори за различните микропроцесори и ръководството е тук !!!!! Този мой край обърка ПЪРВО! !!! Милиони благодарности !!!!

  4.   соимичен каза той

    Knoppix, Mandrake, Ubuntu и Debian ... И винаги мисля за Gentoo ...

    В очакване на тези 20 стъпки!

    1.    chrisadr каза той

      Хахаха добре, все едно е мечта, нали? Казвам, че е време да го направя 😉 поздрави

  5.   Готино като лед каза той

    Здравейте ChrisADR, първо искам да ви кажа, че не съм спал добре от първата ви статия за Gentoo и е свързана с тази нова статия, моите мечти се основават на компилиране на Gentoo на моя стар Aspire One Netbook. В съня ми системата ми казва, че нетбукът ми е много стар, така че не разпознава хардуера.
    От друга страна, след като видях Gentoo и той привлече вниманието ми, те споменаха мощността, която предлагаше на компютъра (компютъра). От този ден си казах, че един ден ще го инсталирам, изминаха повече от 10 години и не съм го направил, може би защото ми казаха, че е много трудно да го инсталирам, по това време бях почти анти-Linux така че те увеличиха оплакването ми към него. Любопитството обаче продължи. Веднъж се опитах да инсталирам BSD на моя нетбук без никакъв успех и ми беше казано, че Gentoo е Linux, много подобен на BSD.
    Какво препоръчвате да инсталирате Gentoo на моя стар Aspire One със стар Atom компилатор?

    и благодаря много за вашите статии, продължавам да чакам още

    1.    ChrisADR каза той

      Е, аз ви препоръчвам ... НАПРАВЕТЕ! И накрая, ако в крайна сметка се провали (в което много се съмнявам, тъй като ядрото е направено да поддържа всички видове хардуер), ще имате изключително обогатяващо преживяване в света на Linux 🙂 ще компилирате ядрото си, ще монтирате вашата файлова система от нулата, Ще сте направили конфигурации, които малцина правят в живота си 🙂 това ще ви даде нова перспектива за света хахаха Ако не можете да видите моя Unix & StackExchange профил 🙂 отговорите ми обхващат широката гама от Linux, тъй като познаването на Gentoo ми позволи да науча много неща за целия Linux 😉 Оставям ви връзката към моя профил тук

      https://unix.stackexchange.com/users/246185/christopher-d%C3%ADaz-riveros?tab=profile

      Не се страхувайте и в крайна сметка, ако всичко върви добре (със сигурност ще струва малко), това ще бъде постижение за вашата книга 😉 Поздрави

  6.   Естебан каза той

    Също така мисля да мигрирам към Gentoo, но имам някои съмнения. На първо място, колко актуални са пакетите за Arch? От друга страна, лаптопът ми има вградена батерия и всички знаем какво непрекъснато прекомерно нагряване прави за батериите. И тъй като бих отделил много време за компилиране ...

    1.    ChrisADR каза той

      Е, истината не би могла да ви каже със сигурност кой от тях е по-подвижен ase Това, което мога да ви кажа със сигурност е, че Gentoo има два клона: „стабилен“ и „нестабилен“, въпреки че „нестабилният“ трябва да има мнозинството брой пакети на ръба на технологиите, имам много известни разработчици, които го използват ежедневно без усложнения. Много от тях са създадени да работят с git хранилищата на проекта, така че няма нищо по-актуално 🙂 Аз лично използвам „стабилния“ клон, но това е особено заради работата ми в общността като координатор по сигурността и като член на тестовия екип (Arch Tester). Ако не трябваше да имате „стабилна“ версия за тази работа, със сигурност щяхте да бъдете на ръба на технологиите с „нестабилна“.
      Не знам дали отговаря на въпроса ви, но поне се надявам да привлече вниманието ви достатъчно, за да го опитате 😛 Поздрави

  7.   Безплатен Кихот каза той

    Истината е, че ме караш да искам 😉
    Много се интересувам от това, което посочихте за уроците на C, както и за Python и бих се радвал да имате скрити скъпоценни камъни там за несръчни баби и дядовци.
    За да ви дам няколко стика и с цялото ми уважение, тъй като смятам, че съдържанието е по-важно от континента, но как съм малко придирчив към езика, ще ви кажа малко нещо.
    Казвате в началото:
    „Компилацията е процес, който компилаторът извършва, за да използва код, написан на човешки език, и да го преобразува в машинно четим код.“
    Според мен не е правилно да се включва това, което е дефинирано в дефиницията, тъй като за да дефинирате компилацията, включвате термина компилатор, така че нещо подобно би било малко по-правилно:
    Компилацията е процес, чрез който програмата получава от текстов файл, написан на език (C, C ++) файл, изпълним от компютъра.

    1.    ChrisADR каза той

      Вашият принос ми се струва правилен, аз го настанявам, за да се опитам да го запазя в неговата същност и да добавя тази информация 😉 благодаря.

  8.   Двойна D каза той

    Използвам ubuntu 16.04, мислите ли, че трябва да премина към gentoo? Какви биха били предимствата на gentoo спрямо ubuntu?

    1.    ChrisADR каза той

      Е, наистина не знам 😛 зависи от това какво ще правите с вашето оборудване, или хардуера, който имате, или дали имате време (и желание) да научите как да използвате Gentoo. Бих ти казал, че ако имаш време и искаш, можеш НАПРЕД! и ще видите, че ще научите много по пътя 😉
      поздрави

  9.   фернан каза той

    Здравейте:
    Ако истината е, че gentoo има много за четене, например правите emerge -pv пакет и получавате употреби в червено, синьо и зелено, плюс възможни заключвания, които изискват промени в употребите, демаскиране на пакети, промени в слотовете са много различни от това, което показва се от другите мениджъри на пакети.
    Предполагам, че gentoo ще трябва да се актуализира всеки ден, ако го оставите за 1 месец, ще е време да разберете как да го поправите.
    Поздрави.

    1.    ChrisADR каза той

      Да, хе-хе, първоначално прилива малко, но с течение на времето се запознаваш и дори стигаш дотам да си помислиш защо в никой друг мениджър на пакети нямаш толкова голяма гъвкавост 🙂 по отношение на времето, познавам хора, които имат същия сървър, работещ от години без да се актуализира и остава напълно твърд като първия ден, а за тези, които са били там години (а не месеци), има специален раздел от wiki, описващ възможните решения на проблема:

      https://wiki.gentoo.org/wiki/Upgrading_Gentoo/es#Actualizar_sistemas_antiguos

      И по отношение на актуализациите, може би виждането на проблеми със сигурността директно ме накара да взема нова перспектива, но актуализирането всеки ден е нещо, което независимо от разпределението трябва да се прави, обикновено не отнема повече от две команди във всички дистрибуции , а в gentoo освен генерирането на добър навик, избягвайте дълги чакания, когато всички пакети се натрупват.
      поздрави

  10.   фернан каза той

    Здравейте:
    В двоични дистрибуции използвам manjaro и преди да използвам ubuntu, лесно се актуализира, проверявам всеки ден дали има актуализации, това е първото нещо, което гледам, но в manjaro актуализирането не ми е създало съответни проблеми, обикновено казвам на pacman, че да към всичко и най-много да се налага да актуализирате подписите или дори да изтриете файл. Но от това, което прочетох в gentoo, понякога е трудно да се разбере терминологията какво казва portage.
    Поздрави.

    1.    ChrisADR каза той

      Кажете „да“ на всичко никога не е добро, фернан 🙂 ако сте достигнали GNU / Linux, трябва да го знаете и разберете. Е, няма какво да се види, това е просто обичай, с течение на времето осъзнавате, че червеното е това, което имате, синьото, което не, зелено това, което ще добавите и това е :). Никога не трябва да променя нищо, за да актуализирам, ако съм конфигурирал правилно да стартирам, от време на време добавям или премахвам USE флагове, но често срещаното е да дам Y на yes след като прочета списъка, за да знам какво се прави
      PS: pacman -Syy е същото като emerge -sync
      Pacman -Suy е същото като emerge -uD @world (-av е само да бъде многословен и ще ви попита преди да продължите, което е ненужно, ако познавате екипа си и знаете какво правите, но го поставям, за да избегна проблеми по-късно 😉) Не виждам толкова трудно да се запомни 🙂

      поздрави

  11.   Маурисио Лопес каза той

    Отлични вашите статии, както предишната, така и тази. Имам съмнение и това е колко скорост печелите между Arch или Manjaro и Gentoo. Независимо от персонализирането и обучението само по себе си, струва си да се инсталира.
    Друг въпрос, който имам, е как да се справя с драйверите, това е нещо, което ми създаде проблеми в Arch.

    1.    ChrisADR каза той

      Здравей, Маурисио,
      Е, никога не съм спирал да сравнявам между двете и в действителност това е много двусмислен въпрос, в зависимост от софтуера, който използвате, и оборудването, което имате, това може да варира от малко или нищо до много. Поне за днес и двете системи работят доста добре за мен в това, което трябва да ги използвам. (Имам основен Gentoo и Arch, който използвам от време на време) Обикновено го използвам при виртуализация и редактиране на програми (но обикновено чрез терминал, така че не използва много памет в IDE. Chrome ме поддържа по напълно спокоен начин повече от 40 раздела (Опитвал съм това от време на време, въпреки че като цяло имам максимум 5 отворени за дълги периоди.
      Ако някой ден се осмелите да опитате, кажете ми как мина 🙂

      Що се отнася до драйверите, тъй като контролирате ядрото по желание, обикновено повечето "общи" драйвери са инсталируеми или поне управляеми. В случай на високоспециализиран хардуер (особено малко съвместимия с Linux като цяло), предполагам, че това е същата работа като в много други дистрибуции, нямам много специализиран хардуер, така че не мога да го коментирам много 🙂

      Поздрави и късмет

  12.   Jeanpier subero каза той

    какви са вашите социални мрежи ChirsADR?