програмное определение дистрибутива
Привет всем!
Есть ли стандартный метод определения дистра из программы на С?
Или, может, макрос какой существует.
За последние 60 дней ни разу не выходила
Сайт листа:
http://www.linuxrsp.ru
Открыт:
25-07-2003
Пре-модерация: Нет
Адрес для писем в лист: comp.soft.linux.discuss-list@subscribe.ru
Адрес
модератора: comp.soft.linux.discuss-owner@subscribe.ru
Привет всем!
Есть ли стандартный метод определения дистра из программы на С?
Или, может, макрос какой существует.
Здравствуйте, Konstantin.
Вы писали 16 июня 2005 г., 21:27:36:
Хм.. uname -a :)) и там посмотреть.. :)))
В сообщении от 1118952686 секунд после начала Эпохи Unix Вы написали:
А вы смотрели? И что там было видно? Версия ядра? Да? Но ядро - это не
дистрибутив!
On Thu, 16 Jun 2005 23:11:26 +0300
"Kanogin A.A." <kanog***@s*****.ru> wrote:
Linux localhost.localdomain 2.4.10-alt1-up #1 Mon Oct 8 14:22:30 MSD 2001 i686
unknown
Всегда ли по названию ядра можно однозначно определить дистр? А если ядро перебрано,
так что, дистр my_kernel будет? ;)
On Thu, 16 Jun 2005 23:11:26 +0300
"Kanogin A.A." <kanog***@s*****.ru> wrote:
Linux localhost.localdomain 2.4.10-alt1-up #1 Mon Oct 8 14:22:30 MSD 2001 i686
unknown
Всегда ли по названию ядра можно однозначно определить дистр? А если ядро перебрано,
так что, дистр my_kernel будет? ;)
On Thu, 16 Jun 2005 21:27:36 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:
А Slackware, Debian и прочие Gentoo тоже такими файликами балуются? И TurboLinux?
--
Матвийчук Олег aka Matvey, LRU#349092
http://mathway.narod.ru
I am the "ILOVEGNU" signature virus. Just copy me to your signature.
This email was infected under the terms of the GNU General Public License.
Птичка Божия не знает не забот и не хлопот
Лишь летает и воняет, хриплым голосом поет DDT - 05 - Церковь
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 19349; Возраст листа: 693; Участников: 1385
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/386244
On Thu, 16 Jun 2005 21:27:36 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:
А Slackware, Debian и прочие Gentoo тоже такими файликами балуются? И TurboLinux?
--
Матвийчук Олег aka Matvey, LRU#349092
http://mathway.narod.ru
I am the "ILOVEGNU" signature virus. Just copy me to your signature.
This email was infected under the terms of the GNU General Public License.
Птичка Божия не знает не забот и не хлопот
Лишь летает и воняет, хриплым голосом поет DDT - 05 - Церковь
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 19350; Возраст листа: 693; Участников: 1385
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/386245
В сообщении от 1118995975 секунд после начала Эпохи Unix Вы написали:
А нельзя сказать конкретней? Человек программу пишет, и ему нужна точная
информация. Что у вас выдает
$ grep -H . /etc/*release*
?
i686-pc-linux-gnu)
Hello, Konstantin Korikov <lostcl***@u*****.fm>!
On Fri, 17 Jun 2005 22:53:49 +0300 you wrote:
Да я бы рад, но до gentoo доберусь не раньше вторника.
Но совершено точно по такой команде выдается строчка, где присутствуют
слова "gentoo" и "release".
В сообщении от Sat, 18.Jun.2005, 10:54:21 +0400, Denis Silakov писал:
Хм, у меня выдается
/etc/gentoo-release:Gentoo Base System version 1.4.16
хотя система после "emege -u world" уже далека от исходной.
Помоему пользы никакой.
С уважением
ZVital
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 19399; Возраст листа: 695; Участников: 1398
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/387240
Denis Silakov wrote:
grep -H . /etc/*release*
/etc/gentoo-release:Gentoo Base System version 1.6.12
Пятница 17 Июнь 2005 23:53, Konstantin Korikov пишет:
О, захотелось тоже побаловаться и разбавить:
$ grep -H . /etc/*release*
/etc/altlinux-release:ALT Linux Sisyphus (20050611)
/etc/mandrake-release:ALT Linux Sisyphus (20050611)
/etc/redhat-release:ALT Linux Sisyphus (20050611)
/etc/sisyphus-release:ALT Linux Sisyphus (20050611)
$ rpm -qf /etc/sisyphus-release
altlinux-release-Sisyphus-alt20050611
В сообщении от 1118933405 секунд после начала Эпохи Unix Вы написали:
А зачем собственно это нужно?
On Thu, 16 Jun 2005 21:42:22 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:
Практика показывает, что разные дистры по-разному располагают файлы
некоторых логов. Чтоб не тыкатся вслепую. Но Ваш вариант с проверкой
существования файлов `/etc/*release*' ничем не лучше, то же тыканье.
В Птн, 17/06/2005 в 08:51 +0300, Matvey пишет:
Я вам больше того скажу - в одном и том же дистрибутиве логи могут быть
по-разному организованы. Поэтому:
man -a syslog
man syslog.conf
On Fri, 17 Jun 2005 11:01:26 +0300
Yura Kalinichenko <yuk@i*****.com> wrote:
Это все курили, но на кой кому-то пихать логи в нестандартное место?
(Имеется ввиду юзер)
В Птн, 17/06/2005 в 15:22 +0300, Matvey пишет:
Вы не написали: вам читать логи или писать в них ? Если писать - то
использовать syslog(). Если читать - парсить /etc/syslog.conf и оттуда
брать место расположения логов.
Что касается пользовательского распределения логов и сообщений между
ними - то поскольку инструмент (syslog.conf) есть - то что куда хочу,
туда и ложу, не считаясь с умолчаниями дистрибутива. Мотивация может
быть разной.
i686-suse-linux)
Hello, Yura!
On Fri, 17 Jun 2005 18:37:25 +0300 you wrote:
Не, если читать - то раположение логов придется брать из СВОИХ
конфигурационный файлов, т.к. помимо syskgod существуют metalog и
syslog-ng.
i686-suse-linux)
Hello, Matvey!
On Fri, 17 Jun 2005 15:22:48 +0300 you wrote:
Чтобы запугать взломщика :)
В сообщении от 1118987514 секунд после начала Эпохи Unix Вы написали:
Вы так и не ответили... Зачем вам это нужно?
On Fri, 17 Jun 2005 22:56:45 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:
См. pppstat.sf.net. Надо выдрать из системных логов логи pppd. У меня в MDK
эти логи складываются в /var/log/daemons/info и /var/log/syslog/messages. На
последний
есть симлинк /var/log/messages. Так как во второй файл пишутся практически все
логи системы,
а в первый - только от демонов, то логично разбирать тот, которвй поменьше. Но
оказалось, что в Слаке есть только /var/log/messages. Вот я и хотел, не проверять
все
возможные варианты (а вдруг в другом дистре еще куда логи запихнут), а определить
дистр и брать соответствующий файл.
В сообщении от 1119104165 секунд после начала Эпохи Unix Вы написали:
Вот что я скажу: самый правильный способ - использование Autoconf, с
возможностью задать путь к файлу, содержащий журнальные записи pppd, а
по умолчанию - автоопределение пути к этому файлу.
В программе на C определять дистр нерационально. Рационально делать это
в скрипте `configure'. Если конечно вы не делаете закрытую программу...
Но я не думаю что вы изменник Родины.
On Sat, 18 Jun 2005 20:20:56 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:
Посоветуйте хороший туториал по automake, autoconf please.
В сообщении от 1119122995 секунд после начала Эпохи Matvey написал(а):
Во первых,оригинальные руководства (`info automake', `info
autoconf.info'). Во вторых, если с английским тяжеловато, в Сети есть
русские переводы старых руководств: "Autoconf - Создание скриптов для
автоматической конфигурации", "GNU Automake". Переводы сгодятся для
понимания основ. Если хотите изучать серьезно, придется читать
оригиналы на английском.
On Sun, 28 Aug 2005 19:15:13 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:
Уже давно, но как-то туго... без примерчиков-то комментированных...
В сообщении от 1125257707 секунд после начала Эпохи Matvey написал(а):
Мало примеров??? Да софта, использующего Autoconf/Automake полно!
On Mon, 29 Aug 2005 04:11:48 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:
Я знал, что вы это скажете :) В маленьких все ясно, но ничего интересного, а
в
больших без комментариев пока путаюсь. Средних не нашел.
On Mon, 29 Aug 2005 04:11:48 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:
Я знал, что вы это скажете :) В маленьких все ясно, но ничего интересного, а
в
больших без комментариев пока путаюсь. Средних не нашел.
В сообщении от 1125257707 секунд после начала Эпохи Matvey написал(а):
Мало примеров??? Да софта, использующего Autoconf/Automake полно!
On Sun, 2005-08-28 at 19:15 +0300, Konstantin Korikov wrote:
Как я не люблю эту программу! - Куда лучше txt/pdf/html чмтать! - Хотябы
закладки можно делать.
В сообщении от 1127137883 секунд после начала Эпохи Strong написал(а):
Программу или формат?
http://wehelpbus.sf.net/
P.S. А вот я не люблю Evolution 2.2 за то что он делает с темами.
В Суб, 18/06/2005 в 20:20 +0300, Konstantin Korikov пишет:
И не забыть дать возможность переопределить этот путь с помощью ключа
при вызове программы.
В сообщении от 19 Июнь 2005 01:11 Yura Kalinichenko написал(a):
Лкчше всего предусмотреть конфигурационный фаул, где и будет прописываться
путь к логам, покрайней мере мне это кажеться самым легким и идеальным, т.к.
будут сразу исключены ошибки в автоматическом поиске логов. Так же можно
дпредусмотреть и автоматический поиск места расположения логов на основане
сканирования конфигурационных файлов (см. syslog)
В сообщении от 1119251192 секунд после начала Эпохи Unix Вы написали:
Верно. Так как конфигурационный файл уже имеется у PPPstat, рационально
использовать его.
Только у меня вот возникло несколько вопросов к автору.
Чем эта программа лучше PPPlag? Почему используется С? Вить намного
проще и эффективнее использовать Perl. Сравните количество строк в
`pppdstat.c' и `ppplag.pl'.
On Mon, 20 Jun 2005 14:44:43 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:
Функциональность последней далека от таковой у PPPsatat уже на
данном этапе, который более чем далек от завершения разработки.
Почему используется С? Вить намного
Все банально: что знал, на том и писал :). С Perl как-то не приходилось сталкиватся.
В сообщении от 1118933405 секунд после начала Эпохи Unix Вы написали:
Думаю нет.
Нужно проверять файлы `/etc/*release*'. Например у меня так:
$ grep -H . /etc/*release*
/etc/fedora-release:Fedora Core release 3 (Heidelberg)
/etc/lsb-release:LSB_VERSION="1.3"
/etc/redhat-release:Fedora Core release 3 (Heidelberg)
В C можно использовать glob(3). Или еще проще - stat(2):
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
enum Distro {
DISTRO_REDHAT,
DISTRO_FEDORA,
DISTRO_ASPLINUX,
DISTRO_MANDRAKE,
DISTRO_ALTLINUX,
DISTRO_UNKNOWN,
};
enum Distro detect_distro(void) {
enum Distro distro = DISTRO_UNKNOWN;
struct stat stat_buf;
if (!stat("/etc/asplinux-release", &stat_buf)) {
distro = DISTRO_ASPLINUX;
} else if (!stat("/etc/altlinux-release", &stat_buf)) {
distro = DISTRO_ALTLINUX;
} else if (!stat("/etc/fedora-release", &stat_buf)) {
distro = DISTRO_FEDORA;
} else if (!stat("/etc/redhat-release", &stat_buf)) {
distro = DISTRO_REDHAT;
} else if (!stat("/etc/mandrake-release", &stat_buf)) {
distro = DISTRO_MANDRAKE;
} else if (!stat("/etc/mandriva-release", &stat_buf)) {
distro = DISTRO_MANDRAKE;
}
return distro;
}
char *distro_str(enum Distro distro) {
switch (distro) {
case DISTRO_REDHAT:
return "RedHat Linux";
case DISTRO_FEDORA:
return "Fedora Core";
case DISTRO_ASPLINUX:
return "ASPLinux";
case DISTRO_MANDRAKE:
return "Mandriva (Mandrake) Linux";
case DISTRO_ALTLINUX:
return "ALT Linux";
}
return "Unknown";
}
int main(int argc, char **argv) {
printf("Your distro: %s\n", distro_str(detect_distro()));
return 0;
}