この質問は、Googleで簡単に見つけられるいくつかの質問やその他の場所で適切に対処されているようですが、以下で説明する理由により、解決策は満足のいくものではありません。しかし、完了のために、いくつかの関連リンクを含めました。
/ubuntu/138284/how-to-downgrade-a-package-via-apt-get /ubuntu/428772/how-to-install-specific-version-of -some-package / 428778 /ubuntu/26498/choose-gcc-and-g-version ...
その他。
ただし、この質問は、Galiの非常に特定のバージョンをKali Linuxにインストールすることに関するものです。これは、特定のパッケージとしては容易に入手できないようです。特に、問題はバージョン6.3.0のインストール方法に関するものです。特定のプログラムをコンパイルするにはこのバージョンが必要なので、https://www.reddit.com/r/Monero/comments/6d0ah8/xmrig_miner_new_release/
(おまけの質問として、別のバージョンのGCCを使用せずにこの特定の問題を修正するより健全な方法がある場合は、お気軽に回答してください。ただし、この質問は一般的なものであり、関係なくそれを行う方法を知りたいです上記のプログラムを正しくリンクさせる方法)
gccなどのパッケージのインストールに使用できるバージョンは、次のようにして決定できます。
apt-cache showpkg gcc
使用可能なバージョンを「バージョン:」の下に一覧表示します。例:
4:7.2.0-1d1
4:4.9.2-2
インストールは発行と同じくらい簡単です
apt-get install gcc:4:4.9.2-2
これにより、古いバージョン4:4.9.2-2がインストールされます。これは、7.2.0-1d1のインストールが存在する場合、それを(私は信じて)上書きするだけです。
バージョン4:4.9.2-2を使用できるようにするdeb
http://old.kali.org/kali sana main non-free contrib
には、/etc/apt/sources.list
ファイルに追加して
を実行する必要がありましたapt-get update
。
ただし、必要なバージョンがリストにない場合はどうなりますか?
私はさまざまなソース、たとえばhttp://snapshot.debian.org/や、Google検索からのその他のさまざまな質問やウェブサイトで見つけたものなどを試してい ます。
それらのほとんどは、例えば次のように、私に無視またはエラーを与えます
Ign:3 http://snapshot.debian.org/archive/debian/20091004T111800Z lenny InRelease
これが機能する場合でも、特定のバージョンをインストールすることは非常に悪いアプローチのようです。任意のソースを追加すると、特定のバージョンが必要にならない場合があるためです。
snapshot.debian.orgでgccを検索すると、非常に古いバージョンのみが表示されます。http://snapshot.debian.org/package/gcc/
私は最終的にこのアプローチに不満を抱き、ソースtarballからGCC 6.3.0をコンパイルしました。コンパイルは成功しましたが、それをインストールする方法に直面しました。私は、実行中には慎重だmake install
、私はそれが改ざんされます恐れるようapt
とdpkg
、おそらくシステムを破ります。
代わりに、ビルドディレクトリから直接実行しようとしました。PATHの最初のエントリとしてビルドディレクトリを追加しようとしましたが、機能しませんでした。次に、名前を変更/usr/bin/gcc
して/usr/bin/gcc
、gcc-6.3.0実行可能ファイルが存在する場所へのシンボリックリンクを作成しようとしました。これにより、次の問題が発生します。
cc: error trying to exec 'cc1': execvp: No such file or directory, which
これは私のPATHの別のエントリで修正されました。
次に、このエラーが発生します:
/usr/include/stdio.h:34:21: fatal error: stddef.h: No such file or directory
私が想定しているのは、のエントリがないためです/usr/lib/gcc/x86_64-linux-gnu
。6から6.3.0のシンボリックリンクを作成しようとしましたが、これでは不十分でした。私も実際にすべてをコピーしようとしましたがcp -R
、同じ結果が得られました。
これは64ビットプログラムである必要がありますが、についても同じように考えました
/usr/lib/gcc/i686-linux-gnu
。
strace
ファイルのオープン、ログファイルの読み取り、ソースの読み取りを試みた場所を確認するために始めることができると確信しています。最終的には、十分に考え出されていないソリューションをハッキングする方法を理解できると思います。しかし、誰かが私にこれを正しい方法で行う方法を教えてくれるといいのですが。