LINUX.ORG.RU

как определить дистр из командной строки, если это Федора

 ,


0

1

Я уже давно заметил, что файл /etc/issue переехал в /etc/fedora-release , но сейчас опять с этим столкнулся

Все нормальные люди используют /etc/issue для определения дистрибутива. Например,

https://github.com/tpoechtrager/osxcross/blob/4287300a5c96397a2ee9ab3942e66578a1982031/tools/get_dependencies.sh#L72

Нафига было городить /etc/fedora-release ? А главное, смысл теряется - было общее место, где посмотреть, стало - никому неизвестное fedore-release. Но да, стало больше похоже на «линукс» - непонятно что, непонятно где, разброд и шатание

Если что, /etc/issue в федоре выглядит так

$ cat /etc/issue
\S
Kernel \r on an \m (\l)

UPD закрываю как решенную:

Лучше использовать /etc/os-release


uname --all
Linux bvn13-book 5.9.8-100.fc32.x86_64 #1 SMP Tue Nov 10 22:39:06 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
5.9.8-100.fc32.x86_64
fc

Fedora Core

bvn13 ★★★★★ ()
Ответ на: комментарий от bvn13

давай будем честны, это поле - имя ядра. Если пересобрать пакет с ядром, то суффикс fc32 можно заменить.

zendrz ()
Ответ на: комментарий от anonymous

Пойдет,

$ cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ cat /etc/os-release 
NAME=Fedora
VERSION="29 (Twenty Nine)"
ID=fedora
VERSION_ID=29
VERSION_CODENAME=""
PLATFORM_ID="platform:f29"
PRETTY_NAME="Fedora 29 (Twenty Nine)"
ANSI_COLOR="0;34"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:29"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f29/system-administrators-guide/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=29
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=29
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"

Кастаните, если у кого-то в дистре этого нет

zendrz ()

тут пишут, что можно так

cat /etc/*-release
Fedora release 32 (Thirty Two)
NAME=Fedora
VERSION="32 (Workstation Edition)"
ID=fedora
VERSION_ID=32
VERSION_CODENAME=""
PLATFORM_ID="platform:f32"
PRETTY_NAME="Fedora 32 (Workstation Edition)"
ANSI_COLOR="0;34"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:32"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=32
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=32
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
VARIANT="Workstation Edition"
VARIANT_ID=workstation
Fedora release 32 (Thirty Two)
Fedora release 32 (Thirty Two)

а тут подтверждают это

bvn13 ★★★★★ ()
Последнее исправление: bvn13 (всего исправлений: 1)
Ответ на: комментарий от zendrz

Написано то же, что и у тебя в ОП. Но есть /etc/centos-release.

CentOS Linux release 8.3.2011

anonymous ()
Ответ на: комментарий от gremlin_the_red

А чо с разморозкой, если в коде встречается использование /etc/issue И это бы работало, если бы не поломали. Какой в этом смысл, блин. Причем я помню, уверен, что работало это меньше 10 лет назад, т.е. окончательно поломали относительно недавно.

zendrz ()
Ответ на: комментарий от zendrz

Логика инвалидов. Вот нам надо ввести какой-нибудь «DOCUMENTATION_URL=https://docs.fedoraproject.org/en-US/fedora/f29/system-administrators-guide» (типа в os-release он сейчас встречается) . Но в /etc/issue для этого нет места. Давайте сломаем /etc/issue!

zendrz ()
Последнее исправление: zendrz (всего исправлений: 2)
Ответ на: комментарий от zendrz

если в коде встречается использование /etc/issue

Значит автор кода — идиот. У /etc/issue с рождения свободный человекочитаемый формат, он не предназначен для чтения машиной. Откуда, думаешь, и появились все эти /etc/debian_version, /etc/gentoo-release и т.д.?

gremlin_the_red ★★★★★ ()

Все нормальные люди используют /etc/issue для определения дистрибутива

Нормальные люди читают маны:

 https://man7.org/linux/man-pages/man5/issue.5.html

/etc/issue is a text file which contains a message or system identification to be printed before the login prompt.

После чего задаются вопросом при чём тут определение дистрибутива.

alpha ★★★★★ ()
Ответ на: комментарий от zendrz

Давайте сломаем /etc/issue!

Ещё нормальные люди признают когда делали что-то неправильно, даже если они делали это последние N лет, потому что не удосужились ранее почитать доки, а копипастили какие-то куски неверного кода из года в год не думая.

И не пытаются и в этом обвинить Поттеринга

alpha ★★★★★ ()
Ответ на: комментарий от alpha

Значит, на костер надо тех, кто в статьях, книгах и на форумах писал про /etc/issue ! Так же как и тех, про пишет про tar. Но это уже оффтоп.

Хотя, совместимость ломать - это такое себе инженерное решение. Ошибку признать - это другое немного, и такой аргумент хорошо канает для код-ревью. Посмотрел бы я как микрософт вносит изменение в какой-нибудь тухлый regedit.exe, потому что признали ошибку. Они это не делают не потому, что не признают. А потому что - не надо ломать. Ладно, не важно. /etc/os_release выглядит норм

zendrz ()
Последнее исправление: zendrz (всего исправлений: 1)
Ответ на: комментарий от zendrz

в статьях, книгах и на форумах

Попробуй документацию вместо этого. Помогает в разработке!

anonymous ()
Ответ на: комментарий от zendrz

Значит, на костер надо тех, кто в статьях, книгах и на форумах писал про /etc/issue !

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

ergo ★★ ()
Ответ на: комментарий от zendrz

Ладно, не важно. /etc/os_release выглядит норм

надо же, какой упертый. вам про lsb_release уже сказали. это, к слову сказать, LSB (Linux Standard Base).

как пример…

[nix-shell:~]$ cat /ets/os_release
cat: /ets/os_release: No such file or directory

[nix-shell:~]$ lsb_release -a
No LSB modules are available.
Distributor ID: NixOS
Description:    NixOS 21.03 (Okapi)
Release:        21.03pre260232.733e537a8ad
Codename:       okapi

Нет, хочу костёр

однажды, кто-то захочет вас на него отправить за то, что найдет ваше решение с /etc/os_release

ergo ★★ ()
Ответ на: комментарий от ergo

нет подождите, lsb_release нет в искоробочной федоре и debian. А /etc/os_release - есть. Где справедливость?

однажды, кто-то захочет вас на него отправить за то, что найдет ваше решение с /etc/os_release

отлично, значит уже и /etc/os_release не подходит. Кроме «lsb_release_command_not_found» еще есть предложения?

zendrz ()
Последнее исправление: zendrz (всего исправлений: 4)
Ответ на: комментарий от zendrz

LSB для того и придумали, чтобы причесать это стадо разношерстных дистрибутивов до минимально однообразного состояния в базовых вещах. раньше дистрибутивы определяли гаданиями по имени файла в /etc - redhat_release, debian_verision, os_release… кто во что горазд был. кто-то до сих пор держит эти файлы, чтобы дать возможность работать легаси, коего еще достаточно. все новое обычно опирается на стандарты.

ergo ★★ ()
Ответ на: комментарий от ergo

все новое обычно опирается на стандарты.

вот это прям очень спорно. Но я понимаю, и спорить не буду, ибо фраза поспешная, и оффтоп

LSB для того и придумали,

Именно. К сожалению, на него благополучно все забили, и ничего не работает. Хотя конечно жаль. Сам был в свое время удивлен, что дебиан топил против LSB. Одна из причин, почему мне Деб принципиально не нравился никогда

zendrz ()
Последнее исправление: zendrz (всего исправлений: 1)
Ответ на: комментарий от zendrz

К сожалению, на него благополучно все забили, и ничего не работает.

Ваша самоуверенность и невежество просто «великолепны» :)

ergo ★★ ()
Ответ на: комментарий от ergo

В дебиан пакет lsb_release надо ставить руками, в базовую систему он не входит.

А /etc/issue использовать - это, конечно, песня =)

#1 SMP Tue Jul 12 11:00:06 UTC 2016 armv7l
               _
 ___  ___ __ _| | _____      ____ _ _   _
/ __|/ __/ _` | |/ _ \ \ /\ / / _` | | | |
\__ \ (_| (_| | |  __/\ V  V / (_| | |_| |
|___/\___\__,_|_|\___| \_/\_/ \__,_|\__, |
                                    |___/

Welcome on Debian Jessie (GNU/Linux 4.5.7-std-4 armv7l )

System information as of: Thu Jan 14 13:06:14 MSK 2021

System load:	0.00		Int IP Address:	 
Memory usage:	0.0%		Pub IP Address:	163.172.173.204
Usage on /:	65%		Swap usage:	0.0%
Local Users:	0		Processes:	154
Image build:	2016-04-06	System uptime:	180 days
Disk nbd0:	l_ssd 50G

Documentation:	https://scaleway.com/docs
Community:	https://community.scaleway.com
Image source:	https://github.com/scaleway/image-debian

А можно было бы туда запихать ASCII penis.

Binkledum ()
Ответ на: комментарий от ergo

Ок, на него забили как минимум три последних поколения федор и дебианов. Уверен, что дистров, где lsb_release есть из коробки - мало. Надо лишь выяснить про убунту, и тогда можно смело говорить «все» учетом 2% погрешности. Продолжайте давать неработающие советы, это же так мудро. А можете прочитать название топика, к котором упоминается федора

zendrz ()
Ответ на: комментарий от Binkledum

А /etc/issue использовать - это, конечно, песня =)

:) ладно вам, в ТС по ссылке пишут grep -i , работает же

(не не, лично я теперь постараюсь /etc/issue забыть (а это мышечная, пальцевая память), ибо плохая практика)

zendrz ()
Ответ на: комментарий от ergo

Всё это хорошо и правильно, но ещё до LSB был придуман POSIX, а в нём команда uname -s она же просто uname без параметров.

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/uname.html

Соответствует полю sysname в структуре utsname: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_utsname.h.html

Но в Linux решили идти своим нестандартным путём. Вначале, ещё до всех этих redhat_release, debian_verision, os_release…, о которых ты рассказал выше они добавили нестандартный параметр uname -o, видимо для того, чтобы успокоить Столлмана, который носился со своей идеей фикс: «не Linux, а GNU/Linux» как с писаной торбой.

Operating System            uname -s                
Mac OS X                    Darwin                  
Cygwin 32-bit (Win-XP)      CYGWIN_NT-5.1           
Cygwin 32-bit (Win-7 32-bit)CYGWIN_NT-6.1           
Cygwin 32-bit (Win-7 64-bit)CYGWIN_NT-6.1-WOW64     
Cygwin 64-bit (Win-7 64-bit)CYGWIN_NT-6.1           
MinGW (Windows 7 32-bit)    MINGW32_NT-6.1          
MinGW (Windows 10 64-bit)   MINGW64_NT-10.0         
Interix (Services for UNIX) Interix                 
MSYS                        MSYS_NT-6.1             
MSYS2                       MSYS_NT-10.0-17763      
Windows Subsystem for Linux Linux                   
Android                     Linux                   
coreutils                   Linux                   
CentOS                      Linux                   
Fedora                      Linux                   
Gentoo                      Linux                   
Red Hat Linux               Linux                   
Linux Mint                  Linux                   
openSUSE                    Linux                   
Ubuntu                      Linux                   
Unity Linux                 Linux                   
Manjaro Linux               Linux                   
OpenWRT r40420              Linux                   
Debian (Linux)              Linux                   
Debian (GNU Hurd)           GNU                     
Debian (kFreeBSD)           GNU/kFreeBSD            
FreeBSD                     FreeBSD                 
NetBSD                      NetBSD                  
OpenBSD                     OpenBSD                 
DragonFlyBSD                DragonFly               
Haiku                       Haiku                   
NonStop                     NONSTOP_KERNEL          
QNX                         QNX                     
ReliantUNIX                 ReliantUNIX-Y           
SINIX                       SINIX-Y                 
Tru64                       OSF1                    
Ultrix                      ULTRIX                  
IRIX 32 bits                IRIX                    
IRIX 64 bits                IRIX64                  
MINIX                       Minix                   
Solaris                     SunOS                   
UWIN (64-bit Windows 7)     UWIN-W7                 
SYS$UNIX:SH on OpenVMS      IS/WB                   
z/OS USS                    OS/390                  
Cray                        sn5176                  
(SCO) OpenServer            SCO_SV                  
(SCO) System V              SCO_SV                  
(SCO) UnixWare              UnixWare                
IBM AIX                     AIX                     
IBM i with QSH              OS400                   
HP-UX                       HP-UX
hummer ()
Последнее исправление: hummer (всего исправлений: 1)

Как страшно жить:

$ ls -l /etc/*relea*
lrwxrwxrwx. 1 root root 25 Dec 15 17:38 /etc/fedora-release -> ../usr/lib/fedora-release
lrwxrwxrwx. 1 root root 21 Dec 15 17:38 /etc/os-release -> ../usr/lib/os-release
lrwxrwxrwx. 1 root root 14 Dec 15 17:38 /etc/redhat-release -> fedora-release
lrwxrwxrwx. 1 root root 14 Dec 15 17:38 /etc/system-release -> fedora-release
lrwxrwxrwx. 1 root root 29 Dec 15 17:38 /etc/system-release-cpe -> ../usr/lib/system-release-cpe

hummer ()
Ответ на: комментарий от ergo

cat: /ets/os_release: No such file or directory

«минус», «подчеркивание». Есть где запутаться. /etc/os-release на самом деле.

Distributor ID: NixOS

как бы то ни было, если lsb_release и вообще LSB-подпорки в NixOS по дефолту идут - респект ему.

zendrz ()
Ответ на: комментарий от zendrz

Я бы дёргал lsb_release, не получилось - смотрел бы по очереди на наличие файлов debian-release, redhat-release и тд, кароче написал бы лапшу из if/else if.

Binkledum ()
Ответ на: комментарий от Binkledum

Скорее сначала os-release, потом lsb-release, потом по желанию гадание по кофейной гуще типа uname, наличию пакетного менеджера в системе или вот того же /etc/issues

alpha ★★★★★ ()
Ответ на: комментарий от alpha
$ apt source lsb_release
Reading package lists... Done
E: Unable to find a source package for lsb_release

Эх, хотел посмотреть, куда сам lsb_release смотрит. Судя по strace на debian он ваще шерстит по /etc/apt, вплоть до pinning, чтобы инфу выдать.

Binkledum ()
Ответ на: комментарий от Binkledum

пакет называется «lsb-release», с минусом

и ссылается он на питоновский скрипт (python3 надо отдать должное), в котором import lsb_release. Нет, пожалуй я пас. Лучше /etc/os-release, питон мне нафиг не вперся

zendrz ()
Последнее исправление: zendrz (всего исправлений: 1)
Ответ на: комментарий от Binkledum

Эх, хотел посмотреть, куда сам lsb_release смотрит.

Эх, а мог бы с документацией ознакомиться, прежде чем запускать команды, назначения которых не знаешь. Эх.

anonymous ()
Ответ на: комментарий от hummer

Речь о дистрибутиве, а не ОС. uname даёт все про ОСь, ядро, платформу и тп. Так что LSB тут про Linux дистрибутивы, а не POSIX

ergo ★★ ()
Ответ на: комментарий от anonymous

Это какие? ну в целом да, надо было просто посмотреть, что сам lsb_release - это питоноскрипт.

Binkledum ()
Ответ на: комментарий от zendrz

Ок, на него забили как минимум три последних поколения федор и дебианов.

я бы не был столь голословен. отказ от lsb_release скорей всего обусловлен поголовным переходом на systemd, который предоставляет /etc/os-release. надо также отметить, что systemd стал стандартом freedesktop.

вместе с тем, как мне кажется, freedesktop взял на себя роль LSB и теперь все смотрят на него. хотя в деталях стандартизации дистрибутивов я не силен.

PS: признаю, опечатался когда у себя пытался посмотреть os-release.

ergo ★★ ()
Ответ на: комментарий от PPP328

Вот этого ждал весь топик. А что на счет lsb_release? А можешь посмотерть, в каких пакетах в слаке лежат os-release и lsb_release? (если такие пакеты есть в слаке)

zendrz ()
Ответ на: комментарий от ergo

Да без разницы, есть у них systemd, или нет. Генерировать шаблонный файлик – вопрос одного скрипта. Быть нетакими(тм) как все и ломать совместимость – бесценно.

Siborgium ★★★★ ()
Ответ на: комментарий от ergo

Речь о дистрибутиве, а не ОС.

Так ведь дистрибутив как раз и определяет операционную систему, а Linux - это только ядро. Вот если бы большинство дистрибутивов строго следовало LSB… правда тогда и необходимости проверять, а Fedora ли это или Ubuntu или что-то ещё, просто не возникало бы.

hummer ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.