2011-11-13
inodeが枯渇するとどうなるか
何年も前にinode枯渇問題に直面したことが何度かあったので,結果は知っているのですが,ちょっと詰まってしまった別件があり,現実逃避目的でとりあえず息抜きで試してみました.
[root@centos6 ~]# dd if=/dev/zero of=$PWD/dummy.dd bs=1M count=100 100+0 records in 100+0 records out 104857600 bytes (105 MB) copied, 3.81335 s, 27.5 MB/s
[root@centos6 ~]# mkfs.ext3 $PWD/dummy.dd -N 100
mke2fs 1.41.12 (17-May-2010)
/root/dummy.dd is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
104 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
8 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@centos6 ~]# mkdir /mnt/dummy/ [root@centos6 ~]# mount -t ext3 -o loop $PWD/dummy.dd /mnt/dummy/ [root@centos6 dummy]# mount /dev/mapper/VolGroup-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/mapper/VolGroup02-lv_home on /home type ext4 (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) /dev/loop0 on /mnt/dummy type ext3 (rw)
[root@centos6 ~]# df -h
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/VolGroup-lv_root
5.5G 2.9G 2.4G 55% /
tmpfs 372M 0 372M 0% /dev/shm
/dev/mapper/VolGroup02-lv_home
40G 20G 18G 53% /home
/dev/sda1 485M 49M 411M 11% /boot
/dev/loop0 100M 5.6M 90M 6% /mnt/dummy
[root@centos6 dummy]# df -i
Filesystem Inodes IUsed IFree IUse% マウント位置
/dev/mapper/VolGroup-lv_root
363600 81530 282070 23% /
tmpfs 95147 1 95146 1% /dev/shm
/dev/mapper/VolGroup02-lv_home
2621440 526347 2095093 21% /home
/dev/sda1 128016 44 127972 1% /boot
/dev/loop0 104 11 93 11% /mnt/dummy
[root@centos6 ~]# cd /mnt/dummy/
[root@centos6 dummy]# for I in `seq 1 100`; do touch ${I}; done
touch: cannot touch `94': デバイスに空き領域がありません
touch: cannot touch `95': デバイスに空き領域がありません
touch: cannot touch `96': デバイスに空き領域がありません
touch: cannot touch `97': デバイスに空き領域がありません
touch: cannot touch `98': デバイスに空き領域がありません
touch: cannot touch `99': デバイスに空き領域がありません
touch: cannot touch `100': デバイスに空き領域がありません
[root@centos6 dummy]# df -h
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/VolGroup-lv_root
5.5G 2.9G 2.4G 55% /
tmpfs 372M 0 372M 0% /dev/shm
/dev/mapper/VolGroup02-lv_home
40G 20G 18G 53% /home
/dev/sda1 485M 49M 411M 11% /boot
/dev/loop0 100M 5.6M 90M 6% /mnt/dummy
[root@centos6 dummy]# df -i
Filesystem Inodes IUsed IFree IUse% マウント位置
/dev/mapper/VolGroup-lv_root
363600 81530 282070 23% /
tmpfs 95147 1 95146 1% /dev/shm
/dev/mapper/VolGroup02-lv_home
2621440 526347 2095093 21% /home
/dev/sda1 128016 44 127972 1% /boot
/dev/loop0 104 104 0 100% /mnt/dummy
なぜinodeを100個で指定して104個できるのか,なんで最初から11ほど消費しているのかは知りません.
いずれ必要になれば調べてみようと思います.
2011-11-09
パッケージ名がわからなくてもyumでインストールできる場合の紹介その2
はてぶろを招待してもらえずすねている id:elf です.別に気にしていないんだからね!!
ってなんか懐かしいノリなんだけどどうでもいいです.
約1ヶ月前に「パッケージ名がわからなくてもyumでインストールできる場合の紹介」というのを書きました.
今回はもうちょいシンプルなやり方です.
一般的にRPMパッケージはインストールに必要な依存関係の情報をファイル内に持ってることはよく知られています.
ではSRPMは? っということで調べてみましょう.
[elf@centos6 SRPMS]$ rpmbuild --rebuild transifex-1.1.0-4.fc17.src.rpm
transifex-1.1.0-4.fc17.src.rpm をインストール中です。
警告: ユーザ mockbuild は存在しません - root を使用します
警告: グループ mockbuild は存在しません - root を使用します
警告: ユーザ mockbuild は存在しません - root を使用します
警告: グループ mockbuild は存在しません - root を使用します
警告: ユーザ mockbuild は存在しません - root を使用します
警告: グループ mockbuild は存在しません - root を使用します
エラー: ビルド依存性の失敗:
python-markdown は transifex-1.1.0-4.el6.noarch に必要とされています
django-contact-form は transifex-1.1.0-4.el6.noarch に必要とされています
django-pagination は transifex-1.1.0-4.el6.noarch に必要とされています
django-tagging は transifex-1.1.0-4.el6.noarch に必要とされています
django-notification は transifex-1.1.0-4.el6.noarch に必要とされています
django-profile は transifex-1.1.0-4.el6.noarch に必要とされています
Django-south は transifex-1.1.0-4.el6.noarch に必要とされています
django-piston は transifex-1.1.0-4.el6.noarch に必要とされています
django-authority は transifex-1.1.0-4.el6.noarch に必要とされています
mercurial >= 1.3 は transifex-1.1.0-4.el6.noarch に必要とされています
それでは--requiresで依存関係の情報を調べてみましょう.
[elf@centos6 SRPMS]$ rpm -qp --requires transifex-1.1.0-4.fc17.src.rpm python-sphinx gettext python-markdown Django django-contact-form django-pagination django-tagging django-notification django-profile Django-south django-piston django-authority mercurial >= 1.3 python-sqlite2 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1
おっと.ちゃんと出るじゃないですか.
つまり,「$ sudo yum install `rpm -qp --requires transifex-1.1.0-4.fc17.src.rpm`」とやれば必要なパッケージは全部入ってしまいそうです.これは楽チン!!
さて試してみましょう!!
[elf@centos6 SRPMS]$ sudo yum install `rpm -qp --requires transifex-1.1.0-4.fc17.src.rpm` Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.jaist.ac.jp * epel: ftp.jaist.ac.jp * extras: data.nicehosting.co.kr * updates: data.nicehosting.co.kr Setting up Install Process Package matching python-sphinx-0.6.6-2.el6.noarch already installed. Checking for update. Package gettext-0.17-16.el6.x86_64 already installed and latest version Package matching Django-1.2.7-1.el6.noarch already installed. Checking for update. No package django-contact-form available. No package django-pagination available. No package django-notification available. No package django-profile available. No package django-piston available. No package django-authority available. No package >= available. No package 1.3 available. No package rpmlib(FileDigests) available. No package <= available. No package 4.6.0-1 available. No package rpmlib(CompressedFileNames) available. No package <= available. No package 3.0.4-1 available. Resolving Dependencies --> Running transaction check ---> Package Django-south.noarch 0:0.7.2-1.el6 set to be updated ---> Package django-tagging.noarch 0:0.3.1-3.el6 set to be updated ---> Package mercurial.x86_64 0:1.4-3.el6 set to be updated ---> Package python-markdown.noarch 0:2.0.1-3.1.el6 set to be updated ---> Package python-sqlite2.x86_64 1:2.3.5-2.el6 set to be updated --> Finished Dependency Resolution Dependencies Resolved ========================================================================================================================================================================= Package Arch Version Repository Size ========================================================================================================================================================================= Installing: Django-south noarch 0.7.2-1.el6 epel 227 k django-tagging noarch 0.3.1-3.el6 epel 58 k mercurial x86_64 1.4-3.el6 base 1.5 M python-markdown noarch 2.0.1-3.1.el6 base 118 k python-sqlite2 x86_64 1:2.3.5-2.el6 epel 80 k Transaction Summary ========================================================================================================================================================================= Install 5 Package(s) Upgrade 0 Package(s) Total download size: 1.9 M Installed size: 8.7 M Is this ok [y/N]: y Downloading Packages: (1/5): Django-south-0.7.2-1.el6.noarch.rpm | 227 kB 00:00 (2/5): django-tagging-0.3.1-3.el6.noarch.rpm | 58 kB 00:00 (3/5): mercurial-1.4-3.el6.x86_64.rpm | 1.5 MB 00:00 (4/5): python-markdown-2.0.1-3.1.el6.noarch.rpm | 118 kB 00:00 (5/5): python-sqlite2-2.3.5-2.el6.x86_64.rpm | 80 kB 00:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 1.0 MB/s | 1.9 MB 00:01 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Warning: RPMDB altered outside of yum. Installing : mercurial-1.4-3.el6.x86_64 1/5 Installing : 1:python-sqlite2-2.3.5-2.el6.x86_64 2/5 Installing : django-tagging-0.3.1-3.el6.noarch 3/5 Installing : python-markdown-2.0.1-3.1.el6.noarch 4/5 Installing : Django-south-0.7.2-1.el6.noarch 5/5 Installed: Django-south.noarch 0:0.7.2-1.el6 django-tagging.noarch 0:0.3.1-3.el6 mercurial.x86_64 0:1.4-3.el6 python-markdown.noarch 0:2.0.1-3.1.el6 python-sqlite2.x86_64 1:2.3.5-2.el6 Complete!
いくつか抜けがでましたがインストールできました!!
抜けたのはFedora 17開発用のSRPMをCentOS 6.0でビルドしようとしたからですね.
これを中途半端といいます.同じネタ2回目なのに同じオチですか.ホントごめんなさい.
しかも
> No package >= available.
> No package 1.3 available.
とか出てます.まぁ実質害はないので気にしないでおきましょう.
とりあえず,ちゃんとビルドできる環境であれば上記のような手順でビルドに必要な環境がそろうと思います.ぜひお試しあれ.
それではあでゅー.
2011-10-06
パッケージ名がわからなくてもyumでインストールできる場合の紹介
CentOS 5の環境でとある作業をしているときによくある風景に遭遇しました.
いわゆる「依存関係が解決していないからビルドできんぞヴォケ!!」ですね.
$ rpmbuild -ba SPECS/publican.spec
エラー: ビルド依存性の失敗:
perl(Devel::Cover) は publican-2.8-1.noarch に必要とされています
perl(Module::Build) は publican-2.8-1.noarch に必要とされています
perl(Test::Exception) は publican-2.8-1.noarch に必要とされています
perl(Test::Pod) は publican-2.8-1.noarch に必要とされています
perl(Test::Pod::Coverage) は publican-2.8-1.noarch に必要とされています
perl(Test::Perl::Critic) は publican-2.8-1.noarch に必要とされています
(snip)
perl(DBD::SQLite) は publican-2.8-1.noarch に必要とされています
liberation-mono-fonts は publican-2.8-1.noarch に必要とされています
liberation-sans-fonts は publican-2.8-1.noarch に必要とされています
liberation-serif-fonts は publican-2.8-1.noarch に必要とされています
cjkuni-uming-fonts は publican-2.8-1.noarch に必要とされています
ipa-gothic-fonts は publican-2.8-1.noarch に必要とされています
ipa-pgothic-fonts は publican-2.8-1.noarch に必要とされています
lklug-fonts は publican-2.8-1.noarch に必要とされています
baekmuk-ttf-batang-fonts は publican-2.8-1.noarch に必要とされています
こまった!! 当然作業を続けるなら必要なパッケージを入れましょう.ってことなんですが,「perl(???:???)」的なものはパッケージ名を調べるのが億劫です.そこでふと駄目もとでなんとなく下記のようにそのままyumに渡してみました.
$ sudo yum install 'perl(DBD::SQLite)' Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.nara.wide.ad.jp * epel: ftp.kddilabs.jp * extras: ftp.nara.wide.ad.jp * updates: ftp.nara.wide.ad.jp Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package perl-DBD-SQLite.x86_64 0:1.14-3.el5 set to be updated --> Processing Dependency: perl(DBI) for package: perl-DBD-SQLite --> Running transaction check ---> Package perl-DBI.x86_64 0:1.52-2.el5 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================================ Package Arch Version Repository Size ================================================================================================ Installing: perl-DBD-SQLite x86_64 1.14-3.el5 epel 277 k Installing for dependencies: perl-DBI x86_64 1.52-2.el5 base 600 k Transaction Summary ================================================================================================ Install 2 Package(s) Upgrade 0 Package(s) Total download size: 876 k Is this ok [y/N]:
おいおいおいおい!! イケるじゃんお兄さん!!
上記見ていると,perl(???:???)は依存関係の解決でパッケージ名が導き出されています.
ってことでもしかしてこんな手抜きできちゃう!?
LANG=C rpmbuild -ba SPECS/publican.spec 2>&1 | awk '$0 ~ /is needed by/ { print $1}'
perl(Devel::Cover)
perl(Module::Build)
perl(Test::Exception)
perl(Test::Pod)
perl(Test::Pod::Coverage)
perl(Test::Perl::Critic)
perl(Archive::Zip)
perl(Config::Simple)
perl(DateTime)
perl(DateTime::Format::DateParse)
perl(File::Copy::Recursive)
perl(File::Find::Rule)
perl(File::pushd)
(snip)
perl(DBD::SQLite)
liberation-mono-fonts
liberation-sans-fonts
liberation-serif-fonts
cjkuni-uming-fonts
ipa-gothic-fonts
ipa-pgothic-fonts
lklug-fonts
baekmuk-ttf-batang-fonts
ってことでできちゃいました…!!!!!!
$ sudo yum install `LANG=C rpmbuild -ba SPECS/publican.spec 2>&1 | awk '$0
~ /is needed by/ { print $1}'`
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.nara.wide.ad.jp
* epel: ftp.kddilabs.jp
* extras: ftp.nara.wide.ad.jp
* updates: ftp.nara.wide.ad.jp
Setting up Install Process
Setting up Install Process
No package perl(Makefile::Parser) available.
Package perl-XML-TreeBuilder-3.09-9.el5.noarch already installed and latest version
No package fop available.
No package batik available.
Package docbook-style-xsl-1.69.1-5.1.noarch already installed and latest version
No package liberation-mono-fonts available.
No package liberation-sans-fonts available.
No package liberation-serif-fonts available.
No package cjkuni-uming-fonts available.
No package lklug-fonts available.
No package baekmuk-ttf-batang-fonts available.
Resolving Dependencies
--> Running transaction check
---> Package ImageMagick-perl.x86_64 0:6.2.8.0-4.el5_5.3 set to be updated
--> Processing Dependency: ImageMagick = 6.2.8.0-4.el5_5.3 for package: ImageMagick-perl
--> Processing Dependency: libMagick.so.10()(64bit) for package: ImageMagick-perl
---> Package ipa-gothic-fonts.noarch 0:003.02-3.1.el5 set to be updated
---> Package ipa-pgothic-fonts.noarch 0:003.02-3.1.el5 set to be updated
---> Package perl-Archive-Zip.noarch 0:1.16-1.2.1 set to be updated
---> Package perl-Config-Simple.noarch 0:4.59-7.el5 set to be updated
---> Package perl-DBD-SQLite.x86_64 0:1.14-3.el5 set to be updated
--> Processing Dependency: perl(DBI) for package: perl-DBD-SQLite
---> Package perl-DateTime.x86_64 1:0.41-1.el5 set to be updated
--> Processing Dependency: perl(Class::Singleton) >= 1.03 for package: perl-DateTime
--> Processing Dependency: perl(Params::Validate) >= 0.76 for package: perl-DateTime
--> Processing Dependency: perl(Params::Validate) for package: perl-DateTime
--> Processing Dependency: perl(Class::Singleton) for package: perl-DateTime
---> Package perl-DateTime-Format-DateParse.noarch 0:0.04-6.el5 set to be updated
(snip)
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================================
Package Arch Version Repository Size
================================================================================================
Installing:
ImageMagick-perl x86_64 6.2.8.0-4.el5_5.3 base 147 k
ipa-gothic-fonts noarch 003.02-3.1.el5 base 4.1 M
ipa-pgothic-fonts noarch 003.02-3.1.el5 base 4.1 M
(snip)
perl-Algorithm-Diff noarch 1.1902-2.el5 epel 45 k
perl-AppConfig noarch 1.64-1.el5 epel 96 k
perl-B-Keywords noarch 1.06-1.el5 epel 9.6 k
perl-Class-Singleton noarch 1.03-3.el5 epel 17 k
perl-Clone x86_64 0.27-1.el5 epel 14 k
perl-Config-Tiny noarch 2.10-1.el5 epel 21 k
perl-DBI x86_64 1.52-2.el5 base 600 k
perl-Devel-Symdump noarch 1:2.07-3.el5.1 epel 16 k
perl-ExtUtils-CBuilder noarch 0.18-1.el5 epel 28 k
perl-ExtUtils-ParseXS noarch 2.18-1.el5 epel 31 k
perl-File-HomeDir noarch 0.62-1.el5 epel 40 k
perl-Font-AFM noarch 1.19-4.el5 epel 18 k
perl-IO-String noarch 1.08-1.1.1 base 13 k
perl-List-MoreUtils x86_64 0.22-2.el5 epel 59 k
perl-Module-Pluggable noarch 3.60-3.el5 epel 23 k
perl-Number-Compare noarch 0.01-8.el5 epel 7.6 k
perl-PPI noarch 1.118-1.el5 epel 371 k
perl-Params-Util noarch 0.25-1.el5 epel 24 k
perl-Params-Validate x86_64 0.88-3.el5 epel 71 k
perl-Perl-Critic noarch 1.05-1.el5 epel 514 k
perl-Pod-Coverage noarch 0.18-2.el5 epel 25 k
perl-Pod-Escapes noarch 1.04-5.el5 epel 15 k
perl-Pod-POM noarch 0.17-6.el5 epel 57 k
perl-Pod-Simple noarch 3.04-3.el5 epel 184 k
perl-String-Format noarch 1.14-1.el5 epel 10 k
perl-Sub-Uplevel noarch 0.18-2.el5 epel 13 k
perl-TeX-Hyphen noarch 0.140-5.el5 epel 33 k
perl-Test-Differences noarch 0.47-2.el5 epel 16 k
(snip)
Transaction Summary
================================================================================================
Install 76 Package(s)
Upgrade 0 Package(s)
Total download size: 34 M
Is this ok [y/N]: y
Downloading Packages:
(1/76): perl-Number-Compare-0.01-8.el5.noarch.rpm | 7.6 kB 00:00
(2/76): perl-Text-Glob-0.08-2.el5.noarch.rpm | 8.9 kB 00:00
(3/76): perl-B-Keywords-1.06-1.el5.noarch.rpm | 9.6 kB 00:00
(73/76): ipa-gothic-fonts-003.02-3.1.el5.noarch.rpm | 4.1 MB 00:00
(74/76): ipa-pgothic-fonts-003.02-3.1.el5.noarch.rpm | 4.1 MB 00:00
(75/76): urw-fonts-2.3-6.1.1.noarch.rpm | 4.5 MB 00:00
(76/76): ghostscript-8.70-6.el5_7.3.x86_64.rpm | 8.9 MB 00:01
------------------------------------------------------------------------------------------------
Total 4.9 MB/s | 34 MB 00:06
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : perl-List-MoreUtils 1/76
Installing : perl-Clone 2/76
Installing : perl-Params-Validate 3/76
(snip)
Dependency Installed:
ImageMagick.x86_64 0:6.2.8.0-4.el5_5.3 gd.x86_64 0:2.0.33-9.4.el5_4.2
ghostscript.x86_64 0:8.70-6.el5_7.3 ghostscript-fonts.noarch 0:5.50-13.1.1
libcroco.x86_64 0:0.6.1-2.1 libgsf.x86_64 0:1.14.1-6.1
librsvg2.x86_64 0:2.16.1-1.el5 libwmf.x86_64 0:0.2.8.4-10.2
perl-Algorithm-Diff.noarch 0:1.1902-2.el5 perl-AppConfig.noarch 0:1.64-1.el5
perl-B-Keywords.noarch 0:1.06-1.el5 perl-Class-Singleton.noarch 0:1.03-3.el5
perl-Clone.x86_64 0:0.27-1.el5 perl-Config-Tiny.noarch 0:2.10-1.el5
perl-DBI.x86_64 0:1.52-2.el5 perl-Devel-Symdump.noarch 1:2.07-3.el5.1
perl-ExtUtils-CBuilder.noarch 0:0.18-1.el5 perl-ExtUtils-ParseXS.noarch 0:2.18-1.el5
perl-File-HomeDir.noarch 0:0.62-1.el5 perl-Font-AFM.noarch 0:1.19-4.el5
perl-IO-String.noarch 0:1.08-1.1.1 perl-List-MoreUtils.x86_64 0:0.22-2.el5
perl-Module-Pluggable.noarch 0:3.60-3.el5 perl-Number-Compare.noarch 0:0.01-8.el5
perl-PPI.noarch 0:1.118-1.el5 perl-Params-Util.noarch 0:0.25-1.el5
perl-Params-Validate.x86_64 0:0.88-3.el5 perl-Perl-Critic.noarch 0:1.05-1.el5
perl-Pod-Coverage.noarch 0:0.18-2.el5 perl-Pod-Escapes.noarch 0:1.04-5.el5
perl-Pod-POM.noarch 0:0.17-6.el5 perl-Pod-Simple.noarch 0:3.04-3.el5
perl-String-Format.noarch 0:1.14-1.el5 perl-Sub-Uplevel.noarch 0:0.18-2.el5
perl-TeX-Hyphen.noarch 0:0.140-5.el5 perl-Test-Differences.noarch 0:0.47-2.el5
perl-Text-Autoformat.noarch 0:1.13-5.el5 perl-Text-Diff.noarch 0:0.35-3.el5
perl-Text-Glob.noarch 0:0.08-2.el5 perl-Text-Reform.noarch 0:1.11-6.el5
perl-TimeDate.noarch 1:1.16-5.el5 perl-XML-Dumper.noarch 0:0.81-2.fc6
perl-XML-LibXML-Common.x86_64 0:0.13-8.2.2 perl-XML-NamespaceSupport.noarch 0:1.09-1.2.1
perl-XML-SAX.noarch 0:0.14-8 perl-XML-TokeParser.noarch 0:0.05-2.1.el5
perltidy.noarch 0:20070801-1.el5 urw-fonts.noarch 0:2.3-6.1.1
Complete!
実は例が悪く,よく見ると「パッケージがあらへん」といっているものがあるように,現状のyumリポジトリーだけでは解決できないようです(ぇー
#CentOS 5系 w/ EPELだけでは本家から落としたpublican 2.8はビルドできないみたい(ハァ
また書く気になったらちゃんと一連の流れで成功するパターンでも書き直したいと思います.
では.あでゅー
2011-07-19
lsb準拠のLinuxならディストリビューションやバージョンの識別はパッケージ情報やlsb_releaseを使おう
よく/etc/redhat-releaseの内容でOSの種類やバージョンを調べているスクリプトを見かけますが,10年前ならともかく,今となってはいまいちなやり方です.
ということで別の手段を紹介したいと思います.
/etc/redhat-releaseの持ち主パッケージの情報を調べる.
rpm系なら/etc/redhat-releaseの持ち主の情報でそれらを識別する方がまだモアベターです.
おそらく少なくともRed Hat Linux 7.0やRed Hat Enterprise Linux 2.1,Miraclelinux,Turbolinux 6.0前後から通用すると思います(以前勤務していたベンダーで,実際にディストリビューション,バージョンの識別に使っていた方法です).
$ rpm -qif /etc/redhat-release Name : fedora-release Relocations: (not relocatable) Version : 13 Vendor: Fedora Project Release : 1 Build Date: 2010年05月07日 13時24分24秒 Install Date: 2010年08月17日 20時51分39秒 Build Host: x86-06.phx2.fedoraproject.org Group : System Environment/Base Source RPM: fedora-release-13-1.src.rpm Size : 27452 License: GPLv2 Signature : RSA/8, 2010年05月07日 14時24分58秒, Key ID 7edc6ad6e8e40fde Packager : Fedora Project URL : http://fedoraproject.org Summary : Fedora release files Description : Fedora release files such as yum configs and various /etc/ files that define the release.
$ rpm -qf --queryformat="Vendor: %{VENDOR}\nPackager: %{PACKAGER}\nVersion: %{VERSION}\nRelease: %{RELEASE}\n" /etc/redhat-release
Vendor: Fedora Project
Packager: Fedora Project
Version: 13
Release: 1
CentOS 5,6でも試してみました.
$ rpm -qf --queryformat="Vendor: %{VENDOR}\nPackager: %{PACKAGER}\nVersion: %{VERSION}\nRelease: %{RELEASE}\n" /etc/redhat-release
Vendor: CentOS
Packager: (none)
Version: 5
Release: 6.el5.centos.1
$ rpm -qf --queryformat="Vendor: %{VENDOR}\nPackager: %{PACKAGER}\nVersion: %{VERSION}\nRelease: %{RELEASE}\n" /etc/redhat-release
Vendor: CentOS
Packager: CentOS BuildSystem <http://bugs.centos.org>
Version: 6
Release: 0.el6.centos.5
lsb_releaseを使う
もしくはlsb_releaseを使う方法もあります.シンプルに情報が欲しい場合,下記のようにするといいでしょう.
#lsb_releaseはredhat-lsbというパッケージが入っていなければ使用できません(ただし最小構成でのインストールなどでなければほぼ入っていると思います).
$ lsb_release --id --short Fedora $ lsb_release --release --short 13 $ lsb_release --id --release --short Fedora 13
$ lsb_release --release --short 5.6 $ lsb_release --id --short CentOS $ lsb_release --id --release --short CentOS 5.6
$ lsb_release --id --short CentOS $ lsb_release --release --short 6.0 $ lsb_release --id --release --short CentOS 6.0 $ lsb_release --id --release --short CentOS 6.0
その他
lsb_releaseはより多くの情報を取り出せるのですが,アーキテクチャ情報だけを取り出すことができない…のが微妙なところです.versionという情報から抜き出すか,他のコマンドを用いるしかないかもしれません(誰かアーキテクチャだけ出す方法を知ってたらおせーて).
$ lsb_release LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
というか,いずれにしろほとんどの人にとってはがんばるところじゃないですけどね!!
2011-07-18
メディア(isoファイル)から簡単にローカルのリポジトリーを作成する方法
もう既にいろんなところに転がっていそうだけどはてダのリハビリがてら.
前書き
CentOS 6.0が出た記念に自宅でも入れてみようか…と思ったけど引越し直後,自宅の環境がいろいろな理由で貧弱になっており,ネットワークにつながらないATOMなマシンが1台…仕方なしにunetbootinを使って入れてみました.が,ネットワークにつながらない状況とはいえyumも使えないと面倒くさいので,ローカルでyumが使える環境を作ってみました.
やることの概要
簡単にいうと,インストール メディア内の/Packages/と/repodata/を1つのディレクトリー内にかき集めます.
難しく書いても大体そんな感じです(何
事前準備
CentOS 6.0(CentOS 5系も)は/etc/yum.repos.d/CentOS-Media.repoというリポジトリーの設定ファイルがあり,これは「/media/CentOS/」「/media/cdrom/」「/media/cdrecorder/」のいずれかにリポジトリーがあることを期待した設定になっています.今回はこの中から「/media/CentOS/」をリポジトリーの作成先にします.
disc1のコピー処理をする.
今回は/mnt/cdmediaがメディア,isoファイルのマウント先と仮定します.isoファイルはディレクトリー/home/elf/isos/に既に保存していると仮定します.
もしかしたら読者の方は違うところにマウントをしたいかもしれないし,isoファイルは別のディレクトリーに保存しているかもしれませんが,よしなに読み替えてください.
# mount -o loop /home/elf/isos/CentOS-6.0-x86_64-bin-DVD1.iso /mnt/cdmedia
#-t noneとか-oはもっといろいろ付ける方がお行儀がいい?(何
# mount /dev/hdc /mnt/cdmedia
# rsync -av /mnt/cdmedia/Packages /media/CentOS/. # rsync -av /mnt/cdmedia/repodata /media/CentOS/.
# umount /mnt/cdmedia
引き続きdisc2の作業に移ります.
disc2(CDメディアの場合は2〜6)のコピー処理をする.
たいしてやることは変わりありません.
# mount -o loop /home/elf/isos/CentOS-6.0-x86_64-bin-DVD2.iso /mnt/cdmedia
# mount /dev/hdc /mnt/cdmedia
# rsync -av /mnt/cdmedia/Packages /media/CentOS/.
# umount /mnt/cdmedia
これで最低限の作業は完了です.
今構築したリポジトリーを使えるか確認する.
まず知っておかなければいけない注意点は,「/etc/yum.repos.d/CentOS-Media.repo」はそのままでは無効になるように設定されています.
今回は動作確認をしたいだけなので,設定ファイルは編集せずに確認をします.確認時は設定ファイルに書かれているように「yum --disablerepo=\* --enablerepo=c6-media [command]」という感じでコマンドを実行します.
# yum --disablerepo=\* --enablerepo=c6-media check-update Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * c6-media:
上記のようにエラー風のメッセージが出てこなければ利用できると考えてよさそうです(厳密にいうと,repodataが正しく読めることが確認できただけですが).
# yum --disablerepo=\* --enablerepo=c6-media check-update Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * c6-media: file:///media/CentOS1/repodata/repomd.xml: [Errno 14] Could not open/read file:///media/CentOS/repodata/repomd.xml Trying other mirror. file:///media/cdrecorder/repodata/repomd.xml: [Errno 14] Could not open/read file:///media/cdrecorder/repodata/repomd.xml Trying other mirror. file:///media/cdrom/repodata/repomd.xml: [Errno 14] Could not open/read file:///media/cdrom/repodata/repomd.xml Trying other mirror.
さてさて.しかしいつもオプション--enablerepoをつけるのは面倒ですね.ってことで気になる人は設定ファイルを変更しましょう.
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
file:///media/cdrom/
file:///media/cdrecorder/
gpgcheck=1
enabled=1 ★「0」を「1」にする
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
あとは適当にyum listやyum installなどが期待通り動くか確認するといいでしょう.
補足
細かいことが気になる人は,CentOS-Base.repoの[base]でenabled=0を追加しておくと,/media/CentOS/で事足りる部分は完全にネットワークへ参照しに行かなくなります.
あとがき
一緒にcentos.orgやfedoraproject.orgで活動する仲間を募集しています.
#ちゃんと書けと突込みが…
この辺にお願いします!!




































