aptやrpmでのsudo・root権限の使えないLinux環境・レンタルサーバーにcpioをマニュアルでインストールする方法について紹介します。
CentOS 8のエックスサーバーにcpioをインストールする手順を例に説明していきます。
cpioコマンドを実行しようとすると、コマンドが見つからない(command not found)エラーや、許可がありませんエラーになる場合があります。
$ cpio
-bash: cpio: コマンドが見つかりません
$ cpio
-bash: cpio: command not found
$ cpio
-bash: /usr/bin/cpio: 許可がありません
$ cpio
-bash: /usr/bin/cpio: Permission denied
そこで、cpioをsudo・root権限を使わずに、マニュアルでカレントディレクトリ・ユーザーディレクトリにインストールをします。
以下より各Linuxディストリビューションおよびバージョンにおけるパッケージのダウンロード先が確認できます。
CentOSのバージョンが7なのか8なのか、アーキテクチャは何かなどを確認します。
例として、今回はレンタルサーバーであるエックスサーバーに入れます。私のエックスサーバーのサーバーのバージョンおよびオペレーティングシステム、アーキテクチャは以下の通りです。
$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
$ arch
x86_64
以下よりCentOS 7または8のrpmファイルのダウンロードURLを見つけます。
cpio-2.11-28.el7.x86_64.rpm CentOS 7 Download
cpio-2.12-11.el8.x86_64.rpm CentOS 8 Stream Download
通常は、CentOSにマニュアルでrpmパッケージをインストールする場合にはcpioを使いインストールするため、cpioにアクセスできることが必要です。
今回の場合はcpioがない状態でcpioを使わずにcpioをインストールするわけなので、レンタルサーバー上で直接それを行うことは不可能であることから、一度他のLinuxマシン、普段使っているマシンでも、VPSでも、WSL Bashでも構いません、にcpioをroot権限でインストールし、cpioを使ってcpioをアンパックします。
レンタルサーバー以外のLinuxマシンで以下。
まずパッケージをダウンロードします。
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/cpio-2.11-28.el7.x86_64.rpm
パッケージをアンパックします。
カレントディレクトリに”usr”フォルダ・ディレクトリが作られており、”./usr/bin/cpio”のバイナリファイルも作られていることが確認できるはずです。
rpm2cpio cpio-2.11-28.el7.x86_64.rpm | cpio -idv
生成されたディレクトリをレンタルサーバーに転送します。
これはrsyncなりFTPなり、あるいはファイルアップローダーなどご自由なやり方で行ってください (以下例)
rsync -e 'ssh -p 10022' -r usr user@sv2031.xserver.jp:/home/user/pg/
レンタルサーバー上でディスティネーションにディレクトリがアップデートされていることを確認し、
cpioのパスを指定しcpioが実行できることを確認します。
$ /home/user/pg/usr/bin/cpio --help
Usage: cpio [OPTION...] [destination-directory]
GNU `cpio' copies files to and from archives