プロが教える店舗&オフィスのセキュリティ対策術

パスの設定方法に関して、
アドバイスいただきたいことがあり、
質問させていただきます。

qt4をyumでインストールしたのですが、
パスを確認すると、
qt4よりqt3の優先度の方が高くなっており、
プログラムをコンパイルする際に、
qt4が認識されず困っております。

設定されているパスの表示方法(echo $PATH)や、
パスの追加方法は分かったのですが、

$ PATH=$PATH:"追加したいパス"
$ export PATH

パスの優先度を決めるにはどうしたらよいかを、
調べる事ができませんでした。
qt3より先に、qt4を認識させるために、
パスの優先度を変更したいです。
ご存知でしたら教えていただきえると
ありがたい次第です。

OSはCentOS5系を使用しています。
宜しくお願い致します。

A 回答 (5件)

#3です。



おめでとうございます。
解決してよかったですね。

qmakeとqmake-qt4の件ですが、
CentOS,Fedoraともに使っていないので以下は想像です。

うちの環境ですと、
========================================================
% ls -l /usr/bin/qmake*
lrwxrwxrwx 1 root root 21 2009-01-11 12:45 /usr/bin/qmake -> /usr/lib/qt/bin/qmake*
lrwxrwxrwx 1 root root 27 2009-01-20 14:59 /usr/bin/qmake-qt4 -> /usr/lib/qt-4.4.3/bin/qmake*
% ls -l /usr/bin/*-qt4
lrwxrwxrwx 1 root root 31 2009-01-20 14:59 /usr/bin/assistant-qt4 -> /usr/lib/qt-4.4.3/bin/assistant*
lrwxrwxrwx 1 root root 35 2009-01-20 14:59 /usr/bin/assistant_adp-qt4 -> /usr/lib/qt-4.4.3/bin/assistant_adp*
lrwxrwxrwx 1 root root 30 2009-01-20 14:59 /usr/bin/designer-qt4 -> /usr/lib/qt-4.4.3/bin/designer*
lrwxrwxrwx 1 root root 30 2009-01-20 14:59 /usr/bin/linguist-qt4 -> /usr/lib/qt-4.4.3/bin/linguist*
lrwxrwxrwx 1 root root 30 2009-01-20 14:59 /usr/bin/lrelease-qt4 -> /usr/lib/qt-4.4.3/bin/lrelease*
lrwxrwxrwx 1 root root 29 2009-01-20 14:59 /usr/bin/lupdate-qt4 -> /usr/lib/qt-4.4.3/bin/lupdate*
lrwxrwxrwx 1 root root 25 2009-01-20 14:59 /usr/bin/moc-qt4 -> /usr/lib/qt-4.4.3/bin/moc*
lrwxrwxrwx 1 root root 31 2009-01-20 14:59 /usr/bin/pixeltool-qt4 -> /usr/lib/qt-4.4.3/bin/pixeltool*
lrwxrwxrwx 1 root root 42 2009-01-20 14:59 /usr/bin/qcollectiongenerator-qt4 -> /usr/lib/qt-4.4.3/bin/qcollectiongenerator*
lrwxrwxrwx 1 root root 27 2009-01-20 14:59 /usr/bin/qdbus-qt4 -> /usr/lib/qt-4.4.3/bin/qdbus*
lrwxrwxrwx 1 root root 34 2009-01-20 14:59 /usr/bin/qdbuscpp2xml-qt4 -> /usr/lib/qt-4.4.3/bin/qdbuscpp2xml*
lrwxrwxrwx 1 root root 33 2009-01-20 14:59 /usr/bin/qdbusviewer-qt4 -> /usr/lib/qt-4.4.3/bin/qdbusviewer*
lrwxrwxrwx 1 root root 34 2009-01-20 14:59 /usr/bin/qdbusxml2cpp-qt4 -> /usr/lib/qt-4.4.3/bin/qdbusxml2cpp*
lrwxrwxrwx 1 root root 36 2009-01-20 14:59 /usr/bin/qhelpconverter-qt4 -> /usr/lib/qt-4.4.3/bin/qhelpconverter*
lrwxrwxrwx 1 root root 36 2009-01-20 14:59 /usr/bin/qhelpgenerator-qt4 -> /usr/lib/qt-4.4.3/bin/qhelpgenerator*
lrwxrwxrwx 1 root root 27 2009-01-20 14:59 /usr/bin/qmake-qt4 -> /usr/lib/qt-4.4.3/bin/qmake*
lrwxrwxrwx 1 root root 28 2009-01-20 14:59 /usr/bin/qt3to4-qt4 -> /usr/lib/qt-4.4.3/bin/qt3to4*
lrwxrwxrwx 1 root root 30 2009-01-20 14:59 /usr/bin/qtconfig-qt4 -> /usr/lib/qt-4.4.3/bin/qtconfig*
lrwxrwxrwx 1 root root 25 2009-01-20 14:59 /usr/bin/rcc-qt4 -> /usr/lib/qt-4.4.3/bin/rcc*
lrwxrwxrwx 1 root root 25 2009-01-20 14:59 /usr/bin/uic-qt4 -> /usr/lib/qt-4.4.3/bin/uic*
lrwxrwxrwx 1 root root 26 2009-01-20 14:59 /usr/bin/uic3-qt4 -> /usr/lib/qt-4.4.3/bin/uic3*
lrwxrwxrwx 1 root root 33 2009-01-20 14:59 /usr/bin/xmlpatterns-qt4 -> /usr/lib/qt-4.4.3/bin/xmlpatterns*
========================================================
となっていて、/usr/lib/qt-4.4.3/bin にPATHを加えない代わりに
/usr/bin/*-qt4 と名前を変えてリンクを張っているようです。

ので、たぶん混在しないための工夫として名前を変えているんじゃないでしょうか?
CentOSとFedoraでその工夫の仕方が違うのだと思います。
/usr/lib/qt4/bin/以下のファイルは、実質的には同じものだと思います。

詳しくは、qt4のインストール時に実行されるのスクリプトか、
パッケージのビルドスクリプト(SRPMの中身 .specファイルなど)を見れば分かると思うので、
興味があれば見てみてください。

あと、名前が違って困らないのか?という疑問もあるかもしれませんが、
/usr/lib/pkgconfig/Qt*.pc (/usr/lib/qt4/pkgconfig/以下かも)
に、どのコマンドを使うかの定義みたいなのがありますので心配無用です。
qt44.shの中にもあったようですが、
$ /usr/bin/pkg-config --variable=prefix QtCore
のように configure スクリプト内で pkg-config コマンドを使ってどのコマンドに対応しているか判断してくれるようです。
    • good
    • 0
この回答へのお礼

bcoffeeさん!

ご丁寧な御意見ありがとうございます。
大変参考になりました。

qmakeとqmake-qt4の件ですが、
御意見、とても的を得ているように感じました。
興味があるないようですので、
いただいた内容を参照し、更に調べてみたいと思います。

本当にありがとうございました。
とても勉強になりました。
20Ptではなく、200Ptくらいをもらってほしいくらいです。

お礼日時:2009/03/05 11:08

#3です。


一時的に使いたい、コンパイルしたい場合は
端末(Terminalなど)でコマンドを打てば良いです。

使いつづける場合、アプリケーションを立ち上げる前に毎回設定しないと動かない場合もあるので、
http://www.mythtv.org/pipermail/mythtv-users/200 …
にあるようなスクリプトをコピーして、
/etc/profile.d/qt44.sh のようなファイルを作ってしまえば、
常に有効になると思います。
(/etc/profile.dのなかにqt3のQTDIRを設定しているファイルがあるかもしれません。)
これだとすべてのユーザに有効になってしまうので、
1アカウントだけ使いたいという時は、~/.bashrc なんかに書いておくのもいいと思います。

また、リンク先はQTDIRにqt4を設定してしまっているので、
QTDIRをQT4DIRに変更して使った方がいいかもしれません。
(QT3のアプリケーションに影響するかもしれないので)

当方、Slackwareな環境なので未確認です。申し訳ないです。
ちなみにうちの環境は、/etc/profile.d/qt4.shというファイルがあって
==== /etc/profile.d/qt4.sh =====
#!/bin/sh
# Environment variables for the Qt package.
#
# It's best to use the generic directory to avoid
# compiling in a version-containing path:
if [ -d /usr/lib/qt4 ]; then
QT4DIR=/usr/lib/qt4
else
# Find the newest Qt directory and set $QT4DIR to that:
for qtd in /usr/lib/qt-* ; do
if [ -d $qtd ]; then
QT4DIR=$qtd
fi
done
fi
if [ ! "$CPLUS_INCLUDE_PATH" = "" ]; then
CPLUS_INCLUDE_PATH=$QT4DIR/include:$CPLUS_INCLUDE_PATH
else
CPLUS_INCLUDE_PATH=$QT4DIR/include
fi
PATH="$PATH:$QT4DIR/bin"
export QT4DIR
export CPLUS_INCLUDE_PATH
=================================
となっていて、一応QT3とQT4の住み分けが出来ております。

この回答への補足

bcoffeeさん!

ありがとうございました。
すごく分かりやすかったです。本当に感謝しております。

さて、リンク先にもありましたとおり、
「QTDIRをQT4DIRに変更」する部分に留意し、
「vi /etc/profile.d/qt44.sh」で、
シェルスクリプトを作成し問題を解決できました!
ありがとうございました!

図々しく本当に恐縮なのですが、
このqt4のインストール関係でどうしても分からないことがあり、
もう1つだけ教えてください。

Fedora9にqt4をインストールした際には
「/usr/lib/qt4/bin」ディレクトリ下に、
「qmake-qt4」というファイルがあったのですが、

同じく、
CentOS5系にqt4をインストールした際は、
「/usr/lib/qt4/bin」下には、
「qmake-qt4」というファイルは
存在していなかった次第です。

このFedoraにインストールした際に存在する、
「qmake-qt4」に代替するものというのは、
CentOSに「qt4」をインストールした場合の
どのファイルに該当するか?って分かりますでしょうか?

CentOSでいう「/usr/lib/qt4/bin」ディレクトリ下にある
ファイルの一覧です
============
assistant
designer
linguist
lrelease
lupdate
moc
pixeltool
qdbus
qdbuscpp2xml
qdbusxml2cpp
qmake
qt3to4
qtconfig
rcc
uic
uic3
============

「これ以上は言う事なし」の場合は、
放置していただいて結構です。
もし、何か最後の一言ありましたら、
些細な事でも言及していただけると嬉しいです。

細かなアドバイスありがとうございました。
参考になりました。

補足日時:2009/03/04 20:51
    • good
    • 0

qt3とqt4の混在環境のときは、環境変数のQTDIR,QT4DIRを利用しています。


うちの環境では、
export QTDIR=/usr/lib/qt <= qt3のインストール位置
export QT4DIR=/usr/lib/qt4 <= qt4のインストール位置
とするだけでもそのままコンパイルが通るものが多いです。

これだけではダメな場合は、下記のリンク先のように
PATHとQTDIRをqt4のもので上書きしてやると良いでしょう。

2. Compiling Qt4 Applications
http://wiki.zenwalk.org/index.php?title=HOWTO_Co …

参考URL:http://wiki.zenwalk.org/index.php?title=HOWTO_Co …

この回答への補足

bcoffeeさん!

ご回答ありがとうございます。
何か教えていただいた内容が改善策にマッチしている気がします。

>うちの環境では、
>export QTDIR=/usr/lib/qt <= qt3のインストール位置
>export QT4DIR=/usr/lib/qt4 <= qt4のインストール位置
>とするだけでもそのままコンパイルが通るものが多いです。

で、初歩的な事で恐縮ですが、
上記内容に関して、念のため詳しく教えて欲し事があります。

教えていただいた内容は、
任意のディレクトリで、
一時的にパスを設定するときの要領で
以下のとおり、打ち込めばいいだけな感じですが?
合っておりますでしょか?
それとも、どこかのファイルに書き込む感じですしょうか?

# export QTDIR=qt3のディレクト
# export QT4DIR=qt4のディレクト

何度もお手前をかけさせますが、
宜しくお願い致します。

補足日時:2009/03/04 17:05
    • good
    • 0

すでに別のところでPATHの定義がされているので(${PATH}の中にqt3が含まれていると思われる)、このようになってしまうんでしょう


大元を直すか、.bashrcで、
PATH=/usr/lib/qt4/bin/qmake:${PATH}
としたらどうなりますか?

この回答への補足

774dangerさん!

確かに
PATH=/usr/lib/qt4/bin/qmake:${PATH}

を行う事で、パスを確認すると、
「qt4」が一番初めに出てくるようになりました!
ありがとうございました。

ただ、これでもコンパイルが進まなかったので、
もう少し、別の事もためしてみたいと思います。

ご親切にありがとうございました!

補足日時:2009/03/04 16:54
    • good
    • 0

"追加したいパス"のパスの順番を、qt3がインストールされているディレクトリよりも前にqt4のディレクトリを先に書けばいいです


使っているシェルが何かわかりませんが、bashだとしたらホームディレクトリの.bashrcあたりに設定が書いてありませんか?

この回答への補足

シェルはbashを使用しています。
最初は以下のとおりでした。

# echo -e ${PATH//:/'\n'}
/usr/local/sbin
/usr/sbin
/sbin
/usr/kerberos/sbin
/usr/lib/qt-3.3/bin
/usr/kerberos/bin
/usr/local/bin
/bin
/usr/bin
/usr/java/jdk1.6.0_10/bin

で、次に、アドバイスをいただきましたとおり、
.bashrcを覗いてみたら、
何もパスらしき記述が書かれていなかったので、
自ら、一番下の行に
「qt4」が「qt3」の前にかかれる事を意識しながら、
以下のように追加しました。

PATH=${PATH}:/usr/lib/qt4/bin/qmake:/usr/lib/qt-3.3/bin

その後、パスを確認すると、
以下のとおり、追加自体はされていたのですが、
やはり、元々書かれていた「/usr/lib/qt-3.3/bin」は
消えていない状態でした。

# echo -e ${PATH//:/'\n'}
/usr/local/sbin
/usr/sbin
/sbin
/usr/kerberos/sbin
/usr/lib/qt-3.3/bin ←元々書かれている
/usr/kerberos/bin
/usr/local/bin
/bin
/usr/bin
/usr/java/jdk1.6.0_10/bin
/usr/lib/qt4/bin/qmake ←追加
/usr/lib/qt-3.3/bin ←追加

その後、念のため、
「vi /etc/profile」にも、
同様に「qt4」→「qt3」の順になるように注意しながら、
パスを追加していみたのですが、
同じ結果となってしまいました次第です。

補足日時:2009/03/04 13:47
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!