LoginSignup
2
1

More than 5 years have passed since last update.

sudo不要のコマンドインストール (unrarの場合)

Last updated at Posted at 2019-05-07

Linux系サーバにrar形式のファイルを展開するためのコマンドをlinux環境に非su権限でインストールする.
インストール先を変更するだけで済む事例.

なぜPermission deniedされるのか

今回の場合は,単に保護されたディレクトリ内に新しくファイルを作ろうとしたから.
ファイルを作る場所を変え,かつその場所が環境変数PATHに登録されていれば,この問題を避けることができる.

準備

ホームディレクトリなどに次のディレクトリを作成する.

  • ソースコード保存先(/home/{username}/packagesなど)
  • 実行ファイルインストール先(/home/{username}/binなど)

ソースコードのダウンロード

ソースコード保存先に,このサイトにあるtar.gz形式ファイルのダウンロード.

wget http://www.rarlab.com/rar/unrarsrc-{version}.tar.gz

tar.gz解凍

保存先にてtarコマンドの実行.解凍用オプション(zxvf)は定型文のように覚えてしまう.

tar zxvf http://www.rarlab.com/rar/unrarsrc-{version}.tar.gz

unrarディレクトリが作成されているので,そこに移動.

makefileの編集

makeコマンドによってmakefileを用いたコマンドの作成がされるので,一度unrar内のファイルmakefileをテキストエディタで開く.DESTDIR=の部分だけ下記のように編集して保存する.

makefile
#DESTDIR=/usr ###←もともとの文コマンドの文頭に#をつける.
DESTDIR=/home/{username} ###←/binを除く部分を書く.

実行ファイル作成

makeで実行.

make

これにより,makefileで:の前に定義されるターゲットのうち,一番初めに書かれているものかつドットから始まっていないものを実行する.unrarのmakefileの場合,次が該当.

makefile
# ↓飛ばす
.cpp.o:
    $(COMPILE) -D$(WHAT) -c $<

# ↓実行される
all:    unrar

:   :   :

# ↓allで指定されたunrarターゲット
unrar:  clean $(OBJECTS) $(UNRAR_OBJ)
    @rm -f unrar
    $(LINK) -o unrar $(LDFLAGS) $(OBJECTS) $(UNRAR_OBJ) $(LIBS) 
    $(STRIP) unrar

make後,コマンド出力の末尾に"unrar"と書かれている(=unrarが正常に生成された)ことを確認して次へ.

実行ファイルのインストール

こちらもmakeで実行.

make install

makefile内の次のターゲットが実行される.

makefile
# ↓makeコマンドで指定されたターゲット
install:    install-unrar

# ↓installで指定されたターゲット
install-unrar:
            install -D unrar $(DESTDIR)/bin/unrar

ここでDESTDIRを用いていることが分かる.
実行後,/home/{username}/bin内にunrarが生成される.

PATHの登録(.bashrcの編集)

/home/{username}/binをPATHに登録し,unrarコマンドが使えるようにする.
homeディレクトリに.bashrcがあることを確認.ドットから始まる隠しファイルなので,lsコマンドに-aオプションをつける.

ls -a

このファイルをテキストエディタで開き,次の一行を追加して保存する.

.bashrc
export PATH="$PATH:/home/{username}/bin"

.bashrcはユーザがログイン時に自動的に実行されるコマンドを記載するもの.ターミナルのスタイルを変えたり,長いコマンドを簡略化するエイリアスを登録したり,そして何より環境変数の変更・追加を行うなどの目的で使われる.
今回は,ログイン時に元々のPATHに/home/{username}/binを追記するために使う.

動作確認

再ログインするか,.bashrcを強制的に実行する.

source ~/.bashrc

コマンドが使えるか(=どこにコマンドがあるかを教えてくれるか)を確認.

which unrar ###→ /home/{username}/bin/unrarと返せばOK.

unrarでrarファイルを解凍する.

unrar e xxx.rar

以上.

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1