Debian'da varsayılan olmayan golang paketi ile yüklenen Go kullanımı


1

Go 1.8 kurmaya çalışıyorum.

Golang-1.7'den başka bir şeyin uygun paketi çalışmıyor. Golang-1.7 düzgün kuruluyor, golang-1.8 çalışmıyor. Depodaki paket yanlış mı / eksik mi?

Debian golang-1.8 için iddia ediyor "Bu paket, kurulduğunda tam bir Go geliştirme ortamının kurulu olduğunu garanti eden bir meta pakettir." https://packages.debian.org/stretch/golang-1.8 Ama bu kesinlikle doğru değil.

# apt install golang-1.8 golang-1.8-go
Reading package lists... Done
Building dependency tree
Reading state information... Done
golang-1.8 is already the newest version (1.8.1-1).
golang-1.8-go is already the newest version (1.8.1-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
# go
bash: /usr/bin/go: No such file or directory
# whereis go
go:
# uname -a
Linux linux 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02) x86_64 GNU/Linux
# cat /etc/debian_version 
9.4

Yanıtlar:


2

Arka fon

«Garantiler… yüklü» sadece bağlıdır Go dev'i sağlayan bir dizi pakette. env.

Senin gibi görebilmek , Bu paket diğer üç pakete bağlıdır. golang-1.8-doc, golang-1.8-go, golang-1.8-src - yüklediğinizde golang-1.8, bu üçü de kurulacak.

Karşılaştığınız sorun, itiraf etmeliyim ki, gerçekten kafa karıştırıcı ama kolayca açıklanabilir.

Eğer bakarsanız tarafından kurulan paketlerin listesi golang-1.8-go, göreceksiniz ki go aracı olarak yüklenir /usr/lib/go-1.8/bin/go, ve dizin /usr/lib/go-1.8/bin listelenmemiş varsayılan PATH ortam değişkeni /etc/profile ).

Bu şekilde yapılmasının nedeni iki yönlüdür:

  • Birkaç grup olabilir golang-X.Y* aynı paketler Aynı zamanda Debian süiti; söylemek gerekirse, Stretch 1,7 ve 1,8'e sahiptir.

    Birlikte kurulabilir olduklarını anlamak çok önemlidir. test edilen bir projenin nasıl test edildiğini test etmek için yararlı olabilir karşısında X.Y ile çalışacak X.Y+N.

  • Debian özel "en genel" bir Go paketi sunar belirli bir bağlıdır golang-X.Y kabul edildi paketi Parcicular Debian sürümünde "standart" olmak.

    Streçte, bu golang-go, ve gördüğünüz gibi, sürümünde "1.7" vardır ve golang-1.7-go.

    Bu paket çalıştırılabilir ikiliklerin çalışmasını sağlar belirli bir varsayılan tarafından sağlanan golang-X.Y-go paket mevcuttur "standart yer" içinde - altında /usr/bin ( kendin için gör ).

Bu konuda ne yapmalı?

Birkaç olasılık:

  • Sadece çağrı /usr/lib/go-1.8/bin/go tam yoluyla.

    go aracı nerede olduğunu bilir " GOROOT öyle bulacak ki Sürümüne özgü paketler gayet iyi.

  • Bu dizini yol değişkeninize göre ayarlayın; şöyle bir şey söyle

     export PATH="/usr/lib/go-1.8/bin:$PATH"
    

    senin içine ~/.bashrc senaryo ve bir sonraki arama go yeni yerde bulacaksınız.

  • Kaynağını tut golang-go paket, düzelt markaları golang-1.8-go varsayılan paketi oluşturun ve kurun.

    (Henüz bu tarafa gitmenizi tavsiye etmem.)

Bu yardımcı olur umarım.


Açıklayan bir başka bıçak

Stretch, üç paketten oluşan iki pakete sahiptir: golang-1.7-* ve golang-1.8-*.

Her birinde, paket golang-1.N-go paket yükler go altında ikili /usr/lib/go-1.N/bin. Hiçbiri bir sembolik bağlantı kurmuyor altında /usr/bin.

Bunun nedeni, bu paket paketlerini yapmaktır. ko-kurulabilir, Böylece Go kodunuzu kurulu sürümlerin herhangi biriyle derleyebilirsiniz.

Şimdi var bir diğeri, bağımsız, paket, kodlamayan Go sürümüne kendi adını yazdı. Adı golang-gove yalnızca golang-1.7-go nerede 1.7 o varsayılan Stretch için Go çalışma zamanı sürümü.

Başka bir sürümde, golang-go başka birine bağlı olacak golang-X.Y-go paketi.

Bu bu sağlayan paket /usr/bin/go e işaret ederek /usr/lib/go-1.7/bin/go.

Öyleyse (ve sadece) golang-go yüklü, olacak go altında mevcut ikili /usr/binve bu Go olacak Streç olarak 1.7.

Ve hayır, bir şekilde zorlamak mümkün değil golang-go işaret etmek go yüklü olandan golang-1.8-go paket, ve ne yok "dpkg alternatifleri" ile tercih edilen bir Go sürümü seçmenin bir yolu mekanizması.

Bu yaklaşımın "nedenini" benim üstlenmem iyi bilinen bir sürüme sahip olmaktır. arasında go herhangi bir Debian sürümünde. Bu sözde için gerekli Go ile yazılmış yazılımların Debian paketlerini oluşturmak. Aksi takdirde, paket inşaat makinelerinin icat etmesi gerekecektir. Go varsayılan sürümünü bulmak için bazı hileler; şu an itibariyle, kaynak paketleri Sadece bağlı golang-go ve bir gün ara.


Cevabın için teşekkürler. Şimdi programa nasıl erişeceğimi biliyorum ama bunun neden olduğu konusunda kafam hala karıştı, buna hiç sahip olmadım. Evet golang-1.8, bahsettiğiniz tüm bölümleri yükler, ancak daha sonra / usr / bin / go - & gt; /usr/lib/go-1.8/bin/go?
user6329530

1
Bunu açıkladım. Güya ben bunu düzgün bir şekilde iletemedim. Başka bir bıçak alalım. Cevabım güncellendi.
kostix
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.