Вопрос или проблема
Используя apt list --installed
, я получил список установленных пакетов. У меня много времени, и я хотел просмотреть список и увидеть, что к чему. Все ли они исполняемые? Я вижу, что accountsservice первый в списке, но, насколько я вижу, он не исполняемый. Он просто возвращает команда не найдена
. Третий в списке — adduser, и он исполняемый. Я знаю, что это тоже отдельная команда.
Являются ли некоторые из них системными приложениями, которые могут вызываться только ОС и не могут исполняться самостоятельно?
Пакеты не являются непосредственно исполняемыми.
Пакеты содержат группы файлов. Некоторые из этих файлов являются исполняемыми. Некоторые — нет.
Пример: давайте посмотрим на пакет hello
.
$ dpkg -L hello
/usr/bin/hello
/usr/share/doc/hello/NEWS.gz
/usr/share/doc/hello/changelog.Debian.gz
/usr/share/doc/hello/copyright
/usr/share/info/hello.info.gz
/usr/share/man/man1/hello.1.gz
В этом примере один файл /usr/bin/hello
в пакете является исполняемым. Остальные пять файлов в пакете не являются исполняемыми.
Исполняемый hello
имеет то же имя, что и пакет hello
. Эта схожесть не является обязательной. Исполняемые файлы и пакеты иногда имеют разные имена.
Исполнение зависит от типа пакета и его системы:
В Linux или macOS: .so (разделяемые объекты) или .dylib (динамические библиотеки), которые не являются непосредственно исполняемыми, но предоставляют код для других программ.
В Windows: .dll (библиотеки динамической компоновки) и .exe (исполняемые файлы), но не все .exe файлы предназначены для прямого выполнения.
Ответ или решение
Установленные пакеты: являются ли они исполняемыми?
Когда вы используете команду apt list --installed
, вы получаете список всех установленных пакетов в вашей системе. Важно понять, что сами пакеты не являются исполняемыми. Под установленным пакетом подразумевается группа файлов, которая может включать исполняемые файлы, библиотеки, конфигурационные файлы и документацию.
Разделение файлов в пакетах
Рассмотрим вышеупомянутый пакет hello
для более подробного объяснения:
$ dpkg -L hello
/usr/bin/hello
/usr/share/doc/hello/NEWS.gz
/usr/share/doc/hello/changelog.Debian.gz
/usr/share/doc/hello/copyright
/usr/share/info/hello.info.gz
/usr/share/man/man1/hello.1.gz
Из данного вывода видно, что только один файл, находящийся в каталоге /usr/bin
, является исполняемым (/usr/bin/hello
). Остальные файлы содержат документацию и информацию, которая не может быть исполнена непосредственно.
Исполняемость и вызов
Контекст выполнения пакетов также зависит от их назначения и типа. В системах Linux и macOS существуют различные форматы файлов:
- .so (общие библиотеки) и .dylib (динамические библиотеки) не являются напрямую исполняемыми, но предоставляют код для использования другими исполняемыми программами.
В Windows аналогично, существуют:
- .dll (динамические библиотеки) и .exe (исполняемые файлы). Не все .exe файлы предназначены для непосредственного выполнения; некоторые из них могут быть созданы для запуска определённых приложений или сервисов.
Пакеты как система
Некоторые пакеты, такие как accountsservice
, не предназначены для прямого запуска пользователями. Это системные приложения, которые взаимодействуют с другими компонентами операционной системы, и обычно они запускаются автоматически в ответ на какие-либо запросы. Однако, это не значит, что они не полезны; это часть экосистемы, позволяющая приложениям работать корректно, обеспечивая функциональность на более высоком уровне.
Заключение
В заключение, можно сказать, что не все установленные пакеты в вашей системе являются исполняемыми. Они могут содержать как исполняемые файлы, так и другие типы файлов. Если вы хотите узнать о конкретном пакете, всегда можно использовать dpkg -L <package_name>
для просмотра всех файлов, которые он включает. Это поможет вам прояснить, какие из них могут быть исполняемыми и как они могут быть использованы в контексте вашей системы.