Страница 1 из 1

Как изменить исходники некоторых утилит в Linux?

Добавлено: 25 янв 2010, 12:56
neuch
То есть мне нечто не нравится в cp и я решил её поправить. Для нечала решил увидеть её исходник и просто компильнуть.

(Почему cp.c добываетсяв купе со ВСЕМ ПАКЕТОМ coreutils (apt-get sources coreutils) и почему его по умолчанию нет на моём компе- это отдельный вопрос. Может, я что не так понял, но скромный cp.c мне иначе добыть не удалось)

Итак, в недрах скачанного coreutils нашёл-таки cp.c
Пишу

Код: Выделить всё

gcc cp.c
...После всего этого умные ребята назвали меня лохом и дали кучу ссылок на английском. Типа этих
http://en.wikipedia.org/wiki/Configure_%28computing%29
Чтобы я лишний раз убедился в том, что с подобными пакетами можно работать ЕДИНСТВЕННЫМ ПРАВИЛЬНЫМ СПОСОБОМ ./configure && make && make install.
...Ну, собсно всё. То есть у меня есть исходник и вроде как и всё. Теоретически, я его конечно, могу поправить, но после этогоо мне надо будет выполнить три последних указанных команды ДЛЯ ВСЕГО ПАКЕТА и только после этого тестировать. Несерьёзно.

...Я, грешник, надеялся увидеть папку cp c файлом cp.c примерно такого содержания:
(самый примитив, программа для копирования файлов)

Код: Выделить всё

#include <stdio.h>

int main (int argc, char* argv []) {
 
 int c;

 //ОТкрываем файл-источник
 FILE * fp_istocnik;
 if (!(fp_istocnik= fopen (argv [1], "r"))) {
  printf ("файл-источник не открыт\n");
  return 0;
 }

 //Открываем файл-адресат
 FILE * fp_adresat;
 if (!(fp_adresat= fopen (argv [2], "w"))) {
  printf ("файл-адресат не открыт\n");
  return 0;
 }

 //Копируем файлы
 do {
  c= fgetc (fp_istocnik);
  if (c!= EOF)
   fputc (c, fp_adresat);
 }
 while (c!= EOF);


 //Конец работы
 fclose (fp_istocnik);
 fclose (fp_adresat);

 return 0;
}

С которым я бы спокойно работал, как и привык. И компилил бы gcc cp.c а не иначе. Возможно ли это? Спасибо.

Re: Как изменить исходники некоторых утилит в Linux?

Добавлено: 25 янв 2010, 13:34
Llama
neuch, конечно! Никто не мешает вам написать свой собственный cp с преферансом и гимназистками и использовать его вместо системного. Существующая реализация cp из coreutils таки сделана в расчете на использования GNU autotools и вам придется с этим мирится :)

Re: Как изменить исходники некоторых утилит в Linux?

Добавлено: 25 янв 2010, 16:05
neuch
Абсолютно неинформтаивное сообщение.
Я спрашивал- как изменить исходник?
Можно, не можно, трудно, не трудно. Почувствовал же только укол- типа я выскочка.

...Если никак нельзя- вся открытость линуксоидного ПО- понты, расчитанные, действительно, хе, на гимназисток.

Re: Как изменить исходники некоторых утилит в Linux?

Добавлено: 25 янв 2010, 18:08
mend0za
neuch писал(а):Абсолютно неинформтаивное сообщение.
Я спрашивал- как изменить исходник?
Откройте своим любимым текстовым редактором, внесите изменения, сохраните и скомпилируйте.
neuch писал(а): ...Если никак нельзя- вся открытость линуксоидного ПО- понты, расчитанные, действительно, хе, на гимназисток.
Да пожалуй. Надо в GPLv4 добавить специальный параграф, запрещающий авторам программ использовать любые сборочные системы и все библиотеки, кроме GNU libc.

Напишу вечером в FSF. Это нельзя так оставлять. Бардак.

Re: Как изменить исходники некоторых утилит в Linux?

Добавлено: 25 янв 2010, 18:16
Lynxer
Можно попробовать

Код: Выделить всё

make path/to/executable/output/cp
Может сработать, но негарантировано.

А вообще-то дурацкая претензия. Из разряда "Загрузил .dsp/.dsw/.vcproj/.sln в студию, как сделать чтобы любой файл по выбору компилился в ехе-шник, а не в объектник, по правому клику мышкой? Никак? Ну, где эта ваша user-friendliness..."

Re: Как изменить исходники некоторых утилит в Linux?

Добавлено: 25 янв 2010, 18:22
neuch
Нет, подождите, подождите.
Объясните, пожалуйста, как по-другому компилить исходники?

Код: Выделить всё

gcc cp.c
отпадает, я правильно понял?

ПОкажите другой способ, пусть он более трудоёмкий, но пусть он будет.
Так ведь нет его!
Можно ./configure && make && make install., так я повторюсь, это я ВЕСЬ ПАКЕТ буду обрабатывать!
Это правильно, по-вашему?

...И хоть убей не пойму, почему простая рабочая команда gcc cp.c неприемлема. Я не гор золотых прошу, и никаких таких претензий особых не высказываю. А прошу того, что здесь написано:
http://rsync.altlinux.ru/pub/people/kir ... spect.html
"Свободный доступ к исходным текстам ПО, следовательно, эти исходные тексты можно исправлять, если найдена ошибка"

Ссылка, может не очень убедительная, но не будет еже вы спорить с последним утверждением?
Если никто и никогда не правит исходники, на хрена тогда нужны эти открытые коды- всем вопрос? ЕСли нельзя изменить и скомпильнуть? Зато все говорят- понлый контроль над системой.. Ну, и где он полный?

Re: Как изменить исходники некоторых утилит в Linux?

Добавлено: 25 янв 2010, 18:36
Lynxer
neuch писал(а): Можно ./configure && make && make install., так я повторюсь, это я ВЕСЬ ПАКЕТ буду обрабатывать!
Это правильно, по-вашему?
./configure можно 1 раз.
make install вообще не нужно.
make, конечно, "обработает весь пакет", но перекомпилирует только то, что было изменено.
neuch писал(а): ...И хоть убей не пойму, почему простая рабочая команда gcc cp.c неприемлема.
Потому что обычно make передаёт gcc несколько больше параметров, чем "cp.c". Передавай и ты их, если уж так настаиваешь.
neuch писал(а): никаких таких претензий особых не высказываю.
Думаю, многие здесь не согласятся.
neuch писал(а): А прошу того, что здесь написано:
http://rsync.altlinux.ru/pub/people/kir ... spect.html
"Свободный доступ к исходным текстам ПО, следовательно, эти исходные тексты можно исправлять, если найдена ошибка"
Ссылка, может не очень убедительная, но не будет еже вы спорить с последним утверждением?
Это что было? Попытка пошутить, потроллить или права покачать? Осторожней с этим, тут быстро по всем этим 3 направлениям обламывают.
neuch писал(а): ПОкажите другой способ, пусть он более трудоёмкий, но пусть он будет.
Подсмотри, как make вызывает gcc для компиляции cp. Потом можешь вручную эту команду сам вызывать. Или в скрипт-однострочник записать.

Re: Как изменить исходники некоторых утилит в Linux?

Добавлено: 25 янв 2010, 19:35
neuch
Lynxer писал(а):Подсмотри, как make вызывает gcc для компиляции cp. Потом можешь вручную эту команду сам вызывать. Или в скрипт-однострочник записать.
А ну вот, совсем другое дело. Из-за этого одного стоило огород городить
Теперь мне по крайней мере понятно, почему может не срабатывает gcc cp.c Просто у меня мало опыта, кодил я в винде, там хотя и стоит gcc, но дело это автоматизировано (DEV C++ 4.9.9.2) и я не сталкивался с ручной компиляцией, а в линукс только так и писал: утилита имя файла, совсем упустил как-то, что компиляция посложнее может быть! Вот что значит отсутствие опыта

Ну да, то есть щас списать скрипт и пихать туда эту всю свадьбу. Всё вперёд. Ещё раз: главное, я понял, что компиляция моет быть много сложнее чем gcc cp.c Вроде просто, но бы Вы мне этого не сказали, мне никто бы этого не сказал.

Ну с остальным (./confige и makeinstall) буду разбираться
...Признаться не понял, почему я тролль. Может, у вас что не так открылось? Цитата, подтверждающие мои слова о возможнности изменения кода на вполне безобидном ЗАлинуксоидном сайте. То есть он не против линукс, а за.

Спасибо, буду пытаться.

Re: Как изменить исходники некоторых утилит в Linux?

Добавлено: 25 янв 2010, 23:23
X-Stranger
neuch, начинаю придираться к словам. Вы спрашиваете: "как изменить исходники"? Как вам уже написал многоуважаемый товарищ mend0za, берем любой текстовый редактор по выбору, открываем в нем вами с трудом добытый исходник, редактируем до опупения, сохраняем. Исходник изменился? Попробуйте сказать, что нет.

Теперь относительно "Свободный доступ к исходным текстам ПО, следовательно, эти исходные тексты можно исправлять, если найдена ошибка". Вы исходники смогли скачать? Платить за них не пришлось? Значит, доступ свободный. Исправить вышеуказанным способом наверняка тоже получится, вполне себе свободно.

Вам надо из исходника бинарь получить? Ну так будьте добры использовать то, чем пользовались авторы. Не хочется? Так вы вольны использовать gcc самостоятельно. Ему (gcc) чего-то не хватает? Ну так и вы наверное компилируете не просто C-файл из трех с половиной строк. Что ж поделаешь, что авторы coreutils оказались настолько неумехами, что утилита cp у них получилась больше вашей. Может, они туда решили "пасхальных яиц" напихать. Ну так это их право, как авторов, в конце концов писать что захотят, на чем захотят, и какими угодно им самим утилитами. У вас же свобода выбора: не нравится этот cp - найдите другой, или напишите свой. Не вижу проблемы.

Ответ на вопрос получен?

Re: Как изменить исходники некоторых утилит в Linux?

Добавлено: 26 янв 2010, 10:06
d_fdv
neuch писал(а):Нет, подождите, подождите.
Объясните, пожалуйста, как по-другому компилить исходники?

Код: Выделить всё

gcc cp.c
отпадает, я правильно понял?

ПОкажите другой способ, пусть он более трудоёмкий, но пусть он будет.
Так ведь нет его!
Можно ./configure && make && make install., так я повторюсь, это я ВЕСЬ ПАКЕТ буду обрабатывать!
Это правильно, по-вашему?

...И хоть убей не пойму, почему простая рабочая команда gcc cp.c неприемлема. Я не гор золотых прошу, и никаких таких претензий особых не высказываю. А прошу того, что здесь написано:
http://rsync.altlinux.ru/pub/people/kir ... spect.html
"Свободный доступ к исходным текстам ПО, следовательно, эти исходные тексты можно исправлять, если найдена ошибка"

Ссылка, может не очень убедительная, но не будет еже вы спорить с последним утверждением?
Если никто и никогда не правит исходники, на хрена тогда нужны эти открытые коды- всем вопрос? ЕСли нельзя изменить и скомпильнуть? Зато все говорят- понлый контроль над системой.. Ну, и где он полный?
Раз все говорят, может стоит задуматься?

Re: Как изменить исходники некоторых утилит в Linux?

Добавлено: 26 янв 2010, 18:38
neuch
X-Stranger писал(а):Ответ на вопрос получен?
Ответ на вопрос был получен вчера. Так что поздно вы затеяли реагировать.
...А что я, собсно, делал не так, как вы сказали? Ну да, я не последовал чуши многоуважаемого мендозы и вашей тоже- не правил до опупения исходники- ах-ах, как остроумно.

...А то, что я не знал, как ДЕЙСТВИТЕЛЬНО правильно и грамотно это сделать- так мне остаётся только руками развести. Я чисто и честно говорю: я не знал и сам бы не догадался- глаз был замылен на автоматической компиляции. Вчера мне сказал Lynxer, теперь я знаю. Всё? Всё. И вчера было всё, по-моему, я чётко это дал понять. Поблагодарил. Что ещё? Или что, тут принято так- после каждого полученного ответа выволочки устраивать?
X-Stranger писал(а):neuch, начинаю придираться к словам.
я сам ничего не придумал?

Ну, дело ваше.

Re: Как изменить исходники некоторых утилит в Linux?

Добавлено: 28 янв 2010, 16:58
X-Stranger
neuch, молодец :)

Тему закрываю и оставляю. Будет в качестве примера, как не надо задавать вопросы и реагировать на ответы.