マイコンピュータのすべてのユーザーがアクセスできるプログラムXがあります。だからホームフォルダに入れることはできません。だから私は聞いた/usr/local
正しい場所ですそしてそれを試しました。
ただし、そのフォルダのフォルダ権限/usr/local/bin/
はですdrwxr-xr-x
。調べるはい755
。だから私はprograms
usingというフォルダを作成し、sudo mkdir programs
その権限をusingを使用して変更します。sudo chmod 775 programs
ホームフォルダ内のフォルダに権限があり、775
これが付与するのが正しい権限だと思うからです。
cd /usr/local/programs/
これで、プログラムXをデフォルトフォルダからこのprograms
フォルダにコピーしようとしましたが、mv ~/X/ .
エラーが発生しますmv: cannot move '/home/nav/X/' to './X': Permission denied
。
/usr/local/programs
私はこれが本当かどうかを再確認し、775
実際にそうしました。今はその時を使っX
てコピーできると思いましたが、programs
sudo
コマンドを使用した変換すべてのファイルを入れましたが、programs
全体775
のプロセスに何か問題があるような気がします。
それでは、どのようにインストールし、X
すべてのユーザーがアクセスできるようにしますか?これをやろうとする理由は、一度入れたら、/usr/local/programs/
以下のスクリプトを作成してアプリケーションメニューからアクセスできるようにしたいからです。
スクリプト:
スクリプトの生成:
sudo -H gedit /usr/share/applications/X.desktop
このファイルに以下を貼り付けます。
[Desktop Entry]
Version=1.0
Name=X
Comment=Program X
GenericName=IDE
Keywords=SomeProgram, X
Exec=/usr/local/programs/X/xyz %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/usr/local/programs/X/icons/icon.xpm
Categories=GNOME;GTK;
StartupNotify=true
答え1
/usr/local/bin
プログラムを配置するための正しいディレクトリ。だから:
sudo cp ~/X/xyz /usr/local/bin
そして動かさないで移動すると権限も移動するため、コピー中にプログラムにデフォルトの権限が付与されます/usr/local/bin
。
また、/usr/local/bin
すでにパスにアイコンを配置している場合は、/usr/share/pixmaps
デスクトップファイルは次のようになります。
[Desktop Entry]
Version=1.0
Name=xyz
Comment=Program xyz
GenericName=IDE
Keywords=SomeProgram, xyz
Exec=xyz %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=icon.xpm
Categories=GNOME;GTK;Development;IDE
StartupNotify=true
ホームディレクトリにアイコンファイルがあるパスxyz
にあるプログラムの場合。X
icon.xpm
公式カテゴリ一覧ねえ
答え2
マイコンピュータのすべてのユーザーがアクセスできるプログラムXがあります。だからホームフォルダに入れることはできません。それでぴったりの場所という言葉を聞いて
/usr/local
一度試してみました。
はい、/usr/local
システム管理者はコンピュータのすべてのユーザーが利用できる適切な場所にプログラムをインストールできます。
ただし、/usr/local
通常はサブディレクトリに分割され、バイナリ、ライブラリ、その他のデータディレクトリなどのサブディレクトリにプログラムをインストールする必要がありますbin
。lib
share
/usr/local/bin/X
/usr/local/lib/libX.so.1
share
通常、ビルドしたLinuxプログラムは/usr/local
このコマンドを使用してmake install
インストールできます。より正確には、sudo make install
ルートだけがこれらのサブディレクトリに書き込むことができるからです。 (少なくともこれはソースコードで構築されたソフトウェアのためのかなり一般的な規則です。)
/opt
また、各プログラムを独自のサブディレクトリに保持する階層もあるため、ディレクトリには独自のサブディレクトリなどが/opt/X-1.0/
あります。たぶんこれはあなたが描いたものに近いです。bin
lib
share
ちなみに、そのフォルダのフォルダ権限が755
/usr/local/bin/
とdrwxr-xr-x
確認されました。
権限が正しいです。
実際に経験している問題は権限とは関係ありませんが、唯一のルート書くことができる/usr/local
、それはまさにそれです。
ソースインストーラの使用に関する上記のポイントを参照してくださいsudo make install
(ソースからビルドし、ソースがこの機能をサポートするMakefileを使用していると仮定します)。簡単に言えば、sudo
期待どおりにrootとしてこれらのファイルを作成し、rootの所有権を持つ必要があります。
そのため、sudo mkdirプログラムを使用してプログラムというフォルダを作成し、sudo chmod 775プログラムを使用してその権限を変更しました。なぜなら、ホームフォルダのフォルダに権限775があって正しい権限だと思ったからです。
しないでください。/usr/local
実際にはこのように使用してはいけません。 (だからといって、人々が同様の方法で乱用しないという意味ではありませんが、正しく使用する方法を学ぶか、より適切な場所を見つけることをお勧めします。)
CDに移動し、
/usr/local/programs/
次のコマンドを使用してプログラムXをホームフォルダからプログラムフォルダにコピーしようとしましたが、mv ~/X/ .
エラーが発生しました。mv: cannot move '/home/nav/X/' to './X': Permission denied.
問題はルートが必要だということです。使用するとsudo
役に立ちますが、以下のファイルはX/
依然としてユーザー所有です。 (これを行うと、システムの他のユーザーがそのファイルを使用することを必ずしも防ぐことはできませんが、通常、これらのファイルをルートが所有することを/usr/local
望みます。)
権限に問題はありません。通常、ルートの場合は0755が正しいです。必要なのは、ユーザーがこれらのバイナリを実行できるように、「他の」ビットを読み取って実行することだけです。
前述のように、プログラムを独自のサブディレクトリに保存するには、その場所が/opt
より適切である可能性があります。しかし、この場合でも、一般的にこれらのファイルのルート所有権を持ちたいです。また、/opt
人気が減少するにつれて、これはやや珍しい選択になる可能性があります。
これを正しく行う方法
残念ながら、Linuxでソフトウェアを正しくインストールすることは、インストールするソフトウェアによって大きく異なります。インストール方法は通常、ビルド方法と使用するプログラミング言語によって異なります。
私は以下をお勧めします:
まず、Linuxディストリビューションにそのソフトウェアパッケージが付属していることを確認してください。その場合は、該当するパッケージマネージャ(など)を使用して
apt-get
パッケージyum
をdnf
インストールしてください。デフォルトのリポジトリにパッケージがない場合は、パッケージをインポートできる拡張リポジトリがあることを確認してください。ウェブサイトからこのソフトウェアをダウンロードした場合は、バイナリを含むタールボール()ではなく、配布用のバイナリパッケージ(またはなど
.deb
)で提供されていることを確認してください。.rpm
.tar
パッケージのインストールはシステムに正しく統合されているため、常に好まれます。 Linuxディストリビューションのパッケージ(利用可能でディストリビューションによって提供されるバージョンを受け入れることができると仮定)は、システムで正しく機能する可能性が高くなります。
ソースからビルドした場合にインストールしてみてください
/usr/local
。これは通常、autoconf/automake を使用するパッケージの場合のデフォルト値です。./configure.sh
ビルドの開始時に実行したいスクリプトがある場合は、通常パラメータを渡すことで--prefix
カスタマイズ./configure.sh --prefix=/usr/local
できます。ソフトウェアをビルドしたら、sudo
以下を使用してインストールしますsudo make install
。ソフトウェアが他のビルドシステムおよび/またはプログラミング言語を使用している場合は、同じことを行うために同等の指示があることを確認してください。ソースパッケージには通常、
INSTALL
ソースツリーの上部に大文字の名前を付けたファイルが用意されており、そのファイルを構築/インストールして使用を開始する方法に関するガイドラインが含まれています。README
お読みください。
残念ながら、そこには多くの変更があります。いくつかの標準がありますが、実際には多すぎます。 Linux/Unixでソフトウェアを構築/インストールするには、混乱したエラーメッセージを解読し、指示を見つけて読んで、期待どおりに動作しているか確認するなど試行錯誤が伴うことが多いです。してください...定期的に始めると作業が簡単になりますが、解決すべき珍しい点は常にあります。
そのため、ディストリビューションのパッケージを使用する方がはるかに優れています。少なくとも標準があり、パッケージをインストールして管理するための標準ツールセットがあり、ビルドの詳細はすべて処理されます。
- ウェブサイトでバイナリタールボールを入手した場合は、タールボールを解凍して使用する方法の手順を確認してください。推測することができますが、間違いを犯すことも、少なくともきれいではないかもしれません。ルートとして直接tarballを解凍することを検討してください(使用
sudo
)。 tarball にプログラム名を付けたサブディレクトリが付属している場合は、そのサブディレクトリをベース/opt
ディレクトリとして使用することを検討してください。ユーザーがコマンドラインから呼び出すバイナリの場所の1つにシンボリックリンクを作成することを検討してください$PATH
(大丈夫です/usr/local/bin
が、/opt/bin
すでにファイルにある場合にのみ可能です)。$PATH
事前にビルドされたバイナリセットを解凍するのが最も難しいことがよくあります。このようなことがある場合は、パッケージを正しく開く方法についての指示を見つけてください。
この情報があなたが持っている特定のパッケージを管理する方法を決定するのに役立つことを願っています!