RPMを展開(rpmdev-extract)

表題の通り。先日は`rpm2cpio`コマンドで展開したが、今回は`rpmdev-extract`で展開を行う。

■ 環境

CentOS 6.9

■ rpmdev

下記パッケージをインストールする。

$ sudo yum install rpmdevtools

このパッケージには下記のコマンドが含まれる。

$ rpm -ql rpmdevtools | grep bin
/usr/bin/annotate-output
/usr/bin/checkbashisms
/usr/bin/licensecheck
/usr/bin/manpage-alert
/usr/bin/rpmargs
/usr/bin/rpmdev-bumpspec
/usr/bin/rpmdev-checksig
/usr/bin/rpmdev-cksum
/usr/bin/rpmdev-diff
/usr/bin/rpmdev-extract
/usr/bin/rpmdev-md5
/usr/bin/rpmdev-newinit
/usr/bin/rpmdev-newspec
/usr/bin/rpmdev-packager
/usr/bin/rpmdev-rmdevelrpms
/usr/bin/rpmdev-setuptree
/usr/bin/rpmdev-sha1
/usr/bin/rpmdev-sha224
/usr/bin/rpmdev-sha256
/usr/bin/rpmdev-sha384
/usr/bin/rpmdev-sha512
/usr/bin/rpmdev-sum
/usr/bin/rpmdev-vercmp
/usr/bin/rpmdev-wipetree
/usr/bin/rpmelfsym
/usr/bin/rpmfile
/usr/bin/rpminfo
/usr/bin/rpmls
/usr/bin/rpmpeek
/usr/bin/rpmsodiff
/usr/bin/rpmsoname
/usr/bin/spectool
$

この中の`rpmdev-extract`コマンドを利用すると、容易にRPMを添加することができる。

$ rpmdev-extract [package.rpm]

上記のように実行すると、ローカルディレクトリ配下にパッケージ名称のディレクトリが作成され、その中にファイルが展開される。

以上。

■ 関連

RPMを展開(rpm2cpio)

mysqldump: Got errno 32 on write

表題のエラーが出た。

■ 環境

  • MySQL 5.6.34
  • Linux

■ mysqldump

データをバックアップしようとして下記のようなコマンドで実行しようとした。

$ mysqldump -uXXXXX -pXXXXX -hXXXXXXXX database | gzip > backup/$(date '+%Y%m%d').dump.gz

このように実行しようとしたところ、表題のエラーメッセージが出力された。あれ?と思ったが単に出力先のディレクトリを作成していないだけであった…。”backup“ディレクトリに出力しようとしていたのを忘れていたようだ。

ディレクトリに出力するのであれば、事前にちゃんと作成しておこう。またそのディレクトリに書き込み権限があるかも確認しておこう。

以上。

RPMを展開(rpm2cpio)

表題の通り。`rpm2cpio`コマンドでRPMをインストールせずに展開する。

■ 環境

  • CentOS 6.9

■ rpm2cpio

先日のSRPMパッケージを用いて行う。

$ ls -l httpd-2.2.15-60.el6.centos.5.src.rpm

`rpm2cpio`コマンドについて確認。

$ which rpm2cpio
/usr/bin/rpm2cpio
$
$ rpm -qf /usr/bin/rpm2cpio
rpm-4.8.0-55.el6.x86_64
$

通常インストールされているパッケージだけで十分なようである。

実際には下記のように展開する。

$ mkdir tmp
$ cd tmp
$ rpm2cpio ../httpd-2.2.15-60.el6.centos.5.src.rpm | cpio -id
14230 blocks
$

上記で展開された。

以上。

SRPMを取得

表題の通り。SRPMを取得したい。

■ 環境

  • CentOS 6.9

■ yumdownloader

`yumdownloader`コマンドで取得することができる。まずはパッケージが入っているか確認から。

$ sudo yum list yum-utils
  :
Installed Packages
yum-utils.noarch     1.1.30-40.el6    @anaconda-CentOS-201703281317.x86_64/6.9
$

この環境では”yum-utils“パッケージがインストールされていたので`yumdownloader`コマンドもインストール済みである。

$ which yumdownloader
/usr/bin/yumdownloader
$

では、SRPMを取得する。

$ yumdownloader --source nginx

上記でダウンロードできたのだが、これはepelレポジトリからのダウンロードからであった。下記ファイルを見てみると”epel-source“のレポジトリが有効であった。

$ cat /etc/yum.repos.d/epel.repo
  :
[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
$

CentOS-Base.repo“ではソースを取得するレポジトリは有効になっていない、そもそも記載されていないので追記する必要がある。

$ cat /etc/yum.repos.d/CentOS-Base.repo
  :
[base-source]
name=CentOS-$full_releasever - Base source
baseurl=http://vault.centos.org/6.9/os/Source/
gpgcheck=1
gpgkey=http://vault.centos.org//RPM-GPG-KEY-CentOS-6
priority=1
enabled=1

[updates-source]
name=CentOS-$full_releasever - Updates Source
baseurl=http://vault.centos.org/6.9/updates/Source/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
priority=1
enabled=1
$

これでhttpdのSRPMも取得することはできた。

以上。

インストールされるモジュール一覧

表題の通り。インストール前にRPMだけ存在するのだが、これで何がインストールされるのかを事前に知りたい。

■ 環境

  • CentOS 6.9

■ rpm

既にインストール済みのRPMパッケージに関しては、下記コマンドでインストールされたモジュールの一覧が取得できる。

$ rpm -ql [パッケージ]

未インストールではあるが手元にRPMパッケージのみがある場合、上記コマンドでは実行できないので更なるオプションが必要である。

$ rpm -qlp [パッケージ]

すっかり”-p“を忘れていたのでメモ。

以上。

■ 関連

パッケージでインストールされるモジュール