LoginSignup
4
3

More than 5 years have passed since last update.

CentOS に ptrash をインストールする

Last updated at Posted at 2014-08-12

:warning: 警告 (2015-07-18 記載)

以下の理由から、ptrash の利用は rm に比べて危険で不便だと判断したため、私はすでに使っておりません。記事は残しておきますが、ptrash の利用について積極的に推奨は致しません。

  • 常に rm -rf と同等なので、誤ってディレクトリなどを削除してしまう可能性がある。
  • 常に rm -rf と同等なので、権限不足で削除できなかった場合にもエラーメッセージが表示されない。
  • 誤って削除した場合、後述の通り 復元できないことがある。

導入

ptrash は、Fedora に公式採用されているごみ箱送りコマンドです。rmコマンドはファイルやディレクトリをそのまま削除しますが、ptrashコマンドは~/.trashに移動します。1

Fedoraの一部となっているptrashですが、CentOSの標準のYumリポジトリなどには存在しません。そこで、Fedoraの標準のYumリポジトリからソースRPMパッケージを取得し、CentOS上でビルドしてRPMパッケージを作成します。実運用環境と同じバージョンのOSがインストールされている開発環境があれば、ビルドまでは開発環境で行い、作成したRPMパッケージを実運用環境にアップロードしてインストールすると良いでしょう。

リポジトリ定義ファイル (*.repo) のシンタックスハイライト

CentOS標準のYumリポジトリで提供されているテキストエディタのうちviVim以外のエディタは、初期状態で.repoファイルのシンタックスハイライトが機能しません。以下のように設定ファイルの編集などを行い、シンタックスハイライトを有効にします。

gedit

ファイル名が.repoで終わるファイルをINIファイルとして開くようにし、一行コメントアウト開始文字に#を追加します。

/usr/share/gtksourceview-*/language-specs/ini.lang
                    <!--##############
                        ## 以上省略 ##
                        ##############-->

  <metadata>
    <property name="mimetypes">text/x-ini-file;application/x-ini-file</property>
    <property name="globs">*.ini;*.repo</property><!-- *.repo を追加 -->
    <property name="line-comment-start">;</property>
  </metadata>

                    <!--##############
                        ##   中略   ##
                        ##############-->

  <definitions>
    <context id="line-comment" style-ref="comment" end-at-line-end="true">
      <start>;</start>
    </context>
    <!-- ここから -->
    <context id="bash-line-comment" style-ref="comment" end-at-line-end="true">
      <start>#</start>
    </context><!-- ここまで -->
    <context id="group" style-ref="keyword">
      <start>^\[</start>
      <end>\]$</end>
    </context>

                    <!--##############
                        ##   中略   ##
                        ##############-->

    <context id="ini">
      <include>
        <context ref="line-comment"/>
        <context ref="bash-line-comment"/><!-- 追加 -->
        <context ref="group"/>
        <context ref="non-standard-key"/>
        <context ref="language"/>
        <context ref="variable"/>
        <context ref="boolean-value"/>
        <context ref="single-quoted-string"/>
        <context ref="double-quoted-string"/>
        <context ref="decimal-number"/>
        <context ref="integer"/>
      </include>
    </context>
  </definitions>
</language>

nano

Arch Linuxnano-syntax-highlighting-gitパッケージを利用します。2 3

# INIファイルのシンタックスハイライトを行う設定ファイルをダウンロード
wget https://github.com/scopatz/nanorc/raw/master/ini.nanorc
# .repo で終わるファイルをINIファイルとして扱うようにする
sed --in-place 's/)\$/|repo)$/' ini.nanorc
# シンタックスハイライトを行う設定ファイル保管場所に移動
sudo mv ini.nanorc /usr/share/nano/
# nanoの個人設定ファイルから読み込むようにする
echo $'\n\n'## INI files$'\n'include "/usr/share/nano/ini.nanorc" >> ~/.nanorc

Emacs

個人設定ファイルを新規作成 (または追記) し、ファイル名が.repoで終わるファイルをconf-modeで開くようにする設定を追加します。4

~/.emacs
;; .repo ファイルを Conf モードで開く
(add-to-list 'auto-mode-alist '("\\.repo$" . conf-mode))

Kate

ファイル名が.repoで終わるファイルをINIファイルとして開くようにします。

/usr/share/kde*/apps/katepart/syntax/ini.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc;*.repo" mimetype="" version="1.1" kateversion="2.0" author="Jan Janssen (medhefgo@web.de)" license="LGPL"> <!-- extensions属性値に *.repo を追加 -->

                    <!--##############
                        ## 以下省略 ##
                        ##############-->

Fedoraのソースリポジトリを追加

まずFedora Project - GPG 鍵の一覧から、Fedoraの最新安定版 (2014-08-12現在 Fedora 20) のバージョン番号に対応する公開鍵のURLを捜し、取り込みます。

# Fedora20の公開鍵を取り込む
sudo rpm --import https://fedoraproject.org/static/246110C1.txt

以下のようにリポジトリ定義ファイルを新規作成 (または追記) し、リポジトリを追加します。

/etc/yum.repos.d/fedora.repo
[fedora-source-20]
name=Fedora 20 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/20/Everything/source/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-source-20&arch=$arch
failovermethod=priority
enabled=0

ビルド

ビルドの際、コマンドが見つからなかったりビルドに失敗するようであれば、rpmbuildコマンドGCCをインストールします。

sudo yum install rpm-build gcc

途中、rpmコマンドで署名を検証しています。ptrash-1.0-8.fc20.src.rpm: rsa sha1 (md5) pgp md5 OKなどと表示されれば問題ありません。署名の検証ができなかったときは、pgpが返りません。5

# ソースRPMパッケージの取得
yumdownloader --source --enablerepo=fedora-source-20 ptrash --destdir ~/rpmbuild/SRPMS
# 署名の検証
rpm --checksig ~/rpmbuild/SRPMS/ptrash-*.src.rpm
# ビルドに必要なパッケージのインストール
sudo yum-builddep ~/rpmbuild/SRPMS/ptrash-*.src.rpm
# ビルド
rpmbuild --rebuild --clean ~/rpmbuild/SRPMS/ptrash-*.src.rpm

インストール

# インストール
sudo rpm --upgrade --verbose --hash $(ls -v --reverse ~/rpmbuild/RPMS/*/ptrash-[0-9]*.rpm | head --lines=1)
# ソースRPMパッケージの削除
ptrash ~/rpmbuild/SRPMS/ptrash-*.src.rpm

RPMパッケージ (*.rpm) をアップロードし、実運用環境にもインストールします。

ptrashコマンドの使い方

ptrashコマンドは、rmコマンドと同様に、複数のファイルを指定したりワイルドカードを利用することができます。

コマンド 効果
ptrash file1 ファイル、またはディレクトリfile1~/.trashに移動します。rm -rf file1 (rm --recursive --force file1) と同等で、ディレクトリの場合や書き込み権限が無い場合でも警告なしに移動します。 ごみ箱 (~/.trash) に同名のファイルが存在する場合は上書きされ、同名のディレクトリが存在する場合は統合されます。
sudo ptrash file2 親ディレクトリに書き込み権限が無い場合、sudoコマンドを使って、rootユーザーとして削除することが多いと思います。CentOSの初期設定ではsudoersalways_set_home フラグが on となっているため、この場合削除したファイル・ディレクトリは/root/.trashに移動されることになります。
ptrash -i file1 file1がファイルの場合に、移動するか問い合わせます (プロンプトを表示します)。rm -di (rm --dir --interactive=always) などとは異なり、file1がディレクトリの場合は問い合わせずに移動します。
ptrash -r file1 ptrash --restore file1 ~/.trash/.trashdbに記録されている情報をもとに、ごみ箱 (~/.trash) 内のファイル・ディレクトリfile1を元の場所に戻します。 前述のとおりディレクトリを統合したりしているため、精度は期待できません。
ptrash -d file1 ptrash --delete file1 ごみ箱 (~/.trash) 内のファイル・ディレクトリfile1を削除します。

参考にさせていただいたページ

4
3
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
4
3