Разрешаване на проблеми, които възникват при изпълнение на команди

Отстраняване на неизправности команди ./configure, make и make install

  • Това обикновено означава, че версията -dev или -devel на извикания пакет не е инсталирана на вашата машина. Използвайте мениджъра на пакети на вашата дистрибуция (или друг начин за намиране и инсталиране на пакет), за да намерите пакета и да го инсталирате, ако е възможно, във версията -dev или -devel. Ако версията -dev или -devel вече е инсталирана или не съществува, вижте вече инсталираната версия. Тя достатъчно нова ли е? Ако е по-ниска от , опитайте да надстроите пакета. Ако не е възможно да надстроите пакета, можете да опитате да компилирате по-стара версия на програмата. По-старите версии обикновено използват по-стари версии на библиотеките и програмите, необходими за компилация.
  • (конфигурира:) (грешка:) не може да намери заглавка (файл) .hИЛИ(конфигурира:) (грешка:) (заглавка) (файл) .h липсва!ИЛИ
  • Конфигурационният скрипт не може да намери .h файла, необходим за компилация. Тази грешка е подобна на предишната, при която трябва да инсталирате -dev или -devel версията на пакета. Въпреки това, обикновено не е ясно какъв пакет да се инсталира, за да се реши този проблем, тъй като може да е много общо име. Опитайте да потърсите в интернет за .h, за да разберете в кой пакет е този файл, и след това инсталирайте този пакет (и неговата версия -dev или -devel, ако е възможно), като използвате мениджъра на пакети на вашата дистрибуция.
  • (configure:) (грешка:) не е намерен приемлив cc в
  • Използвате компилатора gcc за инсталиране и променливата на средата CC липсва или не е зададена. Уверете се, че пакетът gcc е инсталиран чрез мениджъра на пакети на вашата дистрибуция. Ако този пакет не е инсталиран, инсталирайте го. Ако е инсталиран,опитайте следната команда: [rechosen@localhost
  • ]$ export CC="/usr/bin/cc" Ако това помага, можете да добавите тази команда към /etc/profile (който е файлът, който съдържа командите, които се изпълняват, когато потребителят влезе), така че да не се налага да я въвеждате отново.

  • (configure:) (грешка:) C++ препроцесорът "/lib/cpp" не успява да изпълни проверката за надеждност
  • Вашият g++ пакет липсва или е повреден. Използвайте мениджъра на пакети на вашата дистрибуция (или друг начин за намиране и инсталиране на пакет), за да намерите g++ пакета и да го инсталирате. Имайте предвид, че някои дистрибуции не наричат ​​този пакет g++. Fedora, например, използва името gcc-c++ в своето yum хранилище. Ако не можете да намерите g++, опитайте да потърсите c++, cpp или gcc.
  • (configure:) (грешка:) C++ препроцесорът "CC (-E)" не успява да провери правилността
  • Тази грешка е причинена от странен "бъг" в някои версии на libtool, който кара конфигурационния скрипт да проверява всички компилатори, поддържани от libtool. Най-лесното решение е да инсталирате g++.
  • Грешки при изпълнение на команда makeТъй като грешките при изпълнение на команда make обикновено са много специфични, ще дам списък с основните неща, които могат да помогнат:
    • Ако компилирате с gcc 4 (използвайте gcc -dumpversion, за да разберете), опитайте да използвате по-стари версии на компилатора. Първо се уверете, че имате инсталирана по-стара версия. Това обикновено може да се разбере чрез следната команда: [rechosen@localhost

    ]$ ls /usr/bin/gcc* Ако върне нещо подобно: /usr/bin/gcc /usr/bin/gcc32 Можете да използвате командите gcc32, за да компилирате програмата в по-стари версии на gcc. Ако командата не върне подобенред, използвайте мениджъра на пакети на вашата дистрибуция, за да намерите и инсталирате по-стари версии на gcc (обикновено наричани compat-gcc или gcc-). След инсталирането трябва да имате на разположение алтернативна версия на gcc. Може да се намери с помощта на командата ls. Можете да принудите командите ./configure, make и make install да използват по-стара версия на gcc, както следва: [rechosen@localhost

    ]$ CC="/usr/bin/gcc32" ./configure [rechosen@localhost

    ]$ CC="/usr/bin/gcc32" направи [rechosen@localhost

    ]$ CC="/usr/bin/gcc32" make install Разбира се, пътят /usr/bin/gcc32 трябва да бъде променен на този, където имате алтернативна версия на gcc.

  • Понякога грешките могат да бъдат причинени от обикновен "бъг" в програмата. Опитайте да изтеглите най-новата версия на програмата (като използвате cvs, svn или друго хранилище, или като изтеглите най-новата моментна снимка) и я компилирайте, тази грешка може вече да е коригирана.
  • Грешка при изпълнение на командата make може също да бъде причинена от грешна версия на необходима библиотека или програма. Този проблем е често срещан за много нови или много стари пакети. Проверете зависимостите на пакета (те обикновено са написани на уебсайта на програмата) и сравнете номерата на версиите с версиите, инсталирани на вашия компютър (те обикновено могат да се видят с помощта на мениджъра на пакети на вашата дистрибуция). Ако номерът на версията на вашата система е по-голям от написаното на сайта, може да се опитвате да компилирате много стар пакет. Ако наистина трябва да го компилирате, опитайте да инсталирате по-стари версии на зависими пакети.Какъвто и да е случаят, обикновено е по-добре да потърсите друг начин за инсталиране на този пакет или да потърсите алтернатива. Ако номерът на версията на системата е по-малък от този на сайта, можете да опитате да актуализирате съответния пакет. Можете да опитате да актуализирате необходимиябиблиотека или компилирайте по-стара версия на програмата.Също така проверете дали вече има този пакет, компилиран за вашата дистрибуция. Инсталирането му обикновено е по-лесно от коригирането на грешки при компилиране.
  • Друго нещо, което трябва да опитате, е да потърсите конкретна грешка в интернет. Ако не намерите нищо полезно, опитайте да премахнете неща като номера на реда (може да се промени с нова версия), номера на версията (може да бъде заменен със звездичка, ако е в името на програмата) и специални знаци като кавички, тъй като те засягат търсачката. Обикновено можете да намерите много информация в пощенския списък. Понякога излиза корекция, която поправя грешки в изходния код. Може да се приложи по следния начин: [rechosen@localhost
  • Не забравяйте: за да приложите корекция, текущата директория трябва да е изходната директория.Грешки при стартиране на make installТези грешки обикновено са лесни за разбиране, но все пак ще пиша за тях. Има две най-чести причини, поради които командата make install връща грешка:

      Нямате root потребителски права.Опитайте да извършите инсталиране с помощта на командата sudo или станете root с помощта на командата su. Командата sudo се използва по следния начин: [rechosen@localhost

    ]$ sudo make install Ще поиска парола; обикновено използвате собствената си парола или паролата на root потребителя. Можете да използвате командата su, за да станете root: [rechosen@localhost

    ]$ su Тази команда също ще поиска парола, но в този случай търсим паролата на root потребителя. След като сте root, просто стартирайте make install.Пакетът, който току-що компилирахте, няма команда за инсталиране.В този случай виетрябва ръчно да копирате компилирания двоичен файл в директорията bin. Ако изпълните командата ls в директорията с изходния код, изпълнимият файл трябва да е светлозелен на цвят. Трябва да се копира в /usr/bin (или /usr/local/bin, ако предпочитате) със следната команда: [rechosen@localhost

    ]$ cp /usr/bin Съгласен съм, че това не винаги е най-лесният начин, но понякога разработчиците не отделят време да създадат команда за инсталиране. Не трябва да им се сърдим за това: все пак, на първо място, те правят полезна програма за нас.Други проблемиЕто списък с някои други възможни проблеми и решения:

      Всичко върви добре, но когато напиша името на програмата, която току-що инсталирах, bash казва, че не може да я намери.Това обикновено е, защото make install инсталира всичко в /usr/local или в /opt/

    . Вижте резултата от командата make install: къде са копирани файловете? Опитайте да добавите тази директория към вашата променлива PATH (следващият пример е за пакет, инсталиран в /usr/local): [rechosen@localhost

    ]$ export PATH="$PATH:/usr/local/bin" Трябва да замените /usr/local/bin с директорията, където са инсталирани двоичните файлове на вашия пакет. Ако помага, добавете този ред към /etc/profile, за да не се налага да го въвеждате всеки път. Между другото, можете да контролирате къде ще бъде инсталиран пакетът, като посочите следната опция, когато стартирате конфигурационния скрипт: [rechosen@localhost

    ]$ ./configure --prefix=/usr Променете /usr към директорията, където искате да инсталирате пакета. Не забравяйте, че задавате само префикса; двоичните файлове ще бъдат инсталирани в собствена поддиректория, библиотеките в собствената си, заглавните файлове в собствената си и т.н. Например, когато използвате посочения префикс, двоичните файлове ще бъдатинсталиран в /usr/bin.Искам да инсталирам много стара версия на пакета, но не мога да намеря изходния код онлайн.Все още имате малък шанс. Опитайте се да намерите rpm файла на пакета на желаната от вас версия и изтеглете подходящия src rpm файл. Можете да го разопаковате по следния начин: [rechosen@localhost