Отправляет email-рассылки с помощью сервиса Sendsay

програмное определение дистрибутива

Привет всем!

Есть ли стандартный метод определения дистра из программы на С?
Или, может, макрос какой существует.

Ответить   Matvey Thu, 16 Jun 2005 17:50:05 +0300 (#386056)

 

Ответы:

В сообщении от 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;
}

Ответить   Konstantin Korikov Thu, 16 Jun 2005 21:27:36 +0300 (#386167)

 

Здравствуйте, Konstantin.

Вы писали 16 июня 2005 г., 21:27:36:

Хм.. uname -a :)) и там посмотреть.. :)))

Ответить   "Kanogin A.A." Thu, 16 Jun 2005 23:11:26 +0300 (#386197)

 

В сообщении от 1118952686 секунд после начала Эпохи Unix Вы написали:

А вы смотрели? И что там было видно? Версия ядра? Да? Но ядро - это не
дистрибутив!

Ответить   Konstantin Korikov Thu, 16 Jun 2005 23:27:39 +0300 (#386237)

 

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 будет? ;)

Ответить   Matvey Thu, 16 Jun 2005 23:26:05 +0300 (#386256)

 

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 будет? ;)

Ответить   Matvey Thu, 16 Jun 2005 23:26:05 +0300 (#386257)

 

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

Ответить   Matvey Thu, 16 Jun 2005 23:22:52 +0300 (#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

Ответить   Matvey Thu, 16 Jun 2005 23:22:52 +0300 (#386245)

 

Hello Matvey,

Friday, June 17, 2005, 12:22:52 AM, you wrote:


Gentoo - балуется

Ответить   Fri, 17 Jun 2005 11:12:55 +0400 (#386438)

 

В сообщении от 1118995975 секунд после начала Эпохи Unix Вы написали:

А нельзя сказать конкретней? Человек программу пишет, и ему нужна точная
информация. Что у вас выдает

$ grep -H . /etc/*release*

?

Ответить   Konstantin Korikov Fri, 17 Jun 2005 22:53:49 +0300 (#386863)

 

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 (#387007)

 

В сообщении от 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

Ответить   Sun, 19 Jun 2005 02:35:25 +0000 (#387240)

 

Denis Silakov wrote:

grep -H . /etc/*release*
/etc/gentoo-release:Gentoo Base System version 1.6.12

Ответить   Sun, 19 Jun 2005 16:12:04 +0700 (#387412)

 

Пятница 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

Ответить   Xinus Sun, 19 Jun 2005 18:21:17 +0400 (#387418)

 

В сообщении от 1118933405 секунд после начала Эпохи Unix Вы написали:

А зачем собственно это нужно?

Ответить   Konstantin Korikov Thu, 16 Jun 2005 21:42:22 +0300 (#386226)

 

On Thu, 16 Jun 2005 21:42:22 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:

Практика показывает, что разные дистры по-разному располагают файлы
некоторых логов. Чтоб не тыкатся вслепую. Но Ваш вариант с проверкой
существования файлов `/etc/*release*' ничем не лучше, то же тыканье.

Ответить   Matvey Fri, 17 Jun 2005 08:51:54 +0300 (#386407)

 

В Птн, 17/06/2005 в 08:51 +0300, Matvey пишет:

Я вам больше того скажу - в одном и том же дистрибутиве логи могут быть
по-разному организованы. Поэтому:

man -a syslog
man syslog.conf

Ответить   Yura Kalinichenko Fri, 17 Jun 2005 11:01:26 +0300 (#386473)

 

On Fri, 17 Jun 2005 11:01:26 +0300
Yura Kalinichenko <yuk@i*****.com> wrote:

Это все курили, но на кой кому-то пихать логи в нестандартное место?
(Имеется ввиду юзер)

Ответить   Matvey Fri, 17 Jun 2005 15:22:48 +0300 (#386615)

 

В Птн, 17/06/2005 в 15:22 +0300, Matvey пишет:

Вы не написали: вам читать логи или писать в них ? Если писать - то
использовать syslog(). Если читать - парсить /etc/syslog.conf и оттуда
брать место расположения логов.

Что касается пользовательского распределения логов и сообщений между
ними - то поскольку инструмент (syslog.conf) есть - то что куда хочу,
туда и ложу, не считаясь с умолчаниями дистрибутива. Мотивация может
быть разной.

Ответить   Yura Kalinichenko Fri, 17 Jun 2005 18:37:25 +0300 (#386720)

 

i686-suse-linux)

Hello, Yura!

On Fri, 17 Jun 2005 18:37:25 +0300 you wrote:

Не, если читать - то раположение логов придется брать из СВОИХ
конфигурационный файлов, т.к. помимо syskgod существуют metalog и
syslog-ng.

Ответить   "B." Sat, 18 Jun 2005 11:12:59 +0400 (#387022)

 

i686-suse-linux)

Hello, Matvey!

On Fri, 17 Jun 2005 15:22:48 +0300 you wrote:

Чтобы запугать взломщика :)

Ответить   "B." Sat, 18 Jun 2005 11:11:27 +0400 (#387023)

 

В сообщении от 1118987514 секунд после начала Эпохи Unix Вы написали:

Вы так и не ответили... Зачем вам это нужно?

Ответить   Konstantin Korikov Fri, 17 Jun 2005 22:56:45 +0300 (#386861)

 

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. Вот я и хотел, не проверять
все
возможные варианты (а вдруг в другом дистре еще куда логи запихнут), а определить
дистр и брать соответствующий файл.

Ответить   Matvey Sat, 18 Jun 2005 17:16:05 +0300 (#387098)

 

В сообщении от 1119104165 секунд после начала Эпохи Unix Вы написали:

Вот что я скажу: самый правильный способ - использование Autoconf, с
возможностью задать путь к файлу, содержащий журнальные записи pppd, а
по умолчанию - автоопределение пути к этому файлу.

В программе на C определять дистр нерационально. Рационально делать это
в скрипте `configure'. Если конечно вы не делаете закрытую программу...
Но я не думаю что вы изменник Родины.

Ответить   Konstantin Korikov Sat, 18 Jun 2005 20:20:56 +0300 (#387156)

 

On Sat, 18 Jun 2005 20:20:56 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:

Посоветуйте хороший туториал по automake, autoconf please.

Ответить   Matvey Sat, 18 Jun 2005 22:29:55 +0300 (#387186)

 

В сообщении от 1119122995 секунд после начала Эпохи Matvey написал(а):

Во первых,оригинальные руководства (`info automake', `info
autoconf.info'). Во вторых, если с английским тяжеловато, в Сети есть
русские переводы старых руководств: "Autoconf - Создание скриптов для
автоматической конфигурации", "GNU Automake". Переводы сгодятся для
понимания основ. Если хотите изучать серьезно, придется читать
оригиналы на английском.

Ответить   Konstantin Korikov Sun, 28 Aug 2005 19:15:13 +0300 (#425528)

 

On Sun, 28 Aug 2005 19:15:13 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:

Уже давно, но как-то туго... без примерчиков-то комментированных...

Ответить   Matvey Sun, 28 Aug 2005 22:35:07 +0300 (#425595)

 

В сообщении от 1125257707 секунд после начала Эпохи Matvey написал(а):

Мало примеров??? Да софта, использующего Autoconf/Automake полно!

Ответить   Konstantin Korikov Mon, 29 Aug 2005 04:11:48 +0300 (#425965)

 

On Mon, 29 Aug 2005 04:11:48 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:

Я знал, что вы это скажете :) В маленьких все ясно, но ничего интересного, а
в
больших без комментариев пока путаюсь. Средних не нашел.

Ответить   Matvey Mon, 29 Aug 2005 21:33:19 +0300 (#426252)

 

On Mon, 29 Aug 2005 04:11:48 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:

Я знал, что вы это скажете :) В маленьких все ясно, но ничего интересного, а
в
больших без комментариев пока путаюсь. Средних не нашел.

Ответить   Matvey Mon, 29 Aug 2005 21:33:19 +0300 (#426254)

 

В сообщении от 1125257707 секунд после начала Эпохи Matvey написал(а):

Мало примеров??? Да софта, использующего Autoconf/Automake полно!

Ответить   Konstantin Korikov Mon, 29 Aug 2005 04:11:48 +0300 (#425967)

 

On Sun, 2005-08-28 at 19:15 +0300, Konstantin Korikov wrote:

Как я не люблю эту программу! - Куда лучше txt/pdf/html чмтать! - Хотябы
закладки можно делать.

Ответить   Strong Mon, 19 Sep 2005 16:51:23 +0700 (#440047)

 

В сообщении от 1127137883 секунд после начала Эпохи Strong написал(а):

Программу или формат?

http://wehelpbus.sf.net/

P.S. А вот я не люблю Evolution 2.2 за то что он делает с темами.

Ответить   Konstantin Korikov Tue, 20 Sep 2005 05:54:16 +0300 (#440374)

 

В Суб, 18/06/2005 в 20:20 +0300, Konstantin Korikov пишет:

И не забыть дать возможность переопределить этот путь с помощью ключа
при вызове программы.

Ответить   Yura Kalinichenko Sat, 18 Jun 2005 23:11:21 +0300 (#387205)

 

В сообщении от 19 Июнь 2005 01:11 Yura Kalinichenko написал(a):

Лкчше всего предусмотреть конфигурационный фаул, где и будет прописываться
путь к логам, покрайней мере мне это кажеться самым легким и идеальным, т.к.

будут сразу исключены ошибки в автоматическом поиске логов. Так же можно
дпредусмотреть и автоматический поиск места расположения логов на основане
сканирования конфигурационных файлов (см. syslog)

Ответить   Mon, 20 Jun 2005 10:06:32 +0500 (#387663)

 

В сообщении от 1119251192 секунд после начала Эпохи Unix Вы написали:

Верно. Так как конфигурационный файл уже имеется у PPPstat, рационально
использовать его.

Только у меня вот возникло несколько вопросов к автору.
Чем эта программа лучше PPPlag? Почему используется С? Вить намного
проще и эффективнее использовать Perl. Сравните количество строк в
`pppdstat.c' и `ppplag.pl'.

Ответить   Konstantin Korikov Mon, 20 Jun 2005 14:44:43 +0300 (#387943)

 

On Mon, 20 Jun 2005 14:44:43 +0300
Konstantin Korikov <lostcl***@u*****.fm> wrote:

Функциональность последней далека от таковой у PPPsatat уже на
данном этапе, который более чем далек от завершения разработки.

Почему используется С? Вить намного

Все банально: что знал, на том и писал :). С Perl как-то не приходилось сталкиватся.

Ответить   Matvey Mon, 11 Jul 2005 23:14:48 +0300 (#399822)

 

On Thu, Jun 16, 2005 at 05:50:05PM +0300, Matvey wrote:

use $uname ?

Ответить   Mon, 20 Jun 2005 23:51:49 +0900 (#388134)