Ubuntu nie może znaleźć pliku wykonywalnego w ~ / .local / bin

12
after installation with

pip3 install --user steem-piston
you will get a new executable piston installed in ~/.local/bin

Zainstalowałem narzędzie przy użyciu instalacji pip, ale nie mogę znaleźć pliku wykonywalnego.

Nie jestem pewien, czy rozumiem, czym jest ten katalog: ~ / .local / bin.

Czy to tylko root / local / bin?

TabulaSmaragdina
źródło

Odpowiedzi:

11

~/jest skrótem powłoki dla twojego folderu domowego, zwykle /home/USERNAME/tam, gdzie USERNAMEjest nazwa użytkownika. To jest tak samo jak$HOME

~/.local/binto podfolder o nazwie binpodfolder o nazwie .localw folderze domowym.

Możesz użyć

~/.local/bin/pip3

aby wywołać nowy pip3plik wykonywalny. Może być łatwiej dodać ~/.local/bindo $PATHzmiennej środowiskowej, zobacz Jak dodać katalog do mojej ścieżki? więc nie musisz ~/.local/bin/cały czas pisać .

Upewnij się, że dodałeś go przed starą wartością $PATH, na przykład

PATH="$HOME/.local/bin/:$PATH"
Florian Diesch
źródło
Dziękuję za Twój post. Niestety nie widzę podfolderu w folderze domowym (czy to ukryty plik?). A kiedy wpisuję to polecenie w terminalu, otrzymuję: bash: /home/myname/.local/bin/pip3: Brak takiego pliku lub katalogu
TabulaSmaragdina
Tak, jeśli nazwa pliku lub folderu zaczyna się od kropki, domyślnie jest ukryta. Można użyć ls -a, aby lswyświetlić ukryte pliki i foldery, too.
Florian Diesch
@TabulaSmaragdina Dziwne, że nie znaleziono pliku. Spróbuj uruchomić ls -a ~/.local/bin. Jeśli wynik jest długi, edytuj go w swoim pytaniu.
wjandrea
1
Nie masz na myśli ~/.local/bin/piston?
terdon
Uwaga: ~/.local/bin/jest już w $ PATH na nowoczesnym Ubuntu.
Aaron Franke
7

~/.local/binzostał dodany do PATH w Ubuntu 16.10 i przeniesiony do wersji 16.04. Zobacz https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562

Jeśli używasz Ubuntu> = 16.04 ze wszystkimi aktualizacjami, powinno już być dobrze. Jeśli nie, możesz dodać go ręcznie:

W przypadku pojedynczego użytkownika edytuj plik ~/.profilei dodaj na jego końcu:

PATH="$HOME/.local/bin:$PATH"

Jeśli chcesz, aby każdy nowo utworzony użytkownik miał taką możliwość, możesz dodać tę samą linię na końcu /etc/skel/.profile

Mossroy
źródło
0

Właśnie to robiłem dzisiaj, wydaje się, że nie ma jasnej dokumentacji dla ludzi, którzy chcą zachować kontrolę nad tym, co jest zainstalowane i gdzie.

Przypuśćmy, że uruchomiłeś pip3, cokolwiek instaluje, domyślnie umieszczasz pliki w ~ / .local, jak wiesz. Zwyczajowo w Uniksie dzieli się typy plików, umieszczając te „podatne” na ~ / .local / bin.

Wpisz tekst w terminalu, aby zobaczyć swoją ścieżkę:

$ echo $PATH

Sprawdź, czy masz zainstalowane pliki Pythona w ~ / .local

$ ls -la ~/.local/bin

To potwierdza, że ​​pliki wykonywalne są dostępne dla mnie. Jeśli te uprawnienia do plików pokazują „x”, są one wykonywalne.

Teraz dodaj ten katalog do ścieżki w terminalu

$ export PATH=~/.local/bin:$PATH

Sprawdź ponownie swoją ścieżkę, aby zobaczyć zmianę. Pamiętaj, że jest to ustawienie tymczasowe tylko dla tej sesji terminala. Nie dotyczy to innych terminali jednocześnie lub w przyszłości. To dobre miejsce do testowania rzeczy.

Następnie każdy program wykonywalny w ~ / .local / bin powinien zostać uruchomiony, jeśli wpiszesz jego nazwę w wierszu poleceń. Nie ma na przykład potrzeby uruchamiania „~ / .local / bin / jupyter”. Po prostu wpisz „jupyter”. „./”, który czasem widzisz, nie jest potrzebny, wtedy uruchamiasz program z katalogu roboczego, który nie znajduje się na ścieżce.

Jeśli później zdecydujesz, że chcesz uczynić to stałym, aby ~ / .local / bin zawsze znajdował się w twojej ŚCIEŻCE, możesz to zrobić, edytując niektóre pliki konfiguracyjne środowiska. W zależności od konfiguracji, na przykład w moim katalogu domowym „.bashrc” ostatnim wierszem jest „eksport ŚCIEŻKA = $ ŚCIEŻKA: $ DOM / bin”. Więc mógłbym umieścić $ HOME / local / bin z przodu tego. Uwaga: Napisałem $ HOME, a nie „~”. Potem za każdym razem, gdy używam powłoki BASH, PATH będzie naprawiane. Jeśli możesz użyć innych powłok, myślę, że właściwą rzeczą jest edycja pliku ~ / .profile. Myślę, że wszystkie powłoki Ubuntu będą pobierać ten plik.

W moim przypadku zainstalowałem kilka programów z pip3, takich jak jupyter. Jednym ze sposobów, aby upewnić się, gdzie został zainstalowany, jest uruchomienie

$ pip3 list

pokazuje wszystkie dostępne pakiety, nie tylko te zainstalowane przez pip3.

$ pip3 show jupyter

W moim przypadku na przykład:

---
Metadata-Version: 2.0
Name: jupyter
Version: 1.0.0
Summary: Jupyter metapackage. Install all the Jupyter components in one go.
Home-page: http://jupyter.org
Author: Jupyter Development Team
Author-email: jupyter@googlegroups.org
Installer: pip
License: BSD
Location: /home/pauljohn/.local/lib/python3.5/site-packages
Requires: nbconvert, ipykernel, ipywidgets, notebook, jupyter-console, qtconsole
Classifiers:
  Intended Audience :: Developers
  Intended Audience :: System Administrators
  Intended Audience :: Science/Research
  License :: OSI Approved :: BSD License
  Programming Language :: Python
  Programming Language :: Python :: 2
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3
  Programming Language :: Python :: 3.3
  Programming Language :: Python :: 3.4

Nie chcę, żeby to zabrzmiało jak płomień, ale może wydawać się atakiem. Ostrzegam was, abyście nie chętnie stosowali się do rad, które niektórzy tu zaoferują, aby uruchomić „sudo pip3 xxx”. Ogólnie wolisz uruchamiać instalacje root tylko z pakietami Debiana, a nie z pip3. Jeśli biegniesz bez sudo, ograniczasz niebezpieczeństwo do konta użytkownika. Jeśli goofujesz podczas uruchamiania skryptu jako root, możesz rozproszyć pliki po całym dysku twardym i pożałować. Zwłaszcza jeśli inne osoby logują się i korzystają z tego komputera, unikaj robienia czegokolwiek jako root, chyba że masz pewność.

Warto również zauważyć, że pip3 domyślnie instaluje się w ~ / .local, ale nie jest to konieczne. Przeczytaj „man pip3”, poszukaj „-t” (--target). Możesz określić katalog instalacyjny. Myślę, że to dobrze, ponieważ możesz ograniczyć wszelkie uszkodzenia do jednego innego katalogu i usunąć go, kiedy chcesz. ~ / .local może zawierać inne cenne rzeczy zainstalowane przez inne programy i wolisz ich nie zatrzeć. I tak myślę o ~ / .local jako o miejscu bardziej nastawionym niż programowym.

pauljohn32
źródło