From: Zhang, Yixin <yixin.zhang@intel.com>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH ltp] ver_linux: check /usr/lib/os-release in case /etc/os-release not exists
Date: Wed, 15 Aug 2018 17:34:42 +0800 [thread overview]
Message-ID: <20180815093442.GA17378@yixin-desktop> (raw)
In-Reply-To: <20180815091749.GB3457@dell5510>
Hi Petr,
On 2018-08-15 at 11:17:49 +0200, Petr Vorel wrote:
> Hi Yixin,
>
> > https://www.linux.org/docs/man5/os-release.html:
> > "The file /etc/os-release takes precedence over /usr/lib/os-release.
> > Applications should check for the former, and exclusively use its data
> > if it exists, and only fall back to /usr/lib/os-release if it is missing.
> > Applications should not read data from both files at the same time.
> > /usr/lib/os-release is the recommended place to store OS release
> > information as part of vendor trees. /etc/os-release should be a
> > relative symlink to /usr/lib/os-release, to provide compatibility with
> > applications only looking at /etc. A relative symlink instead of an
> > absolute symlink is necessary to avoid breaking the link in a chroot or
> > initrd environment such as dracut."
>
> > To be compatible with some distro which don't have the soft link
> > "/etc/os-release", check "/usr/lib/os-release" first before checking
> > "/etc/issue".
>
> > Signed-off-by: Yixin Zhang <yixin.zhang@intel.com>
> > ---
> > ver_linux | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
>
> > diff --git a/ver_linux b/ver_linux
> > index dda337926..f4c4e07f4 100755
> > --- a/ver_linux
> > +++ b/ver_linux
> > @@ -9,8 +9,12 @@ echo 'If some fields are empty or look unusual you may have an old version.'
> > echo 'Compare to the current minimal requirements in Documentation/Changes.'
>
> > echo
> > -echo "`ls /etc/*release`"
> > +echo "`ls /etc/*release 2> /dev/null`"
> > cat /etc/*release 2> /dev/null
> > +if [ $? = 1 ]; then
> > + echo "`ls /usr/lib/*release 2> /dev/null`"
> > + cat /usr/lib/*release 2> /dev/null
> > +fi
> > if [ $? = 1 ]; then
> > echo '/etc/issue:'
> > cat /etc/issue 2> /dev/null
>
> How about, instead of repeating files with cat, find the file and then work with it?
> Something like this:
>
> f="$(ls /etc/*release 2>/dev/null)"
> [ -f "$f" ] || f="$(ls /usr/lib/*release 2>/dev/null)"
> [ -f "$f" ] || f="$(ls /etc/issue 2>/dev/null)"
> if [ -f "$f" ]; then
> echo "$f:"
> cat $f
> fi
>
> We could also run `lsb_release -a' (if available).
In most case, /etc/*release includes both os-release and lsb-release and
sometimes other -release file, so the $f will be an array for most of the
time. We cannot just test it with -f (maybe a extra for loop is needed).
My inital plan is fall back to /usr/lib/ if none of the /etc/*-release exists.
This is the case on Clear Linux, and it's tested on both Ubuntu and Clear
Linux.
Yixin
>
>
> Kind regards,
> Petr
next prev parent reply other threads:[~2018-08-15 9:34 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-15 7:35 [LTP] [PATCH ltp] ver_linux: check /usr/lib/os-release in case /etc/os-release not exists Yixin Zhang
2018-08-15 9:17 ` Petr Vorel
2018-08-15 9:34 ` Zhang, Yixin [this message]
2018-10-02 12:33 ` Cyril Hrubis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180815093442.GA17378@yixin-desktop \
--to=yixin.zhang@intel.com \
--cc=ltp@lists.linux.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.