ラベル rhel の投稿を表示しています。 すべての投稿を表示
ラベル rhel の投稿を表示しています。 すべての投稿を表示

2021-09-24

Redhat Enterprise Linux 9で何が新しくなるのか

Redhat Enterprise Linuxのアルファ版は、今の所Fedora 34がベースとなっているらしい。 Fedora 34を使用していてどんな違いがあるのか、メモを残しておく。

この記事は未完成で、これから加筆してゆく予定。

  • Kernel version: 4.18.0 -> 5.13.16
  • iostatでdiscard数・サイズも表示されるようになる。
  • qt6が加わる。
  • すべてのオーディオがPipewireを通るようになる。 [記事] 使用する上で何が変わるのか良くわからないが、音響を扱うなら知っておいて損はないだろう。
  • 2020-04-04

    RHEL7にFedora 30のchroot環境をつくる

    1. まずディレクトリをつくる
      sudo mkdir -p /opt/chroot/fedora30/var/lib/rpm
      sudo rpm --root /opt/chroot/fedora30/var/lib/rpm --initdb
      
    2. パッケージをインストールする
      wget ftp://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/30/Everything/x86_64/os/Packages/f/fedora-release-30-1.noarch.rpm
      wget ftp://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/30/Everything/x86_64/os/Packages/f/fedora-release-common-30-1.noarch.rpm
      wget ftp://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/30/Everything/x86_64/os/Packages/f/fedora-repos-30-1.noarch.rpm
      wget ftp://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/30/Everything/x86_64/os/Packages/f/fedora-gpg-keys-30-1.noarch.rpm
      sudo rpm --root /opt/chroot/fedora30 --nodeps -ivh fedora-release-30-1.noarch.rpm fedora-release-common-30-1.noarch.rpm fedora-repos-30-1.noarch.rpm fedora-gpg-keys-30-1.noarch.rpm
      
    3. 必要となる設定ファイルをつくる
      sudo mkdir -p /opt/chroot/fedora30/{dev,etc}
      sudo cp -a /dev/{null,stderr,stdout,stdin,zero,random,urandom} /opt/chroot/fedora30/dev/
      sudo cp /etc/{resolv.conf,localtime} /opt/chroot/fedora30/etc/
      
    4. yumでbashとdnfをインストールする
      sudo yum --nogpgcheck --installroot=/opt/chroot/fedora30/ install bash dnf
      
    5. chrootして、他のパッケージをインストールする
      sudo chroot /opt/chroot/fedora30/
      dnf install packages...
      

    2018-10-28

    PKG_CONFIG_PATHを使用したビルド

    複数のバージョンのライブラリをインストールしたいなどの場合, バージョンごとにインストール先のディレクトリを分けることがある. その場合に, そのライブラリをリンクして別のソフトをビルドする方法をメモしておく.

    ライブラリ (この例ではx264) のビルド・インストールをする. 以下の例では, /usr/local/x264/2018092の下にインストールする設定でビルド・インストールする.

    $ mkdir b && cd b
    $ ../configure --prefix=/usr/local/x264/20180923
    $ make
    $ sudo make install
    

    上記のライブラリをリンクするソフト (この例ではffmpeg) のビルド・インストールをする.

    $ mkdir b && cd b
    $ PKG_CONFIG_PATH=/usr/local/x264/20180923/lib/pkgconfig: ../configure --enable-libx264 --prefix=/usr/local/ffmpeg/4.0.git
    $ make
    $ sudo make install
    
    例で使用したffmpegでは --extra-cflagsと--extra-ldflagsというオプションでx264のパスを設定することもできるが, pkg-configを使用したほうが, よりライブラリ開発者の意図した設定でビルドすることができる.

    あとは, 以下のようなラッパーを用意しておく.

    #! /bin/bash
    export LD_LIBRARY_PATH=/usr/local/ffmpeg/4.0.git/lib:/usr/local/x264/20180923/lib:
    exec /usr/local/ffmpeg/4.0.git/bin/"$(basename "$0")" "$@"
    

    2018-10-21

    EL7にてユーザーのpublic_htmlを公開する手順

    Scientific Linux 7 (CentOS 7と同様にRedhat Enterprise Linux 7のクローン, 以下EL7) において, ユーザーのpublic_html下にあるコンテンツをApacheで公開するときの手順をまとめる.

    Apacheのインストール

    $ sudo yum install httpd
    

    Apache上の設定

    $ sudoedit /etc/httpd/conf.d/userdir.conf
    
    以下のように disable の部分をコメントアウトし, 代わりに public_html の箇所を有効にする.
    <IfModule mod_userdir.c>
        # UserDir disabled
        UserDir public_html
    </IfModule>
    

    SELinuxの設定

    $ restorecon -R ~/public_html
    $ sudo setsebool -P httpd_enable_homedirs 1
    
    EL7ではデフォルトでhttpd_enable_homedirsが無効に設定されているので, これを有効にする必要がある.

    Wirewalldの設定

    $ sudo firewall-cmd --add-service=http
    
    これでアクセスできることを確認したのち, 以下のコマンドでパーマネントな設定にする.
    $ sudo firewall-cmd --permanent --add-service=http
    

    2018-10-06

    自作PC組み立て

    概要

    1年位前に, OBS-Studioをつかう目的で, 古いPCの部品を入れ替えて, 新しいPCを組み立てた. 今でも問題なく動いているので, そのときに購入した部品を紹介する. なお, 自分用ではない. 使用頻度は, 週に半日くらい.

    PCIおよびPCIEのカードでカメラからの映像をキャプチャし配信することが目的. 映像は複数あって, CPU上でスイッチする. 1K程度の映像を処理する. OSには, 安定していると期待してScientific Linux 7を選んだ.

    使用部品

    以下の部品を新たに購入した.

    CPU: Intel Core i7-7700

    Memory: Team TED48G2400C16BK

    Mother board: Asus H270-Pro
    PCI, PCIEのボードをいくつか載せたかったので, これにした.

    Display port to VGA変換アダプタ
    自分でつかうならHDMIかDisplay Portのモニタを選ぶのだが... 予算の都合でモニタは古いアナログのまま. この種の変換アダプタは故障が心配なので, レビューを注意深く確認した. この製品は未だ故障していない.

    Blackmagic Intensity Pro 4K
    業務用の製品も出している会社なので, Linuxのサポートも謳っており, OBS-Studioでサポートしていることを確認して, 購入した. Scientific Linux 7へのインストールはとても苦労した. Kernelのアップデートでも, カーネルモジュールのための色々な作業が必要だ.


    2015-01-29

    RHEL7: pdftops が両面印刷できないPSを生成する

    RHEL6 では,
    $ lpr a.pdf
    や
    $ pdftops a.pdf -| lpr
    によってPDFを印刷できた. しかし, RHEL7でこの方法を使うと, 印刷はできるものの, 両面に設定しても, 片面で印刷されてしまう. どうやら, 出力されるPSの上の方に, pdfSetupPaper というマクロがあるのだが, この実装が悪いらしい. 1ページごとにページサイズを設定するのだが, ページサイズが設定されるとプリンタが両面印刷せずに排紙してしまうようだ.

    もうすぐパッチが適用されると思うのだが, 待ちきれなかったので, 自分でビルドしてしまった.

    対処1: sedでページを設定する pdfSetupPaper を除去する. 以下のコマンドを pdftops と lpr の間にいれる.

    sed -e "s/ pdfSetupPaper/ pop pop/"
    

    Popplerのバグジラで議論されているが, そのパッチを適用する. 他にもいろいろなパッチが出ていたのだが, pdfSetupPaper のパッチだけにした.

    $ yumdownloader --source poppler
    $ rpm -ivh poppler-0.22.5-6.el7.src.rpm
    $ cd ~/rpmbuild/SOURCES/
    $ wget -O poppler-pdfSetupPaper.patch https://bugs.freedesktop.org/attachment.cgi?id=91005
    $ cd ../SPECS/
    $ vim poppler.spec
    $ rpmbuild -ba poppler.spec
    $ cd ..
    $ sudo rpm -Uvh RPM/x86_64/poppler*.rpm
    

    以下にspecファイルの更箇所を示す.

    --- poppler-orig.spec 2014-02-15 01:11:43.000000000 +0900
    +++ poppler.spec 2015-01-31 00:08:23.569595075 +0900
    @@ -1,7 +1,7 @@
     Summary: PDF rendering library
     Name: poppler
     Version: 0.22.5
    -Release: 6%{?dist}
    +Release: 6%{?dist}a
     License: (GPLv2 or GPLv3) and GPLv2+ and LGPLv2+ and MIT
     Group: Development/Libraries
     URL:     http://poppler.freedesktop.org/
    @@ -16,6 +16,9 @@
     # https://bugzilla.redhat.com/show_bug.cgi?id=1053616
     Patch2:  poppler-0.22.5-rotated-words-selection.patch
     
    +# https://bugs.freedesktop.org/attachment.cgi?id=91005
    +Patch3: poppler-pdfSetupPaper.patch
    +
     Requires: poppler-data >= 0.4.0
     BuildRequires: automake libtool
     BuildRequires: gettext-devel
    @@ -134,6 +137,7 @@
     %patch0 -p1 -b .CVE-2013-4473
     %patch1 -p1 -b .CVE-2013-4474
     %patch2 -p1 -b .rotated-word-selection
    +%patch3 -p1 -b .duplex
     
     iconv -f iso-8859-1 -t utf-8 < "utils/pdftohtml.1" > "utils/pdftohtml.1.utf8"
     mv "utils/pdftohtml.1.utf8" "utils/pdftohtml.1"
    @@ -256,3 +260,6 @@
     
     
     %changelog
    +* Thu Jan 1 2015 My Name  - 0.22.5-6a
    +- pdfSetupPaper macro modified
    +
    

    2015-01-28

    GHOST 脆弱性のセキュリティアップデート後に

    今回の脆弱性は, gethostbyname に見つかって, 任意のコードが実行される可能性があるというもの. glibcのアップデートが必要なのだけれど, アップデートの後, この共有オブジェクトをリンクしているサービスすべてを再起動しないといけない.

    一番安全なのは, OSを再起動することなのだけれど, そう簡単にOSすべてを再起動するわけにはいかない場合もあるだろう. こういうとき, 古い (削除済みの) 共有オブジェクトをリンクしているプロセスを探すことができると便利である.

    以前にも記事を書いたが, 再掲する. RHEL 5, 6, 7 では, 以下のようなコマンドで, 探すことができる.

    sudo sh -c 'grep "\.so.*deleted" /proc/*/maps' | cut -f3 -d/ | xargs ps
    
    /proc/*/mapsにマッピングの状況 (共有オブジェクトやその他いろいろ) が出てくるので, この中で, deleted とラベルがついたものを探す. ただ, 拡張子「.so」がついたものだけを探さないと, 誤検出してしまう.

    2015-01-14

    メールサーバからの応答: XX is not yet authorized to deliver mail

    あるメーリングリストに投稿しようとしたら, なかなか届かない. メールサーバからの配送で以下のように詰まっていた.
    $ mailq 
    -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
    xxxxxxxxx      1522 Wed Jan 14 xx:xx:xx  hoge@example.net
    (host mx.example.com[xx.xx.xx.xx] said: 451-xx.xx.xx.xx is not yet authorized to deliver  mail from 451- to . Please 451 try later. (in reply to RCPT TO command))
                                             ml1@lists.examplle.com
    
    
    このページに書かれているグレーリストの実装とかに引っかかっているのかもしれない. よくわからないが, もう一度試すように, キューをフラッシュしたら送れた.
    $ postqueue -f
    
    (一般ユーザでフラッシュできたのはなぜ?)

    2015-01-13

    lpr: 'application/postscript' はサポートされていない形式です!

    CUPS は Unix/Linux で使われる印刷サービスなのだけれど, たまに設定ファイルが書き換わって印刷できなくなることがある.
    /var/log/cups/access_log に
    Print-Job client-error-document-format-not-supported
    と出力され, lpr コマンドを使うと
    lpr: 'application/postscript' はサポートされていない形式です!
    というエラーが出ることがある.
    なぜか, PS も PDF も受け付けない:-(

    /etc/cups/printers.conf に, 以下の3行を追記する. 追記する場所は, <Printer> または <DefaultPrinter> と </Printer> の間. 複数のプリンタを設定している場合, それぞれに追記.
    追記するとき, 一度 CUPS を停止させておく.

    $ sudo service cups stop
    $ sudoedit /etc/cups/printers.conf
    $ sudo service cups start
    

    2015-01-08

    CentOS 6 plus で Intel NIC が使用できなくなる

    CentOS 6 を使用していると, 以下のエラーが出て, NICが使用できなくなることがある. CentOS plus の kernel-2.6.32-431.el6.centos.plus.x86_64 などのカーネルを使用していると起こり, 本家の Redhat Enterprise Linux 6 では起こらないらしい.
    e1000e 0000:03:00.0: eth0: Reset adapter unexpectedly
    e1000e 0000:03:00.0: eth0: Timesync Tx Control register not set as expected
    

    以下のコマンドで, centosplus を無効にして kernel をアップデートすればよい.

    $ sudo yum --disablerepo=centosplus update 'kernel*'
    
    もし, centosplus から最新のカーネルをインストールしていたら, バージョン番号を添えて yum install をすればよかったかな.
    $ sudo yum install kernel-2.6.32-504.3.3.el6.x86_64
    

    2014-11-19

    RPMのスペックファイルを自動修正

    あるサーバでは, httpd の SUEXEC_UID_MIN を 500 より小さく設定しなければならず, httpd が更新されるたびに RPM をビルドしなおしている. 修正するスクリプトを作ってみた.
    #! /bin/bash
    
    date="$(LANG=C date +'%a %b %d %Y')"
    
    sed -i.suexec \
     -e 's/^Release: \(.*\)/Release: \1o/' \
     -e 's/--with-suexec-uidmin=500/--with-suexec-uidmin=499/' \
     -e '/^%changelog/a\'"* $date Our Auto Patch Script \n- change SUEXEC_UID_MIN 500 -> 499\n" httpd.spec
    

    2014-10-07

    systemctl と chkconfig

    EL7になって, サービス関連の操作が systemd になり, これまでとコマンドが変わってしまった. (互換性のため, service, chkconfig をつかってもフォワードしてくれる)
    EL6までEL7
    サービスの開始 service name start systemctl start name
    サービスの停止 service name stop systemctl stop name
    サービスを起動時に開始する chkconfig name on systemctl enable name
    サービスを起動時に開始しない chkconfig name off systemctl disable name
    サービス一覧 chkconfig --list systemctl list-unit-files
    サービスの状態の表示 service name status
    chkconfig --list name
    systemctl status name

    2014-08-16

    RHEL7にてNFS上にホームディレクトリをおくときの設定

    RHEL7のクローンであるSL7では, ホームディレクトリをNFS上においていると, SSHでログインする際に公開鍵暗号による認証が使用できない. 以下の設定で, 回避する.
    $ sudo setsebool -P use_nfs_home_dirs on
    

    2014-08-15

    Cadence Virtuoso on SL7

    RHEL7のクローンであるSL7にて, Cadence Virtuoso 6.1.5 を動作させた. Virtuoso の起動時, sysnameというシェルスクリプトがKernelのバージョンからOSの種類を判定しているのだが, 3.10は対応していなかった. 以下のように書き換えることで, SL7でも起動するようになった.
    --- IC06.15.171-615_lnx86.Hotfix/oa_v22.41.033/bin/sysname 2013-03-27 09:19:10.000000000 +0900
    +++ IC06.15.171-615_lnx86.Hotfix/oa_v22.41.033/bin/sysname 2014-08-15 14:49:14.259021502 +0900
    @@ -199,7 +199,7 @@
          case $version in
              2.4*) compiler="_gcc411"
             sysname="linux_rhel30$compiler"; sysnames="$sysname linux$compiler";;
    -         2.6*|3.0*) compiler="_gcc44x"
    +         2.6*|3.0*|3.10.*) compiler="_gcc44x"
                           sysname="linux_rhel40$compiler"; sysnames="$sysname linux$compiler";;
              *)    check_global;;
          esac;;
    
    
    バージョン番号がハードコードされており, 2.6 または 3.0 の場合には gcc-4.4, 2.4 の場合には, gcc-4.1.1 を使用すると書かれているようだ. ここに, 3.10 を追加した.

    ところで, -64オプションを付けておくと, 64ビット版で動作することが分かった. これまで, 32ビットのライブラリをいちいちインストールしていたのだが, その必要はなかったようだ.

    2014-04-01

    Oracle_VM_VirtualBox_Extension_Pack を展開

    Extension Pack をわざわざ root で Virtualbox を起動してインストールするのは面倒である. 以下のようにして展開すれば良いかもしれない.
    $ sudo mkdir /usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack
    $ cd /usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack
    $ sudo tar xz <~/downloads/Oracle_VM_VirtualBox_Extension_Pack-4.3.10-93012.vbox-extpack
    

    2013-10-18

    vim with NFS4 home

    ホームディレクトリを NFS4 でマウントしていると, vim を終了した時に以下のエラーが出てくる.
    E137: Viminfo file is not writable: /home/user/.viminfo
    これは何なのだろう? このエラーが時々出るが, エラーが鬱陶しい以外には問題がない.

    2013-06-21

    iptables にて OS ごとに異なるルールを適用

    iptables は, Linux でのルールベースのパケットフィルタツールである. パケット毎にTCPヘッダやペイロードにおいて条件を検査し, 条件にマッチするものに操作 (破棄, 拒否, 許可など) を加えることができる. ポート番号や送信元・送信先IPアドレスによる条件を作成することが多いが, ここでは, OS毎に条件を変える方法を紹介したい. 例えば, 以下のような使用方法が考えられる.
    • ウイルス感染が多いと言われる Windows からのパケットのみを除去する.
    • Linux 上でのみ動作するソフトが使用するポートを開ける.
    • Windows へは DHCP にてプロキシを通知できるので80番ポートは塞ぎ, その他のOSには80番ポートを開ける.

    今回使用するOSの判別方法は, TTL によるものである. ユーザやソフトウェアが細工をすることでこの判別を回避することは可能であることには注意していただきたい. TTL による OS 判別はこのページに記されている; ping(2)――設定や構成確認にも使える. 以下の表の様にして判別できる.

    1-64Linux
    65-128Windows
    129-255Mac OS X, Solaris, BSD など (iPhone はここに含まれる)

    iptables には, ttl と呼ばれるモジュールがあり, 例えば FORWARD を OS 毎に分ける場合は, 以下のように設定する.

    -A FORWARD -m ttl --ttl-lt  65 -g FORWARD-linux
    -A FORWARD -m ttl --ttl-lt 129 -g FORWARD-windows
    -A FORWARD                     -g FORWARD-mac
    

    2013-06-18

    RHEL6 で google-chrome のアップデートができなくなった

    どうやら, google-chrome については, 今後は RHEL6 (とそのクローン) のサポートがされないらしい.
    $ sudo yum update google-chrome-stable 
    Loaded plugins: fastestmirror, security
    Loading mirror speeds from cached hostfile
     * sl: ftp1.scientificlinux.org
     * sl-security: ftp1.scientificlinux.org
    Setting up Update Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package google-chrome-stable.x86_64 0:27.0.1453.110-202711 will be updated
    ---> Package google-chrome-stable.x86_64 0:28.0.1500.45-205727 will be an update
    --> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.15)(64bit) for package: google-chrome-stable-28.0.1500.45-205727.x86_64
    --> Finished Dependency Resolution
    Error: Package: google-chrome-stable-28.0.1500.45-205727.x86_64 (google-chrome)
               Requires: libstdc++.so.6(GLIBCXX_3.4.15)(64bit)
     You could try using --skip-broken to work around the problem
     You could try running: rpm -Va --nofiles --nodigest
    
  • オブソリートなOSだって?!… Google ChromeはなぜRHEL 6のサポートをやめたのか
  • Jan Wildeboer の投稿
  • 2013-06-29 追記.
    Install Chromium (with Pepper Flash) on CentOS/Red Hat (RHEL) 6.4 というページが見つかった. RHEL 向けに, Chromium の RPM を作ってくれた人がいるようだ. ここかれ提供されている chromium も, /opt/chromium/ にインストールするようだ. google-chrome-stable をインストールしたままでも依存関係などは特に問題無さそう. ユーザ毎の設定ファイルがどのように扱われるのかが気になる所だったが, 設定ファイルは ~/.config/chromium/ へ作成するようなので, 気軽に試してみれば良さそうだ.
    インストール方法を説明しておく.

    $ wget http://people.centos.org/hughesjr/chromium/6/chromium-el6.repo
    # cp chromium-el6.repo /etc/yum.repos.d/
    # yum install chromium
    
    chromium では, PDFを描画するエンジンが含まれていない. これまで google-chrome を軽いPDFビュワーとしても使っていたので, 残念だ.

    2013-04-30

    PDFに含まれる画像を取り出す方法

    RHEL (CentOS や Scientific Linux を含む) にインストールされている evince には, PDF 中に含まれる画像をファイルとして取り出す機能が実装されている. 文字や図形の情報を含んで画像を生成する場合はスクリーンショットを使用するが, PDF の画像のみを取り出す場合には便利である.
  • PDF を evince で開く.
  • 画像の部分でマウス左ボタンを押す.
  • マウスを動かし, 適当な端末まで移動する.
  • 左ボタンを離す. (要するに, 画像を端末へドラッグ&ドロップする.)
    このとき, 画像がファイルとして保存され, 端末にはパスが入力される.
  • なお, evince では PostScript を開くこともできるが, このときには, 画像を取り出すことができないようだ.

    FontPack910_jpn_i846-linux を展開

    RHEL や CentOS に英語の acroread をインストールすると, 日本語のフォントが付属していないため, フォントが埋め込まれていない PDF を閲覧できない. 日本語の acroread は古いバージョンしか提供されていないので, 最新の acroread を日本語対応にしたい. FontPack910_jpn_i486-linux.tar.bz2 が Adobe のサイトで配布されているが, 展開方法が明示されておらず, どのようにインストールすればよいか分からない. そこで, 試行錯誤した方法を示す.

    $ tar xvjf FontPack910_jpn_i486-linux.tar.bz2 
    JPNKIT/
    JPNKIT/LANGJPN.TAR
    JPNKIT/LANGCOM.TAR
    JPNKIT/LICREAD.TXT
    JPNKIT/BINCOM.TAR
    JPNKIT/INSTALL
    
    どうやら, TAR が3個含まれているらしい. これをどこかのディレクトリで展開すれば良いのだろう.
    $ tar tf JPNKIT/LANGJPN.TAR 
    Adobe/Reader9/Resource/CIDFont/
    Adobe/Reader9/Resource/CIDFont/KozMinPr6N-Regular.otf
    
    Adobe/Reader9/ というディレクトリが含まれているので, きっと /opt/Adobe/Reader9/ を指しているのだろう. というわけで, /opt/ へ移動して, 展開することにする.
    # cd /opt/
    # tar xf /tmp/JPNKIT/BINCOM.TAR
    # tar xf /tmp/JPNKIT/LANGJPN.TAR
    # tar xf /tmp/JPNKIT/LANGCOM.TAR
    
    この後, acroread を再起動したら, 日本語の PDF も閲覧できるようになった.